Skip to content

Instalando o cx_Oracle

Tiago de Jesus Neves edited this page Nov 22, 2013 · 12 revisions

Table of Contents

Introdução

cx_Oracle é um módulo de extensão do Python que permite acessar bancos de dados Oracle e obedece à especificação de API de banco de dados do Python. Este módulo está atualmente construído de encontro ao Oracle 10.2, 11.1 e 11.2.

O dbsync utiliza este módulo para manipulação dos dados do banco de dados Oracle.

Instalação

Antes de realizar a instalação do cx_Oracle é necessário instalar primeiramente suas dependências. Em um ambiente Debian (e derivados) basta executar o seguinte comando:

# apt-get install python-dev build-essential libaio1

Após a instalação dos pré-requisitos, deve-se instalar o Oracle Instant Client.

O Oracle Instant Client permite que você execute suas aplicações sem a necessidade de instalar o Oracle client. Para mais informações acesse o site do Oracle Instant Client.

Para instalar o Oracle Instant Client, crie um diretório onde serão instalados seus pacotes, como no exemplo a seguir:

$ mkdir /opt/ora
$ cd /opt/ora

De acordo com a arquitetura de sua máquina, faça o download do instantclient-basic-linux e do instantclient-sdk-linux, no site da Oracle e salve-os no diretório criado anteriormente.

Realizado o download, descompacte os arquivos:

$ unzip instantclient-basic-linux.x64-12.1.0.1.0.zip
$ unzip instantclient-sdk-linux.x64-12.1.0.1.0.zip
$ cd instantclient_12_1

Após descompactados, crie uma ligação simbólica para o seguinte arquivo:

$ ln -s libclntsh.so.12.1 libclntsh.so
$ ln -s libclntsh.so.12.1 libclntsh.so.11.1
$ cd ../..

Crie as variáveis de ambiente do Oracle:

# export ORACLE_HOME=/opt/ora/instantclient_12_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

Você pode adicioná-las também no final do arquivo /etc/bash.bashrc para que elas sejam carregadas automaticamente.

É necessário agora efetuar o download do pacote do cx_Oracle. Caso esteja utilizando Debian (e derivados) baixe o pacote cx_Oracle Source code only e descompacte-o:

$ tar zxvf cx_Oracle-5.1.2.tar.gz
$ cd cx_Oracle-5.1.2

Agora, instale:

# python setup.py build install

Teste a instalação!

sadgsadfgsadfgsad asgdsa

Problemas?

No momento da instalação do cx_Oracle (último passo da seção anterior), poderá ocorrer alguns erros.

cannot locate an Oracle software

Traceback (most recent call last):
  File "setup.py", line 132, in <module>
    raise DistutilsSetupError("cannot locate an Oracle software " \
distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation

Neste caso, as variáveis de ambiente não foram localizadas. Solução: Retorne à etapa de definição das variáveis de ambiente e tente instalar novamente.

Caso esteja usando sudo, o arquivo /etc/sudoers deve ser editado para que inclua as definições das variáveis de ambiente. Se não quiser ter esse trabalho, utilize su para ter as permissões do root e tente executar novamente.

userOracleHome

Traceback (most recent call last):
  File "setup.py", line 126, in <module>
    raise DistutilsSetupError(messageFormat % userOracleHome)
distutils.errors.DistutilsSetupError: Oracle home (/opt/ora/instantclient_12_1) does not refer to an 9i, 10g or 11g installation.

Neste caso, as variáveis estão definidas corretamente. Porém, o instalador não consegue encontrar a "versão" 12 do Oracle Instant Client.

Uma solução simples é alterar a versão no próprio script de instalação do cx_Oracle. Adotaremos esta solução, pois o script é usado somente na instalação e não há nenhum efeito colateral nesta alteração.

Desta forma, localize (linha 64) o trecho de código def CheckOracleHome(directoryToCheck) do arquivo setup.py no diretório de instalação do cx_Oracle. Após isto, altere o valor de 11 para 12 (na linha 89):

else:
     subDirs = ["lib", "lib64"]
filesToCheck = [
         ("11g", "libclntsh.so.12.1"),
         ("10g", "libclntsh.so.10.1"),
         ("9i", "libclntsh.so.9.0")
]

Execute novamente a instalação.