【问题标题】:Oracle incorrectly looking in TNS Names: TNS:could not resolve the connect identifier specifiedOracle 错误地查找 TNS 名称:TNS:无法解析指定的连接标识符
【发布时间】:2016-05-19 12:20:04
【问题描述】:

我正在尝试使用 cx_Oracle 连接到 oracle 数据库,但收到以下错误消息:

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

我正在使用这样的连接字符串:

'xxxx/pw@lonod-com:1221/LNOUND_USER.uk.something.com'

连接字符串绝对正确,因为它在同一网络上的不同计算机上工作。我也可以在使用 Oracle SQL Developer 时连接到数据库,它根本无法使用 Python。

我怀疑由于某种原因它一直在寻找我没有使用的 TNS 名称条目。是否有某个标志可能导致 cx_Oracle 继续寻找 TNS 名称条目或其他什么可能导致此问题?

【问题讨论】:

    标签: python oracle oracle11g cx-oracle


    【解决方案1】:

    如果您的 sqlnet.ora 配置文件在 names.directory_path 配置变量中不包含 EZCONNECT 选项,我已经看到会发生这种情况。以下是检查您正在使用的内容的几种方法。您还可以使用 SQL*Plus 测试此连接字符串——如果它与 SQL*Plus 一起使用,它也可以与 cx_Oracle 一起使用。

    1) 如果您设置了环境变量 TNS_ADMIN,它的值指示 Oracle 搜索配置文件的位置。如果没有,并且您安装了完整的 Oracle 客户端,它将查看 $ORACLE_HOME/network/admin

    2) 如果您安装了完整的 Oracle 客户端,您还可以使用 tnsping 实用程序来确定 Oracle 正在使用什么以及它正在读取哪些配置文件。

    3) 如果 Oracle 正在搜索配置文件的位置有 sqlnet.ora 文件,则在文件中查找 names.directory_path= 行。如果找到,它需要看起来像这样:

    names.directory_path = (TNSNAMES, EZCONNECT)
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 2022-09-27
      • 2013-04-19
      • 1970-01-01
      • 2018-08-30
      • 2012-08-24
      相关资源
      最近更新 更多