数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle10Gstreams模式级复制


发布日期:2022年07月25日
 
Oracle10Gstreams模式级复制

数据库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

上一篇:Oracle学习笔记:正则表达式

下一篇:Linux+Oracle数据库系统启动能有多快?