Oracle 技术论坛 - Oracle 高手之路
http://www.orasql.com/bbs/

oracle DBLINK 实例
http://www.orasql.com/bbs/viewtopic.php?f=13&t=39
分页: 1 / 1

作者:  oracle_awen [ 2012-04-17 22:38 ]
文章标题 :  oracle DBLINK 实例

首先在tnsname里面添加远程数据库的信息如下:
yaoxu =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = yxdata)
)
)



在本地查看 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

分页: 1 / 1 当前时区为 UTC + 8 小时
Powered by OraSql © 2011, 2012, oracle_awen
http://www.orasql.com/