ORACLE - PHP - TNSNAMES.ORA

301 views
Skip to first unread message

Tiago Pastorello

unread,
Jun 29, 2010, 11:45:48 AM6/29/10
to list...@googlegroups.com
Boa Tarde Senhores.

Preciso conectar o php em um servidor oracle remoto.
Instalei o Ubuntu, com suporte a PHP com OCI, Oracle/XE e tudo mais.

Vendo no manual do PHP
(http://php.net/manual/en/function.oci-connect.php), notei que é
necessário configurar o arquivo tnsnames.ora
Localizei o arquivo no meu servidor, mas não entendi como funciona.

A conexão do PHP é feita por

$conn = oci_connect('user', 'senha', 'localhost/XE');

Até então OK, consigo conexão no meu servidor local, porém tenho um
servidor remoto (ex: 200.10.10.1) e coloquei no meu aquivo
tnsnames.ora o seguinte:

MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 200.10.10.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

Mas parece que não faz menor diferença esse arquivo no meu sistema,
posso inclusive comentar a tag "XE" que já vem configurada e ele
continua funcionando localmente.


Aí está minha dúvida, esse aquivo tnsnames.ora é valido somente para
conexões locais?
Como devo proceder para conectar em um servidor remoto?
Como fica a conexão?

$conn = oci_connect('user', 'senha', 'localhost/MYDB'); ou
$conn = oci_connect('user', 'senha', 'MYDB'); ou ainda
$conn = oci_connect('user', 'senha', '200.10.10.1/MYDB');
ou nenhuma?

Help!

Obrigado

--
Tiago Pastorello
http://www.blackjack.blog.br

Sergio Michels

unread,
Jun 29, 2010, 11:50:21 AM6/29/10
to list...@googlegroups.com
O tnsnames.ora vale sim para servidores remotos. Não coloque localhost. Apenas o alias que você utilizou no arquivo, no caso, MYDB

Att,
Sérgio Michels



2010/6/29 Tiago Pastorello <tiagopa...@gmail.com>
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Tiago Pastorello

unread,
Jun 29, 2010, 1:20:12 PM6/29/10
to list...@googlegroups.com
Vlw, Sergio....

mas não estou consigo utilizar o tnsnames.ora acho eu, de forma correta.
comentei o arquivo e mesmo assim minha conexão (XE) local continua funcionando.

O apache deve identificar esse arquivo?

obrigado

¬¬

2010/6/29 Sergio Michels <sergiom...@gmail.com>:

Beatriz KMS

unread,
Jun 29, 2010, 1:40:54 PM6/29/10
to list...@googlegroups.com
Sergio, quando eu faço a conexão com o oracle, no terceiro parâmetro da função passo o "service name". Ja tentou?

2010/6/29 Tiago Pastorello <tiagopa...@gmail.com>

Felipe Djinn Asmodeu

unread,
Jun 29, 2010, 1:42:44 PM6/29/10
to list...@googlegroups.com
Em qual diretório está seu tnsnames.ora ?
Te um diretório certo para ficar, se não estiver no diretório padrão ( ex. /etc/oracle/instantclient_11_2/network/admin/tnsnames.ora ) tem que criar uma variável de ambiente, se eu não me engano, TNS_ADMIN...e ai sim restartar o apache, se o php estiver como módulo do apache, para que este arquivo seja carregado pelo php.....

Qualquer coisa, coloca a conf de conexão que está no tnsnames.ora direto na função oci_connect:

oci_connec('user', 'passwd', '    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 200.10.10.1)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = ORCL)
      )');

[]'s

2010/6/29 Tiago Pastorello <tiagopa...@gmail.com>



--
Felipe Djinn
Programador de Sistemas
felipedjinn.com.br
twitter.com/FelipeDjinn

Tiago Pastorello

unread,
Jun 29, 2010, 4:58:14 PM6/29/10
to list...@googlegroups.com
Valeu Felipe.

Funcionou muito bem.

Obrigado.


2010/6/29 Felipe Djinn Asmodeu <lfrs...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages