cx_Oracle.InterfaceError:无法获取Oracle环境句柄Mac

问题描述:

我安装了cx_Oracle,并且可以成功导入它。但是,当我尝试建立Oracle连接,我得到这个错误:cx_Oracle.InterfaceError:无法获取Oracle环境句柄Mac

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。

第一件事第一件事。

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

import cx_Oracle 
cx_Oracle.clientversion() 

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

如果版本不同,您应该根据正确的版本重新编译它。

+0

我得到了(11,2,0,3,0),这是正确的版本。 –

+0

@ rijo-simon好的,你有没有试过解决相关的问题? –

+0

是的,尝试几乎所有的人。没有任何解决方案提供了解决方案。 –

对于即时客户端,请勿设置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 

如果你能够使用即时客户端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的包,你可以验证你的客户安装工作正常。

+0

我做了上述步骤,并没有帮助。在这种情况下ORACLE_HOME应该是什么? –

+0

ORACLE_HOME根本不应该下注。 –

+0

取消设置ORACLE_HOME没有帮助。问题依然存在。 –

你试过修复你连接的方式吗?这听起来像你设置正确。

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

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设置正确。