我正在使用cx_oracle 7和python 3.6.7建立到远程服务器中oracle 11g的连接。我在Ubuntu 18.04中的操作系统
我已经用libclntsh.so安装了Oracle Instant Client库,但没有得到预期的输出。
这是我用来连接到oracle db的代码
connection = cx_Oracle.connect("username/password@host/port")
print (connection.version)
connection.close()
当脚本运行时,我希望获得连接版本,而不是得到以下错误消息
文件“ script.py”,第13行,连接= cx_Oracle.connect(“ username / password @ host / port”)cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle Client库:“ libclntsh.so:无法打开共享对象文件:没有这样的文件或目录。请参阅 https://oracle.github.io/odpi/doc/installation.html#linux以获取帮助
经过更多研究后,我从Ubuntu社区获得了解决方案,在安装oracle Instant-Client之后,你将必须按以下方式集成oracle库:
导出LD_LIBRARY_PATH = / usr / lib / oracle /
<version>
/ client(64)/ lib / $ {LD_LIBRARY_PATH:+:$ LD_LIBRARY_PATH}Linux x86_64的12.1版本的示例可以是:
导出LD_LIBRARY_PATH = / usr / lib / oracle / 12.1 / client64 / lib / $ {LD_LIBRARY_PATH:+:$ LD_LIBRARY_PATH}
其中<version>
指示你的Oracle Instant-Client的版本,例如11.2、12.2
。连接参数应如下所示
connection = cx_Oracle.connect("username/password@host/service_name e.g orcl")
要获取侦听器/服务名,请在oracle sqlplus中键入以下内容
SQL> show parameter local_listener
VALUE下的文字是你的监听器/服务名。
对于安装Oracle Instant Client,我建议您改为遵循本指南(下载软件包并将其解压缩到/ opt / oracle /中)。另外,我认为最好添加永久路径