cx_oracle无法获取Oracle环境处理
问题描述:
当试图去Oracle数据库I'm的连接得到以下错误:cx_oracle无法获取Oracle环境处理
File "test.py", line 5, in <module>
conn = cx_Oracle.Connection('dbuser/[email protected]')
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/[email protected]')
我的路径设置像这样:
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
根据安装的Oracle版本是11g 10和cx_Oracle版本是5.2.1
我不知道问题可能是什么。有人能给我一个提示吗?
答
该错误(无法获取Oracle环境句柄)是Oracle告诉您配置有问题的方式。在你的情况下,你有不同的路径可能是问题的根源。一个说“/ oracle/oracle-client”,另一个说“/ oracle/client”。你应该找出哪一个是正确的,并相应地调整事情。
您可以使用SQL * Plus连接到数据库。如果那有效,那么cx_Oracle也应该工作。
您也可以使用ldd命令来确定系统是否找到了正确的库。就像这样:
ldd /path/to/cx_Oracle.so
也可能会出现此错误,如果你对12C编译版本cx_Oracle,但使用的是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
谢谢你的提示。有两件事情。该路径没有在全局设置,其次是没有正确设置网络文件夹的访问权限。 – markan