我在处理dblink时 起先在我的电脑上测试的很好!!! TESTDV = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = testDV) 
    ) 
  ) REPORTDB = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = REPORTDB) 
    ) 
  ) 建立dblink 也很正常 
create database link dbvoice 
  connect to icd identified by icd 
  using 'voice'; 而且 查表也可以查出: select sysdate from dual@dbvoice; 但是昨天晚上 部署版本的时候突然遇到问题了 我建立dblink显示已经成功了,但是在查询表的时候却报“ora-12154:tns无法处理服务器名”这样的错误。我那个连接的两个库 在两个不同的服务器上 一个在  10.118.16.4上 一个在  10.118.16.11上 查询了好多资料有的说 
网址如下:http://topic.csdn.net/t/20040312/14/2836493.html “要在相应的数据库在服务器上建立相应的连接:  
  如A数据库在A1服务器上,B数据库在b1服务器上,如果要在A数据库中连接B数据库,则要在服务器A1上建立相应的tnsnames配置项如  
  a_to_b  =  
      (DESCRIPTION  =  
          (ADDRESS_LIST  =  
              (ADDRESS  =  (PROTOCOL  =  TCP)(HOST  =  a2服务器的IP)(PORT  =  1521))  
          )  
          (CONNECT_DATA  =  
              (SERVICE_NAME  =  b数据库的服务名)        )  
      )  
  然后建立相应dblink  
    
  容易犯的错误是:  
  在自已的客户端的tnsname.ora中建立连接,而没有在A数据库所有的服务器A1的tnsname.ora中建立连接” 可我那边的配置也都没有问题:如下 YCWH = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.16.4)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = ycwh) 
    ) 
  ) 
VOICE = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.16.4)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = VOICE) 
    ) 
  ) 
DEV = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.112.16.11)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME = DEV) 
    ) 
  ) 
我自己在dev上建立的库 
dblink如下: create database link dbvoice 
  connect to vvv identified by vvv 
  using 'voice'; 
  create database link dbycwh 
  connect to ddd identified by ddd 
  using 'ycwh'; 然后查询:select sysdate from dual@dbycwh;或者 select sysdate from dual@dbvoice; 但就是不成功!!!是不是 网络连接的问题?还是2台服务器之间的问题需要建立什么连接等? 请高手赐教!!! 

解决方案 »

  1.   

    你去看看那两个数据库的监听是否启动或者看看listener.ora中是否配置那两个数据库的监听
    比如:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = bruboss)
          (ORACLE_HOME = /ha/oracle)
          (SID_NAME = VOICE)
        )
    应该是这个问题吧!!!
      

  2.   


    create database link dbvoice
      connect to vvv identified by vvv
      using 'voice';
      create database link dbycwh
      connect to ddd identified by ddd
      using 'ycwh'; 
    \\\vvv,ddd分别是啥?请用service_name或者SID试试看?
      

  3.   

    orcl = 
               (DESCRIPTION =
                 (ADDRESS_LIST =
                   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.139 )(PORT = 1521))
                 )
                 (CONNECT_DATA =
                   (SERVICE_NAME = orcl )
                 )
               )我是这么配置的 连接的IP为192.168.1.130 没问题的啊  
      

  4.   

    lsnrctl start
    试试。看起了没