2016-09-30 119 views
0

当试图去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

我不知道问题可能是什么。有人能给我一个提示吗?

回答

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

+0

谢谢你的提示。有两件事情。该路径没有在全局设置,其次是没有正确设置网络文件夹的访问权限。 – markan