Welcome to oracle_awen's archive blog
首先在tnsname里面添加远程数据库的信息如下:
yaoxu =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = yxdata)
    wink.gif
  wink.gif



在本地查看 global_name 的参数。 
SQL> show parameter global_name

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

global_name的值为FALSE,说明创建dblink的名称可以不与远程数据库的global_name相同。


SQL> create database link to_scott connect to scott identified by oracle using '
yaoxu';

数据库链接已创建。

SQL> select sysdate from dual@to_scott;

SYSDATE
--------------
07-3月 -12

SQL> select count(*) from emp@to_scott;

  COUNT(*)
----------
        15




SQL> desc emp@to_scott;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              VARCHAR2(10)
JOB                                                VARCHAR2(9)
MGR                                                NUMBER(4)
HIREDATE                                           DATE
SAL                                                NUMBER(7,2)
COMM                                               NUMBER(7,2)
DEPTNO                                             NUMBER(2)




SQL> update emp@to_scott set sal=0;

已更新15行。

SQL> rollback;

回退已完成。 

我们将本地数据库的global_name 的参数设置为TRUE
SQL> alter system set global_names=TRUE;

系统已更改。

SQL> show parameter global_name

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

SQL> create database link to_scott_test connect to scott identified by oracle us
ing 'yaoxu';

数据库链接已创建。

SQL> desc emp@to_scott_test;
ERROR:
ORA-02085: 数据库链接 TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM

所以这样就会出错,我们再创建一个dblink,名称和远程数据库的global_name一致

先登录到远程数据库查看他的global_name
C:\Documents and Settings\Administrator>sqlplus sys/oracle@yaoxu as sysdba
SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------

YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM

然后回到本地数据库,创建DBLINK
 SQL> create database link YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to scot
t identified by oracle using 'yaoxu';

数据库链接已创建。

SQL> desc emp@YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

EMPNO                                     NOT NULL NUMBER(4)
ENAME                                              VARCHAR2(10)
JOB                                                VARCHAR2(9)
MGR                                                NUMBER(4)
HIREDATE                                           DATE
SAL                                                NUMBER(7,2)
COMM                                               NUMBER(7,2)
DEPTNO                                             NUMBER(2)

查看本地所有的DBLINK
SQL> col owner for a20;
SQL> col object_name for a50;
SQL> select owner,object_name from dba_objects where object_type=upper('database
link');

OWNER                OBJECT_NAME
-------------------- --------------------------------------------------
SYS                  TO_SCOTT.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS                  TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS                  YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
添加评论

昵称 *

E-mail (防止垃圾信息,此栏留空)