oracle資料庫同步

來源:互聯網
上載者:User
oracle資料庫同步在兩台oracle資料庫之間測試成功,下面就總結一下吧:
需求:
現有兩台oracle資料庫伺服器A和B(A,B可以是在同一內網,也可以是在互連網上的兩台獨立機器)。A和B裡有都有testable表,結構一樣,現需要當A庫中的testable表變化時,B庫裡的testable也相應變化資料

我的解決方案:
在A中建立到B庫的連結,然後對要同步的表做一個同義synonym,最後建一個觸發器,就可以完成了。當然,你所用的當前的使用者要有相應的許可權去執行這些操作。

當從A向B同步資料時,應該在A上做所有的設定:
1,為保證串連到另一台遠程伺服器的資料庫,你需要建立一個DB Link,但是,這裡要注意文法格式,using +"connect string",這個connect string應該是存在於oracle伺服器的TNSNAMES.ORA檔案裡,監聽程式將從這裡擷取遠方伺服器
的ip地址等資訊,我定義了一個'251'的connect string如下:

251 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.251)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mychoice)
)
)

把它存到你的TNSNAMES.ORA檔案裡。

2,然後就可以定義DB Link了:

create public database link TEST2.US.ORACLE.COM
connect to 使用者名稱
identified by "密碼"
using '251';

3,建立synonym(同義)

create or replace synonym TEST01
for MYCHOICE.TESTABLE@TEST2.US.ORACLE.COM;

建立完了以後,你可以通過:
select * from test01
上面的語句相當於在B伺服器上執行:
select * from testable 

4,封建觸發器:
當A中的testable表變化時(這裡只考慮插入操作),就會觸發向遠端B庫的testable也插入相應的資料:

create or replace trigger rtest
after insert on testable
for each row
begin

 

insert into test01 (something) values (:new.something);
end;

ok,現在我們可以測試一下,你在A庫中往testable表中插入一條記錄,看看B庫中是不是也相應的增加了

http://blog.chinaunix.net/u/11317/showart_189040.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.