笔记整理~
前言:
用户既存在PUBLIC/私有DBLINK的原因如下:
原test_3用户的存储过程一直访问CWJK_3用户的DB_CWJK_3 public dblink ;
后将CWJK_3用户的数据复制到CWJK_2,test_3用户的数据复制到test_2;
test的2个用户都正常使用,想实现新用户test_2访问CWJK_2的数据,其他用户正常访问DB_CWJK_3 public的dblink;
由于test_2用户复制的test_3的存储过程,新建dblink DB_CWJK_2,,所以需要在test_2创建一个私有dblink来访问DB_CWJK_2;
测试结果:会优先选择私有DBLINK
测试如下:
SQL> SELECT * FROM dba_db_links where db_link='DB_CWJK_3';
OWNER DB_LINK USERNAME HOST CREATED
------------- ---------------- -------------- -----------------------
PUBLIC DB_CWJK_3 CWJK_3 (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.49)(PO 2014/8/13 1
SQL> SELECT * FROM user_users@db_cwjk_3;
USERNAME
-----------
CWJK_3
SQL>
SQL> conn test_2/test_2@192.168.0.49:1521/db
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as test_2@192.168.0.49:1521/db
SQL> create database link db_cwjk_3 connect to cwjk_2 identified by cwjk_2 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.49)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = fescotestdb)))';
Database link created
SQL> SELECT * FROM user_users@db_cwjk_3;
USERNAME
-----------
CWJK_2
SQL>
【源于本人笔记】 若有书写错误,表达错误,请指正...