cx_Oracle.InterfaceError:无法获取Oracle环境处理Mac

时间:2017-03-24 18:41:42

标签: python oracle cx-oracle

我安装了cx_Oracle,我可以成功导入它。但是当我尝试建立Oracle连接时,我收到了这个错误:

Traceback (most recent call last): File "<stdin>", line 1, in <module> cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

我的操作系统是MacOSX,我的ORACLE_HOME指向instantclient_11_2。

3 个答案:

答案 0 :(得分:2)

首先是第一件事。

检查您的cx_oracle是否构建为与Oracle客户端完全相同的版本。

import cx_Oracle
cx_Oracle.clientversion()

这应该返回它期望找到的版本。

如果版本不同,则应根据正确版本重建版本。

答案 1 :(得分:2)

对于即时客户端,请勿设置ORACLE_HOME。而是按照以下说明操作:

cd $HOME
mkdir -p lib
cd lib
cp /the/location/to/instantclient_11_2/*dylib* .
ln -s libclntsh.dylib.11.1 libclntsh.dylib

如果您能够使用Instant Client 12.1,则事情会更简单

cd $HOME
mkdir -p lib
cd lib
ln -s /the/location/to/instantclient_12_1/libclntsh.dylib.12.1 libclntsh.dylib

如果您还下载并解压缩SQL * Plus软件包,则可以验证客户端安装是否正常运行。

答案 2 :(得分:1)

您是否尝试过修改连接方式?听起来你的设置正确。

请尝试以下方法(填写您自己的信息):

ip_addr = 'ip address'
port = 1521
sid = 'sid'
dsn_tns = cx_Oracle.makedsn(ip_addr, port, sid)
db = cx_Oracle.connect('username', 'password', dsn_tns)

如果这不起作用,请确保您的LD_LIBRARY_PATH设置正确。

相关问题