二、 建立複製環境
建立非常簡單,只需要在目標端執行下列過程即可(如果是有多個資料表空間要複製,只需要再添加t_names(2),t_names(3)...t_names(n)即可):
JSSSTR> DECLARE
2 t_names DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET;
3 BEGIN
4 -- Tablespace names
5 t_names(1) := ¨WEBDATA¨;
6 DBMS_STREAMS_ADM.MAINTAIN_TTS(
7 tablespace_names => t_names,
8 source_directory_object => ¨mydt_source¨,
9 destination_directory_object => ¨mydt_dest¨,
10 source_database => ¨jssweb.jss.cn¨,
11 destination_database => ¨jssstr.jss.cn¨,
12 dump_file_name => ¨webdt_rep.dmp¨,
13 perform_actions => true,
1 4 include_ddl => true);
1 5 END;
1 6 /
PL/SQL 過程已成功完成。
由於我們採用的下遊捕獲,因此capture/propagation/apply進程都是在目標端運行,查詢資料字典返回資訊如下:
JSSSTR> conn strmadmin/strmadmin
已串連。
JSSSTR> select capture_name,status,capture_type from dba_capture;
CAPTURE_NAME STATUS CAPTURE_TY
------------------------------ -------- ----------
JSSWEB$CAP ENABLED DOWNSTREAM
JSSSTR> select propagation_name,status from dba_propagation;
PROPAGATION_NAME STATUS
------------------------------ --------
PROPAGATION$_75 ENABLED
JSSSTR> select apply_name,status from dba_apply;
APPLY_NAME STATUS
------------------------------ --------
APPLY$_JSSWEB_82 ENABLED
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/
三、 測試一下
首先在源端插入一條記錄,然後再增加一列:
JSSWEB> insert into member.dt_tbl1 values (101,¨a¨);
1 row created.
JSSWEB> alter table member.dt_tbl1 add (vl varchar2(20));
Table altered.
JSSWEB> alter system switch logfile;
System altered.
轉到目標端看一看:
JSSSTR> select count(0) from dt_tbl1;
COUNT(0)
----------
101
JSSSTR> desc dt_tbl1;
名稱 是否為空白? 類型
---------------------------------- -------- -------------------------------
ID NOT NULL NUMBER
NAME NOT NULL VARCHAR2(30)
VL VARCHAR2(20)
OK ,成功樂:)
四、 移除複製環境
與前章全庫級複製中方式一模一樣,這裡就不重複示範了。僅提示一點,這裡我們配置了下遊捕獲,在移除了streams配置環境後,不要忘了在源端修改log_archive_dest_n參數,去掉歸檔日誌的發送。
作者:51cto部落格 Oracle小混子