我想使用cx_Oracle连接到本地数据库,但是会引发错误:
DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
我可以使用sqlplus和SQL Developer连接到数据库,但不适用于Jupyter中的Python cx_Oracle。
import cx_Oracle
host = 'localhost'
port = 1521
SID = 'xe'
dsn_tns = cx_Oracle.makedsn(host, port, SID)
connection = cx_Oracle.connect('user', 'passwd', dsn_tns)
我是否有可能一团糟。环境变量或客户端安装?
echo ${ORACLE_HOME};
/u01/app/oracle/product/11.2.0/xe
echo ${LD_LIBRARY_PATH};
/usr/lib/oracle/12.2/client64/lib
我在/usr/lib/oracle/12.2/client64/lib
中安装了客户端
答案 0 :(得分:0)
您也可以更新cx_Oracle。 DPI-1047消息使用的是在最新版本中更新的文本。这实际上并不能解决您的问题
保持清洁。如果使用的是Oracle Instant Client,请不要设置ORACLE_HOME。
我怀疑您的环境变量没有传播到cx_Oracle。
对于64位XE,您不需要安装Instant Client(因为您的cx_Oracle消息告诉我它是64位,因为错误正在寻找64位Oracle客户端) 。 cx_Oracle可以使用数据库库。
一旦解决了库搜索路径问题,连接字符串就会出现问题。您正在尝试使用旧的SID构造,但应使用Service Name。它需要设置为:
sn = 'xe'
dsn_tns = cx_Oracle.makedsn(host, port, service_name=sn)