如何修复:cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle客户端库 - Python

问题描述 投票:0回答:1

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

python-3.x ubuntu-18.04 cx-oracle
1个回答
0
投票

经过一些研究后,我从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

价值是听众

© www.soinside.com 2019 - 2024. All rights reserved.