ITPUB??ì3
ITPUB论坛 » Oracle数据库管理 » 【小结】数据库链接db link,有兴趣的看看。

标题: 【小结】数据库链接db link,有兴趣的看看。
离线 melocy
资深会员


精华贴数 1
个人空间 0
技术积分 1753 (927)
社区积分 3 (19277)
注册日期 2002-9-15
论坛徽章:1
会员2006贡献徽章     
      

发表于 2005-9-1 18:09 
【小结】数据库链接db link,有兴趣的看看。

【小结】数据库链接db link,有兴趣的看看。

假设有2台oracle数据库,一台叫test,一台叫prod,都是9204。
其中test在window xp平台,prod在RHEL AS3。

test:
db_name=dba
db_domain=world
glabal_name=dba.world


prod:
db_name=ora9i
db_domain=oracle.com
global_name=ora9i.oracle.com


db link指向是: test -> prod

假设test和prod数据库上都有scott和mhung用户。
test上指向prod的网络连接串是as3。

db link 有3种类型,我这里只讨论其中两种,connected user和fixed user。
connected user,简单来说,test数据库以connected的用户来连接远程数据库(prod)。
fixed user,简单来说,test数据库以fixed(指定的)用户来连接远程数据库(prod)。

看看创建db link语法,你对这两种类型就比较清楚了。

创建fixed user的db link语法:
create databas link foo connect to scott identified by tiger using 'as3' ;

创建fixed user的db link语法:
create databas link foo using 'as3' ;

db link 的命名和global_names有关,
如果global_names=true(test),那么db link的命名要和远程数据库(prod)的global_name相同;
如果global_names=false(test),那么你可以随便命名db link。
请注意,是test数据库的global_names,与prod数据库的global_names无关。

global_name是数据库全局名称,global_name在你所管理的数据库中要保证唯一。
数据库名称是db_name。数据库名称一般都取得比较短,我的习惯一般取长度4个字符,重名概率高。
比如你有2个数据库的db_name都是prod,重名啦。
所以,oracle模仿域名搞出一个global_name,global_name=db_name+db_domain。
有了global_name,就可以实现数据库命名的全局唯一。

4种情况如下表。
   
   global_names(test数据库)   db link type
   -----------------            -------------
1. false                        connected user
2. false                        fixed user
3. true                         connected user
4. true                         fixed user


1. global_names=false, link type=connected user

scott@DBA.WORLD> create database link foo using 'as3' ;

Database link created.

Elapsed: 00:00:00.00
scott@DBA.WORLD> select * from global_name ;

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

DBA.WORLD

Elapsed: 00:00:00.00
scott@DBA.WORLD> select * from global_name@foo ;

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

ORA9I.ORACLE.COM

Elapsed: 00:00:00.04
scott@DBA.WORLD>

2. global_names=false, link type=fixed user

scott@DBA.WORLD> create database link woo connect to mhung identified by huang using 'as3' ;

Database link created.

Elapsed: 00:00:00.00
scott@DBA.WORLD> select * from global_name@woo ;

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

ORA9I.ORACLE.COM

Elapsed: 00:00:00.04
scott@DBA.WORLD> select *from global_name ;

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

DBA.WORLD

Elapsed: 00:00:00.00
scott@DBA.WORLD>

以下测试global_names=true的情况,
           
3. global_name=true, link type=connected user

sys@DBA.WORLD> show parameter global

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------
global_context_pool_size             string
global_names                         boolean     FALSE
sys@DBA.WORLD> alter system set global_names=true ;

System altered.

Elapsed: 00:00:00.01
sys@DBA.WORLD>

scott@DBA.WORLD> select * from global_name@foo ;
select * from global_name@foo
                          *
ERROR at line 1:
ORA-02085: database link FOO.WORLD connects to ORA9I.ORACLE.COM


Elapsed: 00:00:00.00
scott@DBA.WORLD>

看看,global_names=true后,刚才好好的foo,马上失效了。

现在我把global_names改为false再看看。
sys@DBA.WORLD> alter system set global_names=false ;

System altered.

Elapsed: 00:00:00.01
sys@DBA.WORLD> show parameter global_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
global_names                         boolean     FALSE
sys@DBA.WORLD>

scott@DBA.WORLD> select * from global_name@foo ;

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

ORA9I.ORACLE.COM

Elapsed: 00:00:00.00
scott@DBA.WORLD>

你看,foo又好了。

废话一堆,现在开始第3种情况测试,首先把global_names改为true。

sys@DBA.WORLD> alter system set global_names=true ;

System altered.

Elapsed: 00:00:00.01
sys@DBA.WORLD> show parameter global_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
global_names                         boolean     TRUE
sys@DBA.WORLD>

开始创建db link。
scott@DBA.WORLD> create database link ora9i.oracle.com using 'as3' ;

Database link created.

Elapsed: 00:00:00.00
scott@DBA.WORLD> select * from global_name@ora9i.oracle.com ;

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

ORA9I.ORACLE.COM

Elapsed: 00:00:00.05
scott@DBA.WORLD>

4. global_name=true, link type=fixed user
(略)。


__________________
JUST FOR FUN :)
只看该作者    顶部
离线 melocy
资深会员


精华贴数 1
个人空间 0
技术积分 1753 (927)
社区积分 3 (19277)
注册日期 2002-9-15
论坛徽章:1
会员2006贡献徽章     
      

发表于 2005-9-2 10:56 
db link是单向的。

在 test 上创建 test->prod 的 db link:

D:\oraclass\sql>sqlplus system/manager ### 以system登录

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Sep 2 10:24:44 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

system@DBA.WORLD> show parameter global_names

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

system@DBA.WORLD> select * from global_name ;

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

DBA.WORLD

Elapsed: 00:00:00.00
### 请注意global_names和global_name的区别,呵呵。

system@DBA.WORLD> create public database link ora9i.oracle.com using 'as3' ;

Database link created.

Elapsed: 00:00:00.01
### 创建db link,as3是test->prod的网络连接串

system@DBA.WORLD> @c mhung/huang 以mhung登录
mhung@DBA.WORLD>
mhung@DBA.WORLD> select * from tab@ora9i.oracle.com ;### 远程数据库

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
T                              TABLE
T_A                            SYNONYM

Elapsed: 00:00:10.04
mhung@DBA.WORLD> select * from tab ;### 本地数据库

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
EMP30                          TABLE
INT_EMP30                      TABLE
T                              TABLE

Elapsed: 00:00:00.00
mhung@DBA.WORLD> select * from t ;  ### 请注意本地表t的内容

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库

Elapsed: 00:00:00.00
mhung@DBA.WORLD>

在 prod 上创建 prod->test 的 db link:

[oracle@O9i sql]$ sqlplus system/manager  ### 以system登录

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Sep 2 10:28:30 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

system@ORA9I.ORACLE.COM> show parameter global_names  

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     TRUE
system@ORA9I.ORACLE.COM> select * from global_name ;

GLOBAL_NAME
----------------------------------------------------------------------------------------------------
ORA9I.ORACLE.COM

Elapsed: 00:00:00.03
system@ORA9I.ORACLE.COM>
system@ORA9I.ORACLE.COM>
system@ORA9I.ORACLE.COM> create public database link dba.world using 'dba' ;

Database link created.

Elapsed: 00:00:00.03
### 创建db link,dba是prod->test的网络连接串

system@ORA9I.ORACLE.COM> @c mhung/huang   ### 以mhung登录
mhung@ORA9I.ORACLE.COM>
mhung@ORA9I.ORACLE.COM> select * from tab@dba.world ;  ### 远程数据库

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
EMP30                          TABLE
INT_EMP30                      TABLE
T                              TABLE

Elapsed: 00:00:00.15
mhung@ORA9I.ORACLE.COM> select * from tab ;   ### 本地数据库

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
T                              TABLE

Elapsed: 00:00:00.01
mhung@ORA9I.ORACLE.COM> select * from t ;  ### 请注意本地表t的内容

C
--------------------
福州
begin 北伐军 ; end;
沙蝶

Elapsed: 00:00:00.01
mhung@ORA9I.ORACLE.COM>

几个demo操作:

1. prod上mhung用户创建synonym,指向mhung.t@dba.world

mhung@ORA9I.ORACLE.COM> create synonym t_test for t@dba.world ;

Synonym created.

Elapsed: 00:00:00.10
mhung@ORA9I.ORACLE.COM> select * from t_test ;

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库

Elapsed: 00:00:00.04
mhung@ORA9I.ORACLE.COM>

2. test上mhung用户,插入数据到 t_test@ora9i.oracle.com 中。
mhung@DBA.WORLD> select * from tab@ora9i.oracle.com ;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
T                              TABLE
T_TEST                         SYNONYM

Elapsed: 00:00:00.00

mhung@DBA.WORLD> select * from t_test@ora9i.oracle.com ;

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库

Elapsed: 00:00:00.04
mhung@DBA.WORLD> select *from t ;

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库
         
Elapsed: 00:00:00.00
mhung@DBA.WORLD> insert into t_test@ora9i.oracle.com values(5,'插本地') ;

1 row created.

Elapsed: 00:00:00.00
mhung@DBA.WORLD> commit;

Commit complete.

Elapsed: 00:00:00.00
mhung@DBA.WORLD> select * from t_test@ora9i.oracle.com ;

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库
         5 插本地

