尝试连接到Oracle数据库时出现以下错误:
File "test.py", line 5, in <module>
conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle
测试代码:
import os
#os.environ['ORACLE_HOME']='/oracle/client/112_64/'
import cx_Oracle
conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')
我的路径设置如下:
ORACLE_BASE=/oracle/oracle-client
ORACLE_HOME=/oracle/oracle-client/112_64
LD_LIBRARY_PATH=/oracle/client/112_64/:/oracle/oracle-client/112_64/lib/
PATH=/oracle/oracle-client/112_64/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/my_user/bin
根据libocci.so.11.1
安装的Oracle版本为11g,cx_Oracle版本为5.2.1
我不知道问题可能是什么。有人可以给我一些提示吗?
答案 0 :(得分:0)
该错误(无法获取Oracle环境句柄)是Oracle告诉您配置有问题的方法。在您的情况下,您有不同的路径,可能是问题的根源。一个说“/ oracle / oracle-client”,另一个说“/ oracle / client”。你应该找出哪一个是正确的,并相应调整。
您可以使用SQL * Plus连接到数据库。如果有效,那么cx_Oracle也应该有用。
您还可以使用ldd命令查明系统是否找到了正确的库。像这样:
ldd /path/to/cx_Oracle.so
如果您有针对12c编译的cx_Oracle版本但正在使用11g客户端(例如),则也会出现此错误。或者您同时加载了两个不同客户端的点点滴滴。但在你的情况下,我强烈怀疑相互冲突的路径!
如果您使用的是基于RPM的Linux发行版(Oracle Linux,Red Hat Linux,Fedora等),我强烈建议您使用提供的即时客户端RPM。它们使配置变得非常简单,并且不需要环境变量来构建和安装cx_Oracle(从5.2开始)。您可以在此处找到它们:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html