【问题标题】:cx_oracle Unable to acquire Oracle environment handlecx_oracle 无法获取 Oracle 环境句柄
【发布时间】:2017-02-08 20:11:42
【问题描述】:

在尝试连接到 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

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

【问题讨论】:

    标签: django oracle python-2.7 database-connection cx-oracle


    【解决方案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

    【讨论】:

    • 感谢您的提示。那里有两件事。路径未全局设置,其次是网络文件夹未正确设置的访问权限。
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多