在创建dblink的过程中有以下几点需要注意.如果global_names 为true
那么在创建dblink时需要带oracle默认的域名:否则的话将会报类似于以下的错误:
ORA-02085 "database link HO.REGRESS.RDBMS.DEV.US.ORACLE.COM connects to HO.WORLD解决方法是:
把dblink name创建为ho.world(当然你那里可能会有不同的名称)如果global_names为false
那么按照你自己的名称来创建.我这里的环境:
SQL> show parameter global_names;NAME TYPE VALUE
------------------------------------ ----------- -------------------
global_names boolean true
SQL> create PUBLIC database link pub connect to sa identified by "123" using 'hs_sql';SQL> select * from test@pub;
select * from test@pub
*
第 1 行出现错误:
ORA-02085: 数据库链接 PUB.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到 HO.WORLD
SQL> create public database link HO.WORLD connect to sa identified by "123" using 'hs_sql';数据库链接已创建。SQL> SELECT * FROM [email protected];未选定行SQL> alter system set global_names=false;系统已更改。SQL> SQL> create public database link HO connect to sa identified by "123" using 'hs_sql';数据库链接已创建。SQL> desc test@ho;
名称 
--------------------------------------------------------------------------------------
id 
name 

解决方案 »

  1.   

    我的情况是所有服务器的global_names=false,在win2003server上的oracle服务器上建工作站的数据库链路,运行正常,而在两台工作站之间建数据库链路出错,在OEMC下创建数据库链路后,执行命令select * from [email protected];后出现
    select * from [email protected]
                      *
    ERROR 位于第 1 行:
    ORA-02019: connection description for remote database not found错误,测试创建数据库链路结果为"数据库链接未处于活动状态",配置sql*net串连接均正常,急死啦!请大虾们快快帮忙!谢谢!!!
      

  2.   

    DB link name 在使用的时候不用加后缀!
      

  3.   

    我的问题主要在SUN890工作站上的tnsnames.ora上配置的串中
    mysn =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = sun880)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

    CONNECT_DATA后面的=,丢失所至。
    现在数据库链路创建OK啦。
    总结如下:
    如果想在一台服务器上访问另一台服务器上的数据,首先在这台服务器中配置另一台服务器的连接串,然后,在$tnsping orcl如果测试成功,在这台服务器上用如下语句
    CREATE PUBLIC DATABASE LINK "SCOTT.US.ORACLE.COM"  CONNECT TO "SCOTT" 
        IDENTIFIED BY "********" USING 'mysn'; 创建即可。