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

Atualizado em:09/01/2018

Caso não tenha configurado o PHP para suporte com a conexão veja o link abaixo antes de continuar;

Linux:

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

Windows:

Para permitir a biblioteca PHP conectar com o Oracle no windows, é necessário instalar o client do Oracle no computador e configurar o arquivo TNSNAMES.ora.

 

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.

20 Thoughts on “PHP – Conexão com Oracle

  1. 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? :/

  2. 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/

  3. Cláudio Zabatonov on 9 de setembro de 2013 at 22:20 said:

    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?

  4. 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”);

  5. 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!

  6. Linsmar tudo bem?

    Você precisa desabilitar o SELINUX

    /etc/sysconfig/selinux

    # SELINUX=disabled

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

  8. 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.

  9. Adalberto Luciano on 9 de abril de 2015 at 16:21 said:

    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!

  10. 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.

  11. 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

  12. 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

  13. Carlos Eduardo on 15 de novembro de 2016 at 19:28 said:

    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”; ?>

  14. Antonio Cesario on 29 de dezembro de 2017 at 14:43 said:

    Muito legal, mas numa pagina em um servidor funciona 100% mas quando rodo como um script usando php script.php da erro Call to undefined function oci_connect().

    Usando Linux

    como resolvo ?

    Obrigado

  15. Olá, estou com mesmo problema do Osvaldo, ja baixei as dll separadas e botei na pasta php no xampp, dei restart no servidor e nada. Estou tentando acessar um banco em outro ip, não local.

    Fatal error: Call to undefined function oci_connect() sempre essa mensagem

    obs: ja habilitei no php.ini

  16. Boa tarde! Estou usado o xampp 3.2.4 e conecta normalmente no oracle 11 xe, porem, preciso desesperadamente conectar num oracle 9 e parece não dar suporte a conexão nesta versão. Tem como resolver? No php.ini so tinha a linha para o extension=oci8_12c

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Post Navigation