Warm tip: This article is reproduced from serverfault.com, please click

ubuntu 18.04-如何修复:cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle Client库

(ubuntu 18.04 - How to fix: cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library)

发布于 2019-04-24 06:36:01

我正在使用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以获取帮助

Questioner
Ian Nato
Viewed
0
400 2021-01-11 19:59:06

经过更多研究后,我从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下的文字是你的监听器/服务名。