cx_oracle无法获取Oracle环境句柄

马坎

尝试建立与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

根据,已安装的Oracle版本为11g,libocci.so.11.1而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版本,但使用的是11g客户端,则也会出现此错误。或者,您有一点点的两个不同的客户端同时加载。但是对于您的情况,我强烈怀疑路径冲突!

如果您使用的是基于RPM的Linux发行版(Oracle Linux,Red Hat Linux,Fedora等),我强烈建议您使用提供的即时客户端RPM。它们使配置极其简单,并且不需要环境变量即可构建和安装cx_Oracle(从5.2版开始)。您可以在这里找到它们:http : //www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章