PHP – Conexão com Oracle

Posted by Bento | Posted in Banco de Dados, Oracle, PHP | Posted on 04-08-2010-05-2008

14

Hoje vou mostrar como fazer conexão no oracle usando o PHP.

1° passo – O primeiro passo é configurar o PHP. As bibliotecas para conexão com o Oracle.

Localize o arquivo php.ini dentro do diretório de instalação do apache, e em seguida abra usando um editor de texto.

Encontre a linha ;extension=php_oci8.dll e remova o ponto e vírgula no inicio.
Encontre a linha ;extension=php_oracle.dll e remova o ponto e vírgula no inicio.

Caso não encontre as linhas insira no final do arquivo.

2° passo – Agora vamos criar a conexão com o Oracle.

Para conectar no oracle usava-se OCILogon que foi substituido por oci_connect a partir da versão 5.1.2 do PHP.
Vou mostrar como usar as 2 maneiras.

//metodo para se conectar usando versão 4 ou anterior do PHP
//depende da instalação do client do oracle e configuração do arquivo TNS
$conexao_antiga = OCILogon("usuario", "senha", "servico");

//metodo usado a partir do PHP 5.1.2
$conexao = oci_connect('usuario', 'senha', '127.0.0.1/nome_servico');

if (!$conexao) {
    $erro = oci_error();
    trigger_error(htmlentities($erro['message'], ENT_QUOTES), E_USER_ERROR);
exit;
}

Modelo de configuração do arquivo TNS.ORA
O arquivo TNSNAMES.ORA armazena as configurações do servidor e nome da instancia do oracle. Abaixo postei um arquivo com duas configurações base produção e base teste.
Lembrando que ao instalar o oracle client em seu computador é criado um arquivo vazio caso seu arquivo TNS esteja em algum endereço da rede é necessário alterar o caminho no registro do windows.
Diretório padrão do arquivo: C:oracleproduct10.2.0client_1networkADMINtnsnames.ora

# TNSNAMES.ORA Network Configuration File: c:oracleora92networkadmintnsnames.ora
# Generated by Oracle configuration tools.

producao =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = prod)
    )
  )

teste =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = teste)
    )
  )

Modelo de configuração do arquivo de registro “REGEDIT” indicando o diretorio onde esta o arquivo TNS.
Caso seu arquivo de TNS seja armazenado em outro local é necessário atualizar o registro, alterando o TNS_ADMIN para o novo caminho.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraClient10g_home1]
"TNS_ADMIN"="C:\oracle\product\10.2.0\client_1\network\ADMIN"

[HKEY_LOCAL_MACHINESOFTWAREORACLE]
"TNS_ADMIN"="C:\oracle\product\10.2.0\client_1\network\ADMIN"

Bem pessoal, basicamente é isto espero que ajude. No próximo artigo vou mostrar como fazer uma consulta no DB Oracle.
Um abraço a todos.

Comments posted (14)

Boa noite, sou usuário Mysql e Postgres, só que me apareceu um novo desafio, usar o banco Oracle, aí pensei que seria a coisa mais fácil do mundo, só que eu não tenho muita experiência, e sou muito desligado nessas paradas de instalação de programas com muitos detalhes. Eu já ví centenas de tutoriais e vídeos de “como conectar o banco de dados oracle com o php” infelizmente não consegui nenhum resultado positivo. :/

Teria como me explicar de forma mais clara, como faço para conectar o oracle com o vertrigo? :/

Milrak, Você já realizou um teste de conexão com banco usando o sqlplus, plsql ou alguma outra ferramenta, deu certo?
você está em um ambientes de testes?

Estou escrevendo um novo Post, para usar em plataforma Linux
Fazendo conexão com PHP + Oracle usando CentOS 6.3 / Red Hat 6.3
http://blog.fabianobento.com.br/2012/10/configurando-php-para-suporte-com-oracle-usando-centos-6-3-red-hat-6-3/

