在本地开global_names=true时,如何建db_link访问远端的数据库。

在本地开global_names=true时,如何建db_link访问远端的数据库。

远端:
ys@R2> select * from global_name
  2  ;
GLOBAL_NAME
----------------------------------------------------------------------------------------------------------------------------------------------------------
R2


lisener.ora
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME=r2)
      (ORACLE_HOME = /u01/app/oracle/product/11g )
      (SID_NAME = r2)
    )
  )
GLOBAL_DBNAME

tnsname.ora
R2=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = R2)
    )
  )


本地:
create  public database link qn connect to qn identified by "qn" using 'R2'
sys@R2> alter system set global_names=false ;
System altered.
sys@R2> desc qn@qn
 Name                                               Null?    Type
 ------------------------------------------------------------------------------------- -------- ----------------------------------------------------------
 Q                                                NUMBER(38)
sys@R2> alter system set global_names=true  ;
System altered.
sys@R2> desc qn@qn
ERROR:
ORA-02085: database link QN connects to R2

[oracle@node1 ~]$ oerr ora 02085
02085, 00000, "database link %s connects to %s"
// *Cause: a database link connected to a database with a different name.
//  The connection is rejected.
// *Action: create a database link with the same name as the database it
//  connects to, or set global_names=false.





远端:10.3.4.110   r2
本地  :192.168.56.10  devdb

本地  
SQL> show parameter global_names

NAME                     TYPE                   VALUE
------------------------------------ --------------------------------- ------------------------------
global_names                 boolean                   FALSE


create  public database link qn connect to qn identified by "qn"
   using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.4.110)(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME =r2)))';

SQL> desc qn@qn
 Name                       Null?    Type
 ----------------------------------------- -------- ----------------------------
 Q                            NUMBER(38)
 
SQL> alter system set global_names=true ;

System altered.

SQL> desc qn@qn
ERROR:
ORA-02085: database link QN.WMARE.COM connects to R2

02085, 00000, "database link %s connects to %s"
// *Cause: a database link connected to a database with a different name.
//  The connection is rejected.
// *Action: create a database link with the same name as the database it
//  connects to, or set global_names=false.


drop public database link qn ;

create  public database link r2 connect to qn identified by "qn"
   using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.3.4.110)(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME =r2)))';

SQL> desc qn@r2
ERROR:
ORA-02085: database link R2.WMARE.COM connects to R2

drop public database link R2 ;

SQL> select * from global_name ;

GLOBAL_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DEVDB.WMARE.COM



目标端:
alter system set db_domain='cn' scope=spfile ;
SQL> select * from global_name ;

GLOBAL_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
R2.cn

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME =r2.cn)
      (ORACLE_HOME = /u01/app/oracle/product/11g )
      (SID_NAME = r2)
    )
  )
 

本地:
 create public database link  R2.cn                                  
      connect to qn identified by qn
      using '(DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST =10.3.4.110)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVICE_NAME = R2)
                )
              )';   


 
SQL> show parameter db_unique_name

NAME                     TYPE                   VALUE
------------------------------------ --------------------------------- ------------------------------
global_names                 boolean                   TRUE


SQL> desc qn@r2.cn
 Name                                                           Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 Q        




远端:
alter system set db_domain='WMARE.COM' scope=spfie;
startup force ;
alter database rename global_name = 'R2.wmare.com' ;

sys@R2> show parameter db_domain

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_domain                 string     wmare.com
sys@R2> select * from global_name
  2  ;

GLOBAL_NAME
----------------------------------------------------------------------------------------------------------------------------------------------------------
R2.WMARE.COM

本地:
 create public database link  R2                                
      connect to qn identified by qn
      using '(DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST =10.3.4.110)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SERVICE_NAME = R2)
                )
              )';   

SQL> show parameter db_domain

NAME                     TYPE                   VALUE
------------------------------------ --------------------------------- ------------------------------
db_domain                 string                   wmare.com

SQL> select * from global_name
  2  ;

GLOBAL_NAME
--------------------------------------------------------------------------------
DEVDB.WMARE.COM

SQL> show parameter global_names

NAME                     TYPE                   VALUE
------------------------------------ --------------------------------- ------------------------------
global_names                 boolean                   TRUE

SQL> desc qn@r2
 Name                                                           Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 Q                                                                NUMBER(38)
 
 至此ORA-02085 问题,通过修改db_domain解决
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值