Oracle數(shù)據(jù)庫同步探討
需求:
現(xiàn)有兩臺oracle數(shù)據(jù)庫服務(wù)器A和B(A,B可以是在同一內(nèi)網(wǎng),也可以是在互聯(lián)網(wǎng)上的兩臺獨立機器)。A和B里有都有testable表,結(jié)構(gòu)一樣,現(xiàn)需要當(dāng)A庫中的testable表變化時,B庫里的testable也相應(yīng)變化數(shù)據(jù)
我的解決方案:
在A中建立到B庫的鏈接,然后對要同步的表做一個同義synonym,最后建一個觸發(fā)器,就可以完成了。當(dāng)然,你所用的當(dāng)前的用戶要有相應(yīng)的權(quán)限去執(zhí)行這些操作。
當(dāng)從A向B同步數(shù)據(jù)時,應(yīng)該在A上做所有的設(shè)置:
1,為保證連接到另一臺遠程服務(wù)器的數(shù)據(jù)庫,你需要建立一個DB Link,但是,這里要注意語法格式,using +"connect string",這個connect string應(yīng)該是存在于oracle服務(wù)器的TNSNAMES.ORA文件里,監(jiān)聽程序?qū)倪@里獲取遠方服務(wù)器
的ip地址等信息,我定義了一個'251'的connect string如下:
251 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.251)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = mychoice) ) ) |
2,然后就可以定義DB Link了:
create public database link TEST2.US.ORACLE.COM connect to 用戶名 identified by "密碼" using '251'; |
3,建立synonym(同義)
create or replace synonym TEST01 |
建立完了以后,你可以通過:
select * from test01
上面的語句相當(dāng)于在B服務(wù)器上執(zhí)行:
select * from testable
4,封建觸發(fā)器:
當(dāng)A中的testable表變化時(這里只考慮插入操作),就會觸發(fā)向遠程的B庫的testable也插入相應(yīng)的數(shù)據(jù):
create or replace trigger rtest after insert on testable for each row begin insert into test01 (something) values (:new.something); |
ok,現(xiàn)在我們可以測試一下,你在A庫中往testable表中插入一條記錄,看看B庫中是不是也相應(yīng)的增加了
方法二:
posted on 2008-01-06 15:14 Java Fly 閱讀(1818) 評論(3) 編輯 收藏 所屬分類: Oracle命題