wiki:WF/conexaobancooracle

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 = 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 motivo ainda não identificado, 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 corrigir este problema adicione as linhas abaixo logo após a desconexão com o oracle.
 */
global $ADODB_LASTDB;
$ADODB_LASTDB = 'postgres7';

Instalação das Bibliotecas da Oracle

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.

Todos os comandos devem ser executados com o usuário root

1) 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 libaio1

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

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

3) Baixar a última versão do software instantclient da Oracle, compatível com a arquitetura do servidor:

http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

Será necessário um usuário e senha para logar. Cadastre-se no site.

4) 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

1) Agora, é necessário instalar a extensão OCI8 (que permite o PHP conectar-se com o ORACLE):

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

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

http://pecl.php.net/package/oci8

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

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

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

5) Reinicie o serviço apache:

/etc/init.d/apache2 restart