首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cx_oracle无法获取Oracle环境句柄

cx_oracle无法获取Oracle环境句柄
EN

Stack Overflow用户
提问于 2016-09-30 09:35:22
回答 1查看 1.4K关注 0票数 0

当试图连接到Oracle数据库时,我会收到以下错误:

代码语言:javascript
复制
File "test.py", line 5, in <module>
    conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')
cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle

测试代码:

代码语言:javascript
复制
import os
#os.environ['ORACLE_HOME']='/oracle/client/112_64/'
import cx_Oracle

conn = cx_Oracle.Connection('dbuser/dbpass@fqdn')

我的路是这样的:

代码语言:javascript
复制
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,安装的甲骨文版本为11g,cx_Oracle版本为5.2.1。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-30 12:59:37

该错误(无法获取Oracle环境句柄)是Oracle告诉您您的配置有问题的方式。在您的情况下,您有不同的路径,这可能是问题的根源。一个是"/oracle/oracle-client“,另一个是"/oracle/client”。你应该找出哪一个是正确的,并相应地调整事物。

您可以使用SQL*Plus连接到数据库。如果这样做有效,那么cx_Oracle也应该能工作。

您还可以使用ldd命令来确定系统是否找到了正确的库。如下所示:

代码语言:javascript
复制
ldd /path/to/cx_Oracle.so

如果您的cx_Oracle版本是针对12c编译的,但使用的是11g客户端(例如),则也会出现此错误。或者,您有两个不同客户端的碎片同时加载。但在你的情况下,我强烈怀疑冲突的道路!

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39788293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档