我在处理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.   

    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在哪里?上面可没看见!你要用服务名啊!这里用用户名什么意思吗?
      

  2.   

    我也常常遇到这样的怪怪的问题!当用pl/sql连oracle时候常会这样提示,但我重复这样操作N次后就能联上!怪啊
      

  3.   

    1、首先确认要链接的目标服务器的监听程序是否已经打开。
    2、在你的电脑上cmd后如入netca后根据提示建一个服务连接到目标服务器
    3、再利用第二步建立的服务名做dblink连接到目标服务器。这是从你的电脑连接到数据库服务器的方法,如果要从数据库服务器连接到你的电脑,反向操作。大致就是这样了,照着做没问题的。
      

  4.   

    其实很简单的啊。看下边
    create database link mycc   connect to mycc identified by mycc   using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.99)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = testdb) ) )'; select sysdate from dual@mycc