访问外部数据库上的某个表时遇到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
答案 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;
您的数据库名称应该出现! 我希望这是有帮助的