Cx Oracle 'TNS 无法解析连接标识符'

Posted

技术标签:

【中文标题】Cx Oracle \'TNS 无法解析连接标识符\'【英文标题】:Cx Oracle 'TNS could not resolve the connect identifier'Cx Oracle 'TNS 无法解析连接标识符' 【发布时间】:2020-09-30 14:41:31 【问题描述】:

我正在使用 LDAP 和 Python cx_Oracle 库连接到 Oracle 数据库。我有适当的 sqlnet.ora、ldap.ora 和 tnsnames.ora 文件。在我的 Windows 机器上,使用 12.1 Oracle 客户端和以下 Python 代码一切正常:

import cx_Oracle
connection = cx_Oracle.connect(user/password@db, mode=cx_Oracle.SYSDBA)

我已按照 Oracle 网站(https://www.oracle.com/be/database/technologies/instant-client/linux-x86-64-downloads.html 底部)建议的 zip 文件安装方法在我的 Linux 机器 (Debian) 上安装了 Oracle 即时客户端 12.1。 ldconfig 正确列出了 oracle 客户端库及其路径。

我将完全相同的 sqlnet.ora、ldap.ora 和 tnsnames.ora 文件从我的 Windows 机器复制到我的 Linux 机器 根据 cx_Oracle 文档的建议,在 /opt/oracle/instantclient_12_1/network/admin 中。

现在在我的 Linux 机器上运行上面的 Python 代码,我遇到了以下错误:

cx_Oracle.DatabaseError: ORA-12154: TNS:could not resolve the connect identifier specified

我也尝试设置环境变量TNS_ADMIN=/opt/oracle/instantclient_12_1/network/adminORACLE_HOME=/opt/oracle/instantclient_12_1/ 都没有成功

谁能帮我调试一下并理解为什么我的 Linux 机器上的客户端配置不起作用?

【问题讨论】:

永远不要使用 Instant Client 设置 ORACLE_HOME。无需设置 TNS_ADMIN,因为您已将文件移动到默认位置。您的错误在其他地方:无法访问配置文件中的任何主机名。 我能够成功地 ping 配置文件中的主机。有什么办法可以让 cx_Oracle 库打印出已经加载的配置? 【参考方案1】:

安装了最新的 19 客户端,一切正常。

【讨论】:

以上是关于Cx Oracle 'TNS 无法解析连接标识符'的主要内容,如果未能解决你的问题,请参考以下文章

如何解决ORA-12154:TNS:无法解析指定的连接标识符

如何解决ORA-12154:TNS:无法解析指定的连接标识符

Oracle 表单:TNS:无法解析指定的连接标识符

PLSQL链接oracle报错--ORA-12154: TNS: 无法解析指定的连接标识符

PLSQL链接oracle报错--ORA-12154: TNS: 无法解析指定的连接标识符

Oracle数据库ORA-12154: TNS: 无法解析指定的连接标识符详解