在我現在的電腦中我有兩個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
沒有留言:
張貼留言