1. 环境搭建
设置完成之后,分区在源、目标数据库创建队列(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;