没有处理好服务名~在 select * from user.table1@服务名.world (或加上 服务名.域名.com.cn)

解决方案 »

  1.   

    DB LINK实际上是从数据库服务器上建立一个到另一个库的连接,所以要求数据库服务器上的TNSNAMES文件中包含对目标库的解释。
      

  2.   

    同意:KingSunSha(弱水三千)
    对,在服务器的本地,要先加入被连接服务器的解释.最简单的方法,就是在服务器的管理器的管理树中,中先添加被连接服务器.
      

  3.   

    我在数据库服务器上的tnsnames文件中已包含对数据的描述了,仍然不行。
    照chanet的方法也行不通。
      

  4.   

    以system身份检查global_names参数,如果为true
    show parameter global_names
    修改
    alter system set global_names=false;另外做之前先确保你的tnsnames配的没有问题
      

  5.   

    我试了zzok1的方法,还是无效。在我测试服务器中有目的服务器的tnsname的说明,如下所示:
    prod = 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
            (ADDRESS = 
              (PROTOCOL = TCP)
              (Host = 192.168.20.45)
              (Port = 1521)
            )
        )
        (CONNECT_DATA = (SID = prob)
        )
      )
      

  6.   

    你在sqlplus中执行 connect scott/tiger@prod 有问题吗?你创建 dblink的语句贴一下
      

  7.   

    sqlplus中执行 connect scott/tiger@prod 没问题,创建dblink的语句如下:
    create public database link mylink connect to prodUserName identified by prodPassword using 'prod'
    创建时没问题,但使用查询语句时出错,select *prodUserName.tableName@mylink,错误为ora-12560:TNS:协议适配器错误
      

  8.   

    使用如下语句查一下db_link的名字
    select db_link from user_db_links;
    看是不是mylink,如果不是,应该后面加上了 .us.com 之类,
    你先查一下,结果贴出来,我在线
      

  9.   

    谢谢!我用语句查询结果为空。但在PL/SQL DEVELOPERR DATABASE LINKS中能看到我所建的mylink,奇怪。
      

  10.   

    执行如下语句查一下,以system查
    select * from global_name;结果贴出来
      

  11.   

    以system 执行如下,把结果也贴出来
    show parameter db_name
    show parameter db_domain
      

  12.   

    db_name prod
    db_domain 2