Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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.

AltStyle によって変換されたページ (->オリジナル) /