異地Oracle數據庫的數據同步,行動的主要目的是在服務器甲的Oracle數據庫的A裡的表TBL_TB相關數據發生變化時,服務器乙的Oracle數據庫B中的表TBL_TB也會隨著發生相應變化.(假設兩個表的結構相同,都只含有ID,NAME兩列)。
執行步驟:
1)建立連接配置信息:在服務器甲的Oracle數據庫安裝目錄下的network/admin/tnsnames.ora添加一個連接服務器乙的連接:
- MASTER2 =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = master2)
- )
- )
假設甲的ip地址是192.168.0.1而乙的是192.168.0.2並且乙中的Oracle數據庫服務名為master2端口號為1521
2)建立一個DBLINK:
- create public database link LINKMASTER2.Oracle.COM
connect to 用戶名 --連接乙中Oracle數據庫所使用的用戶名我們這次該填寫B
identifIEd by "密碼" --密碼(雙引號不用去掉)
- using 'MASTER2';
3)建立同義詞:為了方便我們使用,我們來建立一個同義詞
- create or replace synonym TESTLINK
- for [email protected];
4)建立觸發器:
在服務器甲中的數據庫空間A下的TBL_TB下建立觸發器,負責插入同步,觸發器主體部分:
- begin
- insert into TESTLINK (id,name) values (:new.id,:new.name);
- end;
在服務器甲中的Oracle數據庫空間A下的TBL_TB下建立觸發器,負責修改同步,觸發器主體部分:
- begin
- update TESTLINK set id=:new.id,name=:new.name where id= :old.id;
- end;
假設ID列是唯一的
行動總結報告:
第2)和3)步驟,應該是在服務器甲的數據用戶A的環境下來執行的sql語句。
建立了同義詞後,就可以直接使用查詢異地數據庫的表格內容了:select * from TESTLINK ;
需要注意的是,服務器乙的防火牆一定要是關閉的,否則在建立連接的時候,會報超時錯誤。