wiki:WF/conexaobancooracle

Version 4 (modified by gbisotto, 15 years ago) (diff)

--

Estabelecendo uma Conexão com um Banco de Dados Oracle

Para conectar-se a um banco de dados Oracle, utilize, como template, o código abaixo (supõe-se que o código será executado em uma classe da camada Model):

/* cria uma nova instância da classe wf_db */
$conn = &$this->factory->newInstance('wf_db');

/*
 * Conecta-se ao banco de dados
 * A porta padrão para o banco Oracle é: 1521
 * oci8 é o driver do Oracle para o ADOdb
*/
$conn->connect('nome_database', 'host', porta, 'usuario', 'senha', 'oci8');

/* verifica se a conexão foi bem sucedida */
if ($conn)
{
	/* executa uma query */
	$recordSet = $conn->query('SELECT campo1, campo2 FROM esquema.tabela');
	/* verifica se a query foi executada com sucesso */
	if ($recordSet)
	{
		/* percorre os dados da consulta */
		while (!$recordSet->EOF)
		{
			print_r($recordSet->fields);
			$recordSet->MoveNext();
		}
	}
}

/* desconecta-se do banco */
$conn->disconnect();

/** 
 * Por motivos ainda desconhecidos o adodb utiliza uma variável global para armazenar o nome do último banco utilizado.
 * Tal característica faz com que a conexão com o banco padrão, o postgresql, seja perdida.
 * Para arrumar este problema adicione as linhas abaixo logo após a desconexão com o oracle.
 */
global $ADODB_LASTDB;
$ADODB_LASTDB = 'postgres7';

Atenção: a configuração do servidor apache2/php para conexão com o oracle NÃO vem pré-configurada com a instalação padrão do workflow, para tanto deve-se seguir o roteiro de instalação abaixo.


OBS: todos os comandos devem ser executados com o usuário root

Configuração do servidor para acesso a banco Oracle (OCI)

Instalação das bibliotecas da Oracle

Antes, de iniciar a instalação, verifique se a biblioteca libaio está instalada. Caso não esteja, instale-a através do

apt-get install libaio

Crie o diretório onde a biblioteca ficará instalada:

mkdir -p /opt/oracle/instantclient
cd /opt/oracle/instantclient

Baixe os seguintes arquivos no diretório recém criado:

 http://download.oracle.com/otn/linux/instantclient/11106/basic.zip

 http://download.oracle.com/otn/linux/instantclient/11106/sdk.zip

Execute os comandos abaixo para instalar as bibliotecas do Oracle:

unzip basic.zip
unzip sdk.zip
mv instantclient_11_1/* .
rmdir instantclient_11_1
echo /opt/oracle/instantclient >> /etc/ld.so.conf
ldconfig
ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so
rm basic.zip sdk.zip

Instalação da Extensão OCI8

Agora, precisamos instalar a extensão OCI8 (que permite o PHP conectar-se com o ORACLE):

mkdir -p /usr/local/src
cd /usr/local/src

Baixar a extensão (link abaixo) no diretório recém criado:

 http://pecl.php.net/get/oci8-1.2.4.tgz

Instale a extensão através dos seguintes comandos:

tar zxvf oci8-1.2.4.tgz
cd oci8-1.2.4/
phpize
./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient
make
make install
rm oci8-1.2.4.tgz

Adicione a linha "extension=oci8.so" (sem as aspas) no arquivo "/etc/php5/apache2/php.ini" logo após as outras declarações de extensões. Reinicie o serviço apache:

/etc/init.d/apache2 restart