我正在使用cx_oracle 7和python 3.6.7建立到oracle 11g的连接,该连接位于远程服务器中。我的操作系统在Ubuntu 18.04
我已经用libclntsh.so安装了oracle即时客户端库但是我没有得到预期的输出。
这是我用来连接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客户端库:“libclntsh.so:无法打开共享对象文件:没有这样的文件或目录“。请参阅https://oracle.github.io/odpi/doc/installation.html#linux获取帮助
经过一些研究后,我从ubunu community获得了解决方案,在安装了oracle instantclient之后,你必须按如下方式集成oracle库:
export LD_LIBRARY_PATH = / usr / lib / oracle /
<version>
/ client(64)/ lib / $ {LD_LIBRARY_PATH:+:$ LD_LIBRARY_PATH}例如,Linux x86_64的12.1版本:
export LD_LIBRARY_PATH = / usr / lib / oracle / 12.1 / client64 / lib / $ {LD_LIBRARY_PATH:+:$ LD_LIBRARY_PATH}
其中<version>
表示你的oracle intantclient的版本,例如11.2,12.2
连接参数应如下connection = cx_Oracle.connect("username/password@host/service_name e.g orcl")
获取监听器/ service_name在oracle sqlplus中键入以下内容
SQL> show parameter local_listener
价值是听众