Streams实践之单表复制(单向复制)

1. 环境搭建

  参考Streams那些事之初始化参数设置

  设置完成之后,分区在源、目标数据库创建队列(Strmadmin登录)

  sql> exec dbms_streams_adm.set_up_queue();

2. 配置复制过程

1). 源数据库 - 创建捕获规则

sql> begin

    dbms_streams_adm.add_table_rules(
    table_name=>'scott.emp',
    streams_type=>'capture',
    streams_name=>'capture_stream',
    queue_name=>'strmadmin.streams_queue',
    include_dml=>true,
    include_ddl=>true,
    inclusion_rule=>true);
   end;
  /

2). 源数据库 - 创建传播规则

sql> begin
    dbms_streams_adm.add_table_propagation_rules(
    table_name=>'scott.emp',
    streams_name=>'source_to_target',
    source_queue_name=>'strmadmin.streams_queue',
    destination_queue_name=>'strmadmin.streams_queue@auxi.jss.cn',
    include_dml=>true,
    include_ddl=>true,
    source_database=>'orcl.jss.cn',
    inclusion_rule=>true,
    queue_to_queue=>true);
   end;
  /
-- 查询capture的状态 sql> select capture_name, status from dba_capture;

3). Target 数据库 - 创建应用规则

sql> begin
    dbms_streams_adm.add_table_rules(
    table_name=>'scott.emp',
    streams_type=>'apply',
    streams_name=>'apply_stream',
    queue_name=>'strmadmin.streams_queue',
    include_dml=>true;
    include_ddl =>true;
    source_database => 'orcl.jss.cn',
    inclusion_rule=>true);
   end;
   /

4). Target 数据库 - 设置起始应用的scn值

sql> declare
    iscn NUMBER;
    begin
    iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
    dbms_apply_adm.set_table_instantiation_scn@auxi.jss.cn(
    source_object_name=>'scott.emp',
    source_database_name=>'orcl.jss.cn',
    instantiation_sc=>iscn);
  end;
  /

5). Target数据库 - 启动应用进程

sql> exec dbms_apply_adm.start_apply('apply_stream');

6). Source数据库 - 启动捕获进程

sql> exec dbms_capture_adm.start_capture('capture_stream');

7). 配置完成,可以进行测试一下

8). 清除Streams配制

sql> exec dbms_streams_adm.remove_streams_configuration;

原文地址:https://www.cnblogs.com/landexia/p/2654751.html