Database Link使用

531079521發表於2015-05-08
環境說明:
 本地資料庫
     ip:192.168.1.35
 遠端資料庫
    ip:192.168.1.135

實驗目的:
 本地資料庫scott使用者訪問遠端資料庫test使用者下的t_link表
1、遠端資料庫建立表t_link表
  SQL> create table t_link(id int,name varchar(10));
表已建立。
SQL> insert into t_link values(1,'a');
已建立 1 行。
SQL> insert into t_link values(2,'b');
已建立 1 行。
SQL> insert into t_link values(3,'c');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t_link;
        ID NAME
---------- ----------
         1 a
         2 b
         3 c
2、在本地資料庫配置好網路服務名連線遠端資料庫
  AUX =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.135)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = kk)
    )
  )

3.在本地資料庫soctt使用者建立dblink
  scott要用create database link許可權
 SQL> conn / as sysdba
已連線。
SQL> grant create database link to scott;
授權成功。

SQL> conn scott/tiger
已連線。
SQL> create database link test_link connect to test identified by test using 'aux';
資料庫連結已建立。

檢視建立的db link
SQL> select *from user_db_links;
DB_LINK                                            USERNAME                       PASSWORD               HOST       CREATED
-------------------------------------------------- ------------------------------ ------------------------------ ---------- ------------
TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM          TEST                                                  aux        25-1月 -15

以sys檢視
SQL> select * from dba_db_links;

OWNER      DB_LINK                                            USERNAME HOST       CREATED
---------- -------------------------------------------------- -------- ---------- ---------------
SCOTT      TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM          TEST     aux        25-JAN-15
4.本地scott使用者訪問遠端資料庫中的表
SQL> select *from t_link@test_link;
        ID NAME
---------- ----------
         1 a
         2 b
         3 c
以test使用者訪問報錯
SQL> select *from t_link@test_link;
select *from t_link@test_link
                    *
ERROR at line 1:
ORA-02019: connection description for remote database not found
因為以上建立的是私有db link,其他使用者不能使用,如果想test使用者也能使用,則需要建立公有db link,我們再建立一個公有db link

SQL> conn / as sysdba   
Connected.
SQL> create public database link p_test_link connect to test identified by test using 'aux';  --建立公有db link
Database link created.
SQL> select * from dba_db_links;

OWNER      DB_LINK                                            USERNAME HOST       CREATED
---------- -------------------------------------------------- -------- ---------- ------------
PUBLIC     P_TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM        TEST     aux        25-JAN-15
SCOTT      TEST_LINK.REGRESS.RDBMS.DEV.US.ORACLE.COM          TEST     aux        25-JAN-15

SQL> conn test/test
Connected.
SQL> select * from user_db_links;
no rows selected
SQL> select *from t_link@p_test_link;
        ID NAME
---------- ------------------------------
         1 a
         2 b
         3 c
scott使用者
SQL> select *from t_link@p_test_link;
        ID NAME
---------- ----------------------------
         1 a
         2 b
         3 c
建立公有db link,本地所有使用者都能使用這個公有db link

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28841119/viewspace-1629949/,如需轉載,請註明出處,否則將追究法律責任。

相關文章