ORA-12154:TNS:无法解析表上指定的连接标识符

时间:2014-09-12 02:21:51

标签: sql database oracle

访问外部数据库上的某个表时遇到TNS错误。但是当我尝试通过相同的外部数据库链接访问其他表时,它没有任何错误。

可能是什么原因造成的?

SELECT *
FROM tablename@db;

错误:

12154. 00000 -  "TNS:could not resolve the connect identifier specified"
*Cause:    A connection to a database or other service was requested using
           a connect identifier, and the connect identifier specified could not
           be resolved into a connect descriptor using one of the naming methods
           configured. For example, if the type of connect identifier used was a
           net service name then the net service name could not be found in a
           naming method repository, or the repository could not be
           located or reached.
*Action:   
           - If you are using local naming (TNSNAMES.ORA file):
           - Make sure that "TNSNAMES" is listed as one of the values of the
           NAMES.DIRECTORY_PATH parameter in the Oracle Net profile
           (SQLNET.ORA)
           - Verify that a TNSNAMES.ORA file exists and is in the proper
           directory and is accessible.
           - Check that the net service name used as the connect identifier
           exists in the TNSNAMES.ORA file.
           - Make sure there are no syntax errors anywhere in the TNSNAMES.ORA
           file.  Look for unmatched parentheses or stray characters. Errors
           in a TNSNAMES.ORA file may make it unusable.
           - If you are using directory naming:
           - Verify that "LDAP" is listed as one of the values of the
           NAMES.DIRETORY_PATH parameter in the Oracle Net profile
           (SQLNET.ORA).
           - Verify that the LDAP directory server is up and that it is
           accessible.
           - Verify that the net service name or database name used as the
           connect identifier is configured in the directory.
           - Verify that the default context being used is correct by
           specifying a fully qualified net service name or a full LDAP DN
           as the connect identifier
           - If you are using easy connect naming:
           - Verify that "EZCONNECT" is listed as one of the values of the
           NAMES.DIRETORY_PATH parameter in the Oracle Net profile
           (SQLNET.ORA).
           - Make sure the host, port and service name specified
           are correct.
           - Try enclosing the connect identifier in quote marks.
Error at Line: 2 Column: 6

1 个答案:

答案 0 :(得分:0)

首先从您的Oracle实例所在的主机尝试获取db_link配置中使用的oracle实例。

tnsping SID/TNS Alias

如果你喜欢

TNS-03505: Failed to resolve name

你需要检查tnsnames.ora文件,看看你是否有一个tns别名指向tablename @ db所在的数据库实例。

  • 如果没有条目,请添加一个并重新测试。

  • 还要确保不需要域名,为此您需要 验证/检查位于TNS_ADMIN位置的sqlnet.ora。

  • 另外一件事,如果你在Windows上确保你正在使用 正确的客户端,也许一些密钥配置错误 REGEDIT

  • - 解决tnsping后测试你的db_link:

    从global_name @ db_link;

  • 中选择*

您的数据库名称应该出现! 我希望这是有帮助的