Как соединить Python, Oracle 11g с cx_Oracle на сервере Linux? - PullRequest
1 голос
/ 26 марта 2019

Моя папка установки oracle на сервере linux: "/lib/oracle/11.2/client64/lib"
переменные установки в ~ / .bash_profile

ORACLE_HOME=/usr/lib/oracle/11.2/client64
LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_HOME
export LD_LIBRARY_PATH

Также ссылка в папке "/usr / lib / oracle / 11.2 / client64 / lib "

ls -al|grep libclntsh.so

## Results are:
libclntsh.so -> libclntsh.so.11.1
libclntsh.so.10.1 -> /oracle/app/pracle/product/11.2.0/lib/libclntsh.so
libclntsh.so.11.1

и в python

os.environ['ORACLE_HOME']
os.environ['LD_LIBRARY_PATH']

## Results are:
'/usr/lib/oracle/11.2/client64'
'/usr/lib/oracle/11.2/client64/lib'

import cx_Oracle ## This Part is ok

Но этот код является ошибкой

cx_Oracle.clientversion()
## or 
dsn = cx_Oracle.makedsn('ip',port,'SID')
conn = cx_Oracle.connect(user='uid',password='pwd',dsn=dsn)

## Above Code Results:
DatabaseError:Error while trying to retrieve text for error ORA-01804

Я сомневаюсьчто моя папка "/etc/ld.conf.d" не имеет файла "oracle-instantclient.conf".
Эта папка имеет только "mariadb-x86x64.conf"
ip, порт, SID и идентификатор пользователя, парольвсе правильно!

Что не так в моей настройке oracle connect на сервере linux?

1 Ответ

0 голосов
/ 28 марта 2019

Извините.Это моя вина.
Я просто изменил ORACLE_HOME & LD_LIBRARY_PATH, и он работает.

os.environ["ORACLE_HOME"] = 'oracle/app/oracle/product/11.2.0'
os.environ["LD_LIBRARY_PATH"] = 'oracle/app/oracle/product/11.2.0/lib'
conn = oci.connect('ID/pw@localhost:port/SID')

Решено.

...