-
Notifications
You must be signed in to change notification settings - Fork 0
Instalando o cx_Oracle
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.
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
sadgsadfgsadfgsad asgdsa
No momento da instalação do cx_Oracle (último passo da seção anterior), poderá ocorrer alguns erros.
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.
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.