2013年8月8日 星期四

Oracle 11g- 使用dblink

在我現在的電腦中我有兩個Instance ORCL 與 ORCL2 ,如何做我能夠在ORCL的DB 中去存取ORCL2呢?


其實DB LINK是個很好用的東西,如果你不想要讓其他人直接去操作 ORCL2 ,或是你不想要
浪費時間在把ORCL2的資料移動到ORCL DB中,我認為DB LINK都可以幫助你

Step 1. 建立本機中的Tnsnames.ora,建立一個net service name讓你可以正常連到ORCL2 
DB中

Step2.在ORCL中輸入以下指令


SQL> create public database link Porcl2  <<Porcl2 只是一個字串
  2  connect to hr identified by hr  <<連線使用的帳號密碼 (ORCL2)
  3  using 'orcl2';    <<使用連線的 net service name  

Database link created.



Step 3.驗證

SQL> select count(*) from hr.uuu@Porcl2;            

  COUNT(*)
----------
     72410

這是在還沒連結前在ORCL2中建立的一個Table 看起來是對的


這是在ORCL2刪掉802筆資料後從ORCL這邊查詢,確定筆數也正確,這就是說一旦commit後
也可以馬上得到回應
SQL> select count(*) from hr.uuu@Porcl2;

  COUNT(*)
----------
     71568

注意事項:

a.透過dblink僅可以進行DML,但不能進行DDL

b.若包含Remote database異動的交易發生問題,RECO將負責進行rollback.


Step 4.Synonym隱藏database link字串

雖然使用db link很好用但是在操作的過程中總是覺得怪怪的,又或者是你不想讓使用者發現現在所連的這個表格是從外部的DB來的接下來就要利用Synonym來隱藏dblink字串

SQL> create synonym new_uuu for hr.uuu@Porcl2;

Synonym created.

SQL> select count(*) from new_uuu;

  COUNT(*)
----------
     71568


如果要刪除同義字的話可以用drop synonym new_uuu










沒有留言:

張貼留言