+1

Como se conectar com um servidor Oracle remoto?

criado por daniel kiiti haibara em 28/07/2009 3:30pm
Preciso conectar com o bando de dados oracle que está fora do meu servidor, porem apresenta o seguinte erro

Warning: ocilogon() [function.ocilogon]: ORA-12532: TNS:invalid argument in....

alguem sabe o que pode estar acontecendo? Pedi na locaweb e instalaram o OCI-8 no servidor.

<?php
$username = 'usuario';
$password = 'senha';
$db = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xx.xxx.xxx)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE)))';

oci_connect($username, $password, $db);
?>

Lista de Respostas:

+2
01/08/2009 4:44pm
(~14 anos atrás)
Marcos Regis respondeu:
Passos a serem verificados (Sei que alguns não se aplicam a seu caso mas como isso é um FAQ, outros irão ver)
1 - Você instalou o client (É obrigatório)?
2 - Configurou o client corretamente? No diretório do client tem um arquivo que indica os Sevice Names a serem utilizados e para onde eles devem apontar.
3 - Tentou conectar com algum programa antes de tentar com o PHP?
4 - As variáveis de ambiente ORACLE_HOME ou TNS_ADMIN estão presentes?


$username = 'usuario';
$password = 'senha';
$service_name = 'XE'; // O Nome da base aqui
$host_ip = '192.168.0.1'; // o ip do servidor aqui
$db = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $host_ip)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = $service_name)))";

ou tente com

$db="//$host_ip[1521]/$service_name";

Lembre-se que o client instalado deve ter suporte a versão do Servidor que se deseja conectar.
Usar um client para a versão 9g pode não funcionar para a 10g ou 11g.


+2
04/08/2009 1:25pm
(~14 anos atrás)
Marcos Regis respondeu:
Olá Daniel.
Instalar o client não é tarefa para um usuário sem permissões que deve ser o caso dos users locaweb. Pode ser que eles tenham sim o client instalado.
Faça um teste simples.
rode esse script
<?php print_r($_ENV); ?>

Verifique as variáveis de ambiente existentes. Se existir ou ORACLE_HOME ou TNS_ADMIN é porque existe um cliente Oracle instalado.
Se não existir não adianta ter a extensão PHP oci ou oci8 pois ele PRECISA do client para conectar (http://br.php.net/manual/en/oci8.requirements.php).
Tem uma versão do client que é a instant client que não precisa dessas variaveis de ambiente e que geralmente é a utilizada.




0
04/08/2009 10:34am
(~14 anos atrás)
marcos, gostei da resposta.

cara, caso eu esteja hospedado por exemplo numa locaweb, como eu instalaria o cliente e configuraria o resto(tudo isso que você falou)? Porque no caso, mesmo eu tendo pedido pra instalarem o oracle, eles instalaram no php o OCI8. Será que isso pode me prejudicar na hora da conexão?

0
11/08/2009 1:04pm
(~14 anos atrás)
como funciona essa instant cliente?? será q eu consigo pedir la na locaweb ou eu consigo instalar no servidor local? eu instalei o oracle express(10g) e ainda sou muito leigo no assunto =[

0
11/08/2009 1:07pm
(~14 anos atrás)
fiz o teste pra ver as váriaveis do ambiente e retornou isso
Array
(
[SELINUX_INIT] => YES
[CONSOLE] => /dev/console
[TERM] => linux
[INIT_VERSION] => sysvinit-2.86
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[RUNLEVEL] => 3
[runlevel] => 3
[PWD] => /etc/rc.d/init.d
[LANG] => C
[PREVLEVEL] => N
[previous] => N
[SHLVL] => 4
[OPENSSL_CONF] => /usr/local/psa/admin/conf/openssl.cnf
[_] => /usr/sbin/httpd
)

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)