cx_oracle 无法获取 Oracle 环境句柄
cx_oracle Unable to acquire Oracle environment handle
尝试连接到 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
我不知道问题出在哪里。有人可以给我提示吗?
该错误(无法获取 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
尝试连接到 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
我不知道问题出在哪里。有人可以给我提示吗?
该错误(无法获取 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