Setup Cliente instantâneo do Oracle no CentOS / RHEL Linux - para PHP e Perl

3

Estou tentando configurar uma VM do CentOS 5.5 / 64 bit para acessar um banco de dados Oracle remoto com scripts PHP e Perl. (Eu não tenho experiência com Oracle, apenas programei e administrei alguns PostgreSQl e MySQL antes.)

Eu instalei os seguintes rpms do Oracle Instant Client:

oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm

E adicionamos as seguintes variáveis ao meu .bash_profile:

export TNS_ADMIN=/etc
export ORACLE_HOME=/usr/lib/oracle/11.2
export LD_LIBRARY_PATH=$ORACLE_HOME/client64/lib
PATH=$PATH:$HOME/bin:/sbin:$ORACLE_HOME/client64/bin

No arquivo /etc/tnsnames.ora , escrevi as informações recebidas do colega no site remoto que está executando o banco de dados Oracle:

some_string =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = my_address)(PORT = my_port))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = PDTT)
    )
  )

A parte interessante é que eu posso conectar-me a CLI agora executando

sqlplus 'my_user/my_password@//my_address:my_port/PDTT'

e, em seguida, pode ver algumas tabelas ao emitir:

select table_name from user_tables;

E também executei sudo pecl install oci8 com êxito, adicionei o arquivo /etc/php.d/oci8.ini contendo:

extension=oci8.so

e pode ver a seguinte saída phpinfo ()

Agora,minhasperguntaseproblemas,porfavor:

1)ComodevoconfiguraravariávelORACLE_SIDecomochamarosqlplusdepoisdeconfigurada?Posso/devousaroORACLE_SIDdosscriptsPHPePerl?

2)Eucorrosudo-Eperl-MCPAN-eshellefuncionabemaoinstalaroutrosmódulosPerl,maspara"install DBD :: Oracle" ele falha com:

  CPAN.pm: Going to build T/TI/TIMB/DBD-Oracle-1.26.tar.gz

Using DBI 1.52 (for perl 5.008008 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/

Configuring DBD::Oracle for perl 5.008008 on linux (x86_64-linux-thread-multi)

Remember to actually *READ* the README file! Especially if you have any problems.

  The ORACLE_HOME environment variable value (/usr/lib/oracle/11.2) is not valid.
  It must be set to hold the path to an Oracle installation directory
  on this machine (or a machine with a compatible architecture).
  For an Instant Client install, the directory should include an sdk subdirectory.
  See the appropriate README file for your OS for more information.
  ABORTED!
Running make test
  Make had some problems, maybe interrupted? Won't test
Running make install
  Make had some problems, maybe interrupted? Won't install

Ele menciona o diretório "sdk" acima, mas o rpm não tinha esse diretório:

# rpm -ql oracle-instantclient11.2-devel | grep -i sdk
#

Agradecemos sua sugestão e também dicas úteis para instalação e uso do Oracle. Há muitas informações da Oracle por aí, mas muitas vezes pressupõe que o Oracle esteja instalado na mesma máquina.

    
por Alexander Farber 06.12.2010 / 14:55

3 respostas

1

Para a questão 1, para acessar um banco de dados remoto, o ORACLE_SID é irrelevante. ORACLE_SID é útil apenas quando o cliente e o servidor estão em execução no mesmo host. Dado o seu arquivo tnsnames.ora, você deve ser capaz de se conectar ao banco de dados remoto usando:

sqlplus my_user@some_string

você também pode usar

sqlplus my_user/my_password@some_string

No entanto, eu geralmente evito fornecer senhas na linha de comando - usuários snoopy e o comando ps pode, às vezes, distribuí-las. Deixe o banco de dados solicitar a senha. Na verdade, acabei de adquirir o hábito de emitir o comando sqlplus assim:

sqlplus /nolog

e, em seguida, na questão do prompt

connect my_user/my_password@some_string

e ninguém vê nem mesmo o usuário ou banco de dados ao qual você se conecta, e eu nunca preciso pensar sobre isso.

Quanto à questão # 2, não posso ajudá-lo.

EDITAR:

Bem, talvez eu possa ajudar no segundo. Eu encontrei este link no uso do DBD com o cliente instantâneo . Aparentemente você tem que baixar / instalar o cliente instantâneo sdk também. Veja o passo 3 no link.

    
por 06.12.2010 / 16:58
2

Eu tive o mesmo problema. Resolvido ajustando a variável de ambiente ORACLE_HOME, assim:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64

E dentro de $ ORACLE_HOME eu tenho os respectivos subdiretórios:

bin   lib   sdk

Depois disso, pude instalar o DBD :: Oracle bem.

    
por 12.05.2017 / 15:52
0

1) Se você quiser deixar o @connect_string, você pode configurar a variável de ambiente TWO_TASK para o nome tnsnames alias (nesse caso, some_string).

O mesmo é realizado usando a variável LOCAL no Windows.

2) Parece que o sudo está redefinindo suas variáveis de ambiente. Você precisará adicionar $ ORACLE_HOME e talvez outros à linha env_keep em seu arquivo sudoers. Outras alterações no arquivo de sudoers que irão acertar a mesma coisa são discutidas aqui .

    
por 06.12.2010 / 18:39

Tags