這節我們將複製環境構建的稍稍複雜一點,這次不再做兩台資料庫間的複製了,再加進來一個新的資料庫,三個資料庫間同步資料。
一、 需求描述
設定條件如下:
資料庫 sid : jssweb ,jssstr 和jssbak
複製jssweb資料庫中schema:member下的usr_user到jssstr資料庫中的member下,並更名為users;
複製jssweb資料庫中schema:member下的dt_tbl1、dt_tbl2和dt_tmp三表到jssbak資料庫中的schema:member下;
全部 源庫本地捕獲 ,單向同步。
同步 DML/ DDL 操作
二、 準備工作
與前面章節相同,不再重複了。
三、 建立隊列和資料庫鏈
首先在JSSWEB操作,建立隊列表和串連到jssstr資料庫的dblink:
SQL> conn strmadmin/strmadmin
Connected.
JSSWEB> set sqlprompt "JSSWEB> "
JSSWEB> exec dbms_streams_adm.set_up_queue();
PL/SQL procedure successfully completed.
JSSWEB> create database link jssstr connect to strmadmin identified by strmadmin using ¨jssstr_172.25.13.231¨;
Database link created.
JSSWEB> select sysdate from dual@jssstr;
SYSDATE
--------------
24-3 月 -09
JSSSTR 端操作,建立隊列表和串連到test08資料庫的dblink:
SQL> conn strmadmin/strmadmin
Connected.
JSSSTR> set sqlprompt "JSSSTR> "
JSSSTR> exec dbms_streams_adm.set_up_queue();
PL/SQL procedure successfully completed.
JSSSTR> create database link jssbak connect to strmadmin identified by strmadmin using ¨jssbak_172.25.13.227¨;
Database link created.
JSSSTR> select sysdate from dual@jssbak;
SYSDATE
------------
24-MAR-09
最後在JSSBAK端操作,建立隊列表和串連到jssweb資料庫的dblink(為了後面執行impdp)
SQL> set sqlprompt "JSSBAK> "
JSSBAK> conn strmadmin/strmadmin
Connected.
JSSBAK> exec dbms_streams_adm.set_up_queue;
PL/SQL procedure successfully completed.
JSSBAK> create database link jssweb connect to strmadmin identified by strmadmin using ¨jssweb_172.25.13.229¨;
Database link created.
JSSBAK> select sysdate from dual@jssweb;
SYSDATE
------------
24-MAR-09
由於JSSBAK為建立庫,因此我們建立一個新的使用者和資料表空間,用來存放複製的資料:
JSSBAK> create tablespace webdata datafile ¨ /data/ oracle/ oradata/jss bak / webdata01.ora¨ size 200m;
Tablespace created.
JSSBAK> create user member identified by member default tablespace webdata quota unlimited on webdata;
User created.
JSSBAK> grant connect,resource to member;
Grant succeeded.
JSSBAK> revoke unlimited tablespace from member;
Revoke succeeded.
四、 簡單方式配置複製環境
一般有兩種方式配置,一種是通過DBMS_CAPTURE_ADM、DBMS_PROPAGATION_ADM、DBMS_APPLY_ADM幾個包分別建立捕獲、傳播和應用進程,相對來說更加靈活,但是操作比較複雜,另外一種就是直接藉助DBMS_STREAMS_ADM包建立,這種方式相對比較簡單,這裡我們示範通過這種方式建立。
另外,本章中使用的環境延續了前面章節,初始化環境部分不再重複,如果你沒有瀏覽本系列的其它文章,直接閱讀本篇過程中無法理解部分資料來源,建議首先閱讀前面部分相關章節。
下列操作如非特別說明,均是以strmadmin身份執行。
1、 Jssweb 端配置propagation進程
JSSWEB> BEGIN
2 DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
3 schema_name => ¨member¨,
4 streams_name => ¨web_to_str¨,
5 source_queue_name => ¨strmadmin.streams_queue¨,
6 destination_queue_name => ¨strmadmin.streams_queue@jssstr.jss.cn¨,
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/