测试DB链接 - ORA-12154:TNS:无法解析指定的连接标识符

时间:2011-12-16 10:19:43

标签: database oracle oracle10g toad dblink

我知道有很多次问过这个问题,但我无法弄清楚如何将这些信息应用到我的情况中。

我有两个数据库,我正在尝试与DB LINK连接。这些是:

  • BBEGMTD1
  • OPEGMTP1.WORLD

数据库链接已由某人定义,名称为PE_DBLINK.WORLD。

我可以从我的机器访问这两个这些数据库,所以我看不出tnsnames.ora会受到什么影响。

然而,当我测试DB LINK时,我得到了名人:

  

链接:“PE_DBLINK.WORLD”错误:ORA-12154:TNS:无法解析   连接标识符指定

请指点我正确的方向,是否需要在BBEGMTD1服务器上修改tnsnames.ora?

根据@Chance评论,select * from ALL_DB_LINKS返回:

PUBLIC                        
PE_DBLINK.WORLD                                                                 
PRICING                       
OPEGMTP1.WORLD                                                                  
03-NOV-11

PUBLIC                        
EBPROJ.WORLD                                                                    
EBPROJ                        
MIDGMTP1                                                                        
17-JUN-09

MYOPEGMTP1WORLD.WORLD                                                           
PRICING                       
(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=ORA04SOUK) (PORT=1521) ) (CONNECT_D
ATA= (SERVER=dedicated) (SERVICE_NAME=OPEGMTT1) ) ) )                           
16-DEC-11

这是TOAD中的TNSNames编辑器,用于显示详细信息:

enter image description here

6 个答案:

答案 0 :(得分:4)

  1. 运行此命令以检查DBLink PE_DBLINK.WORLD的主机:

    从ALL_DB_LINKS

  2. 中选择*
  3. 检查该DBLink的HOST(即OPEGMTP1.WORLD)的tnsnames.ora。它位于(您的语言环境机器)

    %ORACLE_HOME%\网络\管理员\的tnsnames.ora

  4. 如果在tnsnames.ora中找不到,请按以下方式添加:

    OPEGMTP1.WORLD =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = ORA04SOUK)(PORT = 1521))(CONNECT_DATA =(SERVER =专用)(SERVICE_NAME = OPEGMTT)))

  5. 或者创建自己的DBLink:

    创建数据库链接MYOPEGMTP1.WORLD 连接到用户IDENTIFIED BY密码 使用'(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = ORA04SOUK)(PORT = 1521))(CONNECT_DATA =(SERVER =专用)(SERVICE_NAME = OPEGMTT))))'

答案 1 :(得分:2)

在源数据库主机上检查有效的TNS条目。 DB Link是从RDBMS主机到RDBMS主机创建的,您的PC无关紧要。

答案 2 :(得分:1)

对于我来说,它工作正常,而无需对tnsnames.ora文件进行任何其他更改:

CREATE DATABASE LINK <link> CONNECT TO <user> IDENTIFIED BY <password> USING
'(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = <port>))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = <service_name>)
    )
)';

答案 3 :(得分:0)

如果它是私人数据库链接,您需要以数据库链接所有者身份登录才能进行测试。

答案 4 :(得分:0)

如果您遇到与ORA-12514相关的任何问题。

方案:客户尝试使用DB链接从服务器B连接到服务器A,然后他得到ORA-12514错误。如果服务器A在服务器A的侦听器中没有SID_LIST_LISTENER条目(通常在升级后发生),则他可能会收到错误消息。

错误代码:ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务

解决方案:在(服务器A的)目标侦听器中添加SID_LIST_LISTENER条目

注意#你们中的大多数人都必须知道。

答案 5 :(得分:-1)

db_link是从数据库服务器到数据库服务器,而不是从客户端到服务器;所以请确保您的两个数据库服务器都有正确的服务tns条目。

数据库服务器上的 tnsnames.ora应该有服务的tns条目。