熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle10Gstreams模式級復制

2013-11-13 15:52:49  來源: Oracle 

  數據庫sc_source 和 sc_dest

  要求將sc_source中的product用戶下的所有對象都復制到sc_dest上去

  准備工作

   將sc_source和sc_dest數據庫都置於歸檔模式

   如果有些表沒有主鍵為保證復制的准確性需要在源數據庫(sc_source)上配置輔助日志

   alter database add supplemental log data(primary keyunique) columns;

  目標庫設置一些參數

           job_queue_processes=
        aq_tm_processes=
        global_names=true

   創建流復制的管理用戶源目標庫都需要配置

   create tablespace streams_tbs datafile /oracle/oradata/streams_tbsdbf size M;
create user strmadmin identified by strmadmin default tablespace streams_tbs quota unlimited on streams_tbs;
grant dbaselect_catalog_role to strmadmin;

   創建數據庫連接

   sc_source
create database link connect to strmadmin identified by strmadmin using sc_dest;

sc_dest:
create database link connect to strmadmin identified by strmadmin using sc_source;

  開始配置streams

  sc_source

  

  配置捕獲進程隊列

   begin                                                   
dbms_streams_admset_up_queue(                          
  queue_table => capture_scstab                     
  queue_name  => capture_scs                        
  queue_user  => strmadmin);                          
end;                                                   
/

  sc_dest

  

  配置應用進程隊列

   begin
dbms_streams_admset_up_queue(
  queue_table => apply_scdtab
  queue_name  => apply_scd
  queue_user  => strmadmin);
end;
/

  sc_source

  

  配置捕獲進程

   begin
dbms_streams_admadd_schema_rules (
schema_name  => product
  streams_type => capture
  streams_name => capture_scstrm
  queue_name  => capture_scs
  include_dml => true
  include_ddl => true
  inclusion_rule => true);
end;
/

  配置傳播進程

   begin
dbms_streams_admadd_schema_propagation_rules (
  schema_name   => product
  streams_name   => pro_source_to_dest
  source_queue_name  => capture_scs
  destination_queue_name  => a
  include_dml   => true
  include_ddl   => true
  source_database  => );
end;
/

  sc_dest

  

  配置應用進程

   begin
dbms_streams_admadd_schema_rules (
  schema_name  => product
  streams_type  => apply
  streams_name  => apply_scdtrm
  queue_name  => apply_scd
  include_dml  => true
  include_ddl  => true
  source_database => );
end;
/

  數據的導出和導入

  sc_source

  

  先得到源庫的scn號

   select dbms_flashbackget_system_change_number() from dual;

  然後把product用戶的數據導出我采用的是expdp工具從上面得到scn號之前導出即可

   expdp product/product directory=dumpdir dumpfile=productdmp FLASHBACK_SCN=&SCN

  將導出的數據文件傳到目標數據庫sc_dest上開始導入

   impdp product/product directory=dumpdir dumpfile=productdmp

  開始streams復制

  sc_dest

  

  為了使發生錯誤時能讓應用進程繼續工作可以做下面設置

   begin
dbms_apply_admset_parameter (
  apply_name => apply_scdtrm
  parameter => disable_on_error
  value => N);
end;
/

  在目標庫上開始應用進程

   begin
dbms_apply_admstart_apply (
  apply_name => apply_scdtrm);
end;
/

  sc_source

  

  在源庫上開始捕獲進程

   begin
dbms_capture_admstart_capture (
  capture_name => capture_scstrm);
end;
/

  停止方法和刪除方法

   exec dbms_capture_admstop_capture(capture_scstrm)    停止捕獲進程
exec dbms_capture_admdrop_capture(capture_scstrm)        刪除捕獲進程

exec dbms_propagation_admstop_propagation(pro_source_to_dest)          停止傳播進程  
exec dbms_propagation_admdrop_propagation(pro_source_to_dest)        刪除傳播進程


sc_dest

exec dbms_apply_admstop_apply(apply_scdtrm)                停止應用進程
exec dbms_apply_admdrop_apply(apply_scdtrm)          刪除應用進程

  做完了以上工作即可以執行下面的操作刪除streams配置了

   exec dbms_streams_admremove_streams_configuration


From:http://tw.wingwit.com/Article/program/Oracle/201311/17445.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.