Ola preciso conectar dois bancos de dados um MySql e outro Oracle, até aí tudo bem, o problema é como eu seleciono o BD com a conexão oracle.

Para selecionar a conexão com MySql eu uso: mysql_select_db(“banco”,$conn1)

E para Oracle é o mesma função. Quem sabe?

Cláudio, é só criar duas conexões e referenciar na passagem do SQL.

$conexao1 = oci_connect(‘user’, ‘pass’, ‘192.168.0.1/base’);

$conexao2 = oci_connect(‘user’, ‘pass’, ‘192.168.0.1/base’);

$consulta = “select * from TABELA”;
$stid = oci_parse($conexao1, $consulta) or die (“erro”);

$consulta = “select * from TABELA”;
$stid = oci_parse($conexao2, $consulta) or die (“erro”);

Olá Fabiano boa tarde, fiz tudo conforme o tutorial acima, mas me é retornado o seguinte erro:
Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system – please check that PATH includes the directory with Oracle Instant Client libraries in

É como se o php não estivesse encontrando as bibliotecas oracle.
Estou utilizando o xammp como servidor.
Desde já muito obrigado!

Linsmar tudo bem?

Você precisa desabilitar o SELINUX

/etc/sysconfig/selinux

# SELINUX=disabled

fabiano, uso o pl/sql developer como faço a para conectar ao banco

Olá Richard,
Inicialmente ao abrir o PL/SQl será necessário informar o usuário e senha para conexão com o banco, caso não apareça, você poderá clicar sobre um cadeado na barra de ferramentas e informar os dados de login.

Olá Fabiano!
Estou tentando fazer conexão com o banco Oracle e ocorre o erro Fatal error: Call to undefined function oci_connect(). A versão do meu PHP é 5.6.3. A minha base de dados está instalada em ambiente Linux. Através do SqlDeveloper, consigo acessar toda minha base sem problemas. Estou utilizando o xammp como servidor. Habilitei a extension=php_oci8_11g.dll, pois utilizo a versão 11g do oracle e inclui a extension=php_oracle.dll. Pois não encontrei no PHP.ini. Não sou experiente em ambiente Oracle, então já viu, né? Estou apanhando de todas as formas. Desde já agradeço!

Olá Adalberto, você precisa checar se as DLLs (extension=php_oci8.dll, extension=php_oracle.dll) foram carregadas no PHP, para isto basta criar um arquivo com o comando phpinfo();, e ver se foram carregadas, deve existir um item OCI na página.
Você pode verificar também se elas existem no diretório :instalação/php/ext.

Boa tarde,

fiz todo o procedimento citado acima, descomentei as linhas extension=php_oci8.dll e extension=php_oracle.dll, mas quando rodo o arquivo que criei com o phpinfo() não aparecem na configuração do php no item oci8.

A estrutura que estou utilizando é windows 7, IIS 7.5, PHP 5.3.28, Oracle 11g Express Edition, instantclient_11_2.

Criei um arquivo para conexão e nao aparece se deu certo ou não a conexão.

Aparece uma mensagem “Erro no servidor 500”.

Você sabe o que pode ser isso

Obrigado

Osvaldo boa tarde!

Se não estiver aparecendo o item OCI no arquivo phpinfo(); é provável que não existe o arquivo DLL no diretório de bibliotecas do PHP.

A conexão Oracle é feita a partir de configuração no arquivo TNSnames.

Att.
Bento

Boa noite, estou tentando conectar PHP com o banco Oracle e todas as minhas tentativas foram frustadas… Alguem pode me ajudar.

<?php echo "Olá Mundo”; ?>

Olá Carlos,
Você habilitou as DLL’s no Apache, peço que informa também se já fez a instalação do Oracle Cliente, e mais informações; qual plataforma está usando? Windows / Linux?

http://blog.fabianobento.com.br/2012/10/configurando-php-para-suporte-com-oracle-usando-centos-6-3-red-hat-6-3/

Write a comment