ITPub博客

首页 > Linux操作系统 > Linux操作系统 > STREAMS笔记(1) step by step 创建一个Streams复制环境

STREAMS笔记(1) step by step 创建一个Streams复制环境

原创 Linux操作系统 作者:westzq1984 时间:2013-06-04 21:56:20 0 删除 编辑
--------------------------------------
1.在源上创建一个队列
--------------------------------------
BEGIN
  dbms_streams_adm.set_up_queue(
    queue_table => 'STRMADMIN.O11203_CTAIS2_CAPT$1',
    storage_clause => NULL,
    queue_name => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',
    queue_user => '');
END;
/

--------------------------------------
2.创建一个Propagation
--------------------------------------

BEGIN
    DBMS_PROPAGATION_ADM.CREATE_PROPAGATION(
        propagation_name    => 'O11203_CTAIS2_PRO$1',        
        source_queue        => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',    
        destination_queue   => 'STRMADMIN.QUERY_CTAIS2_APPQ$1',    
        destination_dblink  => 'QUERY',          
        queue_to_queue      => TRUE);                       
END;
/

--------------------------------------
3.为Propagation添加一个rule
--------------------------------------
BEGIN
  dbms_streams_adm.add_table_propagation_rules(
   table_name             => 'CTAIS2.T_STREAMS',                     
   streams_name           => 'O11203_CTAIS2_PRO$1',    
   source_queue_name      => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',   
   destination_queue_name => 'STRMADMIN.QUERY_CTAIS2_APPQ$1@QUERY',    
   include_dml            => TRUE,                               
   include_ddl            => TRUE,                               
   include_tagged_lcr     => FALSE,                              
   source_database        => NULL,                               
   inclusion_rule         => TRUE,
   and_condition          => NULL,
   queue_to_queue         => TRUE);
END;
/

--------------------------------------
4.先DISABLE掉这个Propagation JOB
--------------------------------------
BEGIN
  dbms_aqadm.disable_propagation_schedule(
    queue_name => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',
    destination => 'QUERY',
    destination_queue => 'STRMADMIN.QUERY_CTAIS2_APPQ$1');
END;
/

--------------------------------------
5.创建Capture
--------------------------------------
BEGIN
    DBMS_CAPTURE_ADM.CREATE_CAPTURE(
        queue_name       => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',   
        capture_name     => 'O11203_CTAIS2_CAP$1',            
        start_scn        => NULL,              
        source_database  => NULL,                        
        first_scn        => NULL);                       
END;
/

--------------------------------------
6.为Capture添加一个rule
--------------------------------------
BEGIN
    DBMS_STREAMS_ADM.ADD_TABLE_RULES(
        table_name          => 'CTAIS2.T_STREAMS',            
        streams_type        => 'CAPTURE',                 
        streams_name        => 'O11203_CTAIS2_CAP$1',          
        queue_name          => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',
        include_dml         => TRUE,                      
        include_ddl         => TRUE,                      
        include_tagged_lcr  => FALSE,                     
        source_database     => NULL,                      
        inclusion_rule      => TRUE);
END;
/     

这个动作会自动执行DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION('CTAIS2.T_STREAMS','KEYS');
这个动作会自动设置初始化的SCN
CAPTURE对于这个对象,从该初始化SCN开始捕获

select * from DBA_CAPTURE_PREPARED_TABLES

TABLE_OWNER                    TABLE_NAME                            SCN
------------------------------ ------------------------------ ----------
TIMESTAMP SUPPLEME SUPPLEME SUPPLEME SUPPLEME
--------- -------- -------- -------- --------
CTAIS2                         T_STREAMS                         2285482
04-JUN-13 IMPLICIT IMPLICIT IMPLICIT NO

--------------------------------------
7.启动捕获进程
--------------------------------------
BEGIN
  dbms_capture_adm.start_capture(
    capture_name => 'O11203_CTAIS2_CAP$1');
END;
/


--------------------------------------
8.在目标上执行初始化动作
--------------------------------------
impdp strmadmin/oracle NETWORK_LINK=o11203 tables=CTAIS2.T_STREAMS STREAMS_CONFIGURATION=YES FLASHBACK_SCN=2285482

STREAMS_CONFIGURATION默认就是YES
如果STREAMS_CONFIGURATION为YES,FLASHBACK_SCN可以不指定
如果STREAMS_CONFIGURATION为NO,FLASHBACK_SCN指定为源上初始化SCN后的SCN

Apply进程,从该SCN开始应用,低于该INSTANTIATION_SCN和IGNORE_SCN的LCR将忽略

如果STREAMS_CONFIGURATION为YES,就不需要执行下面步骤,设置目标上的SCN
如果为NO,需要设置instantiation_scn为FLASHBACK_SCN
BEGIN
  dbms_apply_adm.set_table_instantiation_scn(
    source_object_name=> 'CTAIS2.T_STREAMS',
    source_database_name => 'o11203',
    instantiation_scn => 2285482,
    apply_database_link => NULL);
END;
/

select * from dba_apply_instantiated_objects

--------------------------------------
9.目标上创建队列
--------------------------------------
BEGIN
  dbms_streams_adm.set_up_queue(
    queue_table => 'STRMADMIN.QUERY_CTAIS2_APPT$1',
    storage_clause => NULL,
    queue_name => 'STRMADMIN.QUERY_CTAIS2_APPQ$1',
    queue_user => '');
END;
/

--------------------------------------
10.创建APPLY
--------------------------------------
BEGIN
    DBMS_APPLY_ADM.CREATE_APPLY(
        queue_name                             => 'STRMADMIN.QUERY_CTAIS2_APPQ$1',
        apply_name                          => 'QUERY_CTAIS2_APP$1',
        message_handler                 => NULL,
        ddl_handler             => NULL,
        apply_user              => 'CTAIS2',                   
        apply_database_link     => NULL,                   
        apply_tag               => HEXTORAW('5'),          
        apply_captured          => TRUE,                   
        precommit_handler       => NULL,                   
        negative_rule_set_name  => NULL,                   
        source_database         => 'O11203');    
END;
/

--------------------------------------
11.为APPLY添加RULE
--------------------------------------
BEGIN
    DBMS_STREAMS_ADM.ADD_TABLE_RULES(
        table_name          => 'CTAIS2.T_STREAMS',            
        streams_type        => 'APPLY',                 
        streams_name        => 'QUERY_CTAIS2_APP$1',          
        queue_name          => 'STRMADMIN.QUERY_CTAIS2_APPQ$1',
        include_dml         => TRUE,                      
        include_ddl         => TRUE,                      
        include_tagged_lcr  => FALSE,                     
        source_database     => NULL,                      
        inclusion_rule      => TRUE);
END;
/     

--------------------------------------
12.启动APPLY
--------------------------------------
BEGIN
 dbms_apply_adm.start_apply('QUERY_CTAIS2_APP$1');
END;
/

--------------------------------------
13.启动源上的Propagation JOB
--------------------------------------
BEGIN
  dbms_aqadm.enable_propagation_schedule(
    queue_name => 'STRMADMIN.O11203_CTAIS2_CAPQ$1',
    destination => 'QUERY',
    destination_queue => 'STRMADMIN.QUERY_CTAIS2_APPQ$1');
END;
/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8242091/viewspace-762991/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-06

  • 博文量
    251
  • 访问量
    1042161