Elapsed: 00:00:00.00
mhung@DBA.WORLD> select *from t ;

         A B
---------- ----------
         1 燚
         2 燚燚已以
         3 1燚燚已以
         4 数据库
         5 插本地

Elapsed: 00:00:00.00
mhung@DBA.WORLD>

   ### t_test@ora9i.oracle.com是什么,就是test上mhung用户的t表。
   绕了一圈,实际上就是本地操作,呵呵。



__________________
JUST FOR FUN :)
只看该作者    顶部
离线 phiazat
高级会员


精华贴数 1
个人空间 0
技术积分 3148 (462)
社区积分 20138 (68)
注册日期 2005-3-16
论坛徽章:77
2008版在线时间2008北京奥运纪念徽章:艺术体操2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:体操2008北京奥运纪念徽章:田径2008北京奥运纪念徽章:网球
      

发表于 2005-9-2 10:58 
支持,学习ing!


__________________
〓[醉酒的恺撒]〓〓〓我的淘宝网请点击〓〓
一事无成惊逝水,半生有梦化飞烟
Myqq:7355619
Email: phiazat#gmail.com
只看该作者    顶部
离线 yuechaotian
清洁工


来自 NEU
精华贴数 0
个人空间 40
技术积分 584 (3236)
社区积分 29 (6228)
注册日期 2005-3-28
论坛徽章:4
授权会员生肖徽章2007版:鼠生肖徽章2007版:鸡ITPUB新首页上线纪念徽章  
      

发表于 2007-9-2 10:51 
两年后的同一时刻,再支持一下。


__________________
总觉得时间不够用,原来是自己把时间分散了。

blog: CLEANER
只看该作者    顶部
离线 fwei_fengwei
圆梦之旅


来自 北京
精华贴数 0
个人空间 0
技术积分 4207 (323)
社区积分 1550 (683)
注册日期 2007-5-22
论坛徽章:17
会员2007贡献徽章授权会员    
      

发表于 2007-9-3 11:16 
学习。:)


__________________
超越自我 之 圆梦之旅

Email:fwei_fengwei@163.com
----------------
提高,源于细节;精通,来自积累。

我的2008圆梦旅程  : 。。。。。。RAC安装、RAC管理、深入性能优化、AIX系统管理
只看该作者    顶部
离线 wangfans


精华贴数 3
个人空间 20
技术积分 5232 (246)
社区积分 5303 (271)
注册日期 2006-11-29
论坛徽章:45
现任管理团队成员2008北京奥运纪念徽章:艺术体操2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:排球2008北京奥运纪念徽章:赛艇2008北京奥运纪念徽章:跳水
2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:棒球每日论坛发贴之星2008北京奥运纪念徽章:垒球2008年新春纪念徽章ITPUB新首页上线纪念徽章

发表于 2007-9-3 11:48 
DBLINK是单向操作!


__________________
-------------------------------------------------------
Life is always like this !
------------------------------------------------------
My Blog||MSN: wangfans@163.com
--------------------------------------------------------
只看该作者    顶部
离线 howard_zhang
鸡肋


精华贴数 0
个人空间 106
技术积分 9202 (127)
社区积分 68 (4089)
注册日期 2006-9-15
论坛徽章:26
会员2007贡献徽章铁扇公主2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:铁人三项2008北京奥运纪念徽章:曲棍球
2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:足球生肖徽章2007版:狗生肖徽章:虎

发表于 2007-9-3 11:48 
帮顶


__________________
鸡肋食之无味,弃之可惜!学无止境~~
只看该作者    顶部
离线 tgm78
高级会员



精华贴数 0
个人空间 0
技术积分 3092 (472)
社区积分 22 (7116)
注册日期 2006-4-10
论坛徽章:4
会员2007贡献徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星  
      

发表于 2007-9-3 11:49 
学习


__________________
hello moto!
只看该作者    顶部
离线 mustapha
高级会员


来自 没的看了
精华贴数 1
个人空间 0
技术积分 5055 (256)
社区积分 81 (3759)
注册日期 2006-5-18
论坛徽章:13
会员2007贡献徽章授权会员2008北京奥运纪念徽章:沙滩排球生肖徽章2007版:猴生肖徽章2007版:鸡生肖徽章2007版:鼠
ITPUB新首页上线纪念徽章生肖徽章:虎数据库板块每日发贴之星数据库板块每日发贴之星生肖徽章:龙生肖徽章:马

发表于 2007-9-3 12:40 
呵呵,够详细,不过现在用的少了


__________________
没事就运动运动~~~~~~~~~~~~~
只看该作者    顶部
离线 jieyancai
该用户已被删除









发表于 2007-9-3 12:48  资料  个人空间  短消息  加为好友 
*** 作者被禁止或删除 内容自动屏蔽 ***
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问