Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2595607
  • 博文数量: 2110
  • 博客积分: 18861
  • 博客等级: 上将
  • 技术积分: 24420
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:23
文章分类

全部博文(2110)

文章存档

2011年(139)

2010年(1971)

我的朋友

分类: Oracle

2010-02-12 04:30:05

 数据库:sc_source 和 sc_dest

  要求:将sc_source中的product用户下的所有对象都复制到sc_dest上去

  一,准备工作:

  1.1 将sc_source和sc_dest数据库都置于归档模式

  1.2 如果有些表没有主键,为保证复制的准确性,需要在源数据库(sc_source)上配置辅助日志

  alter database add supplemental log data(primary key,unique) columns;

  1.3 源,目标库设置一些参数

  job_queue_processes=4

  aq_tm_processes=4

  global_names=true

  1.4 创建流复制的管理用户

  源,目标库都需要配置

  create tablespace streams_tbs datafile '/oracle/oradata/streams_tbs01.dbf' size 1024M;

  create user strmadmin identified by strmadmin default tablespace streams_tbs quota unlimited on streams_tbs;

  grant dba,select_catalog_role to strmadmin;

  1.5 创建数据库连接

  sc_source:

  create database link sc_dest.net connect to strmadmin identified by strmadmin using 'sc_dest';

  sc_dest:

  create database link sc_source.net connect to strmadmin identified by strmadmin using 'sc_source';

  二,开始配置streams

  sc_source

  -----------------------------------

  配置捕获进程队列

  begin

  dbms_streams_adm.set_up_queue(

  queue_table => 'capture_scstab',

  queue_name  => 'capture_scs',

  queue_user  => 'strmadmin');

  end;

  /

  sc_dest

  -----------------------------------

  配置应用进程队列

  begin

  dbms_streams_adm.set_up_queue(

  queue_table => 'apply_scdtab',

  queue_name  => 'apply_scd',

  queue_user  => 'strmadmin');

  end;

  /

  sc_source

  -----------------------------------

  配置捕获进程

  begin

  dbms_streams_adm.add_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_adm.add_schema_propagation_rules (

  schema_name   => 'product',

  streams_name   => 'pro_source_to_dest',

  source_queue_name  => 'capture_scs',

  destination_queue_name  => 'apply_scd@sc_dest.net',

  include_dml   => true,

  include_ddl   => true,

  source_database  => 'sc_source.net');

  end;

  /

  sc_dest

  --------------------------------------------------------

  配置应用进程

  begin

  dbms_streams_adm.add_schema_rules (

  schema_name  => 'product',

  streams_type  => 'apply',

  streams_name  => 'apply_scdtrm',

  queue_name  => 'apply_scd',

  include_dml  => true,

  include_ddl  => true,

  source_database => 'sc_source.net');

  end;

  /

  三,数据的导出和导入

  sc_source

  -------------------------------------------------------------

  先得到源库的scn号

  select dbms_flashback.get_system_change_number() from dual;

  然后把product用户的数据导出,我采用的是expdp工具,从上面得到scn号之前导出即可

  expdp product/product directory=dumpdir dumpfile=product.dmp FLASHBACK_SCN=&SCN

  将导出的数据文件传到目标数据库sc_dest上,开始导入

  impdp product/product directory=dumpdir dumpfile=product.dmp

  四,开始streams复制

  sc_dest

  ---------------------------------------------------------------------------------------

  为了使发生错误时,能让应用进程继续工作,可以做下面设置

  begin

  dbms_apply_adm.set_parameter (

  apply_name => 'apply_scdtrm',

  parameter => 'disable_on_error',

  value => 'N');

  end;

  /

  在目标库上开始应用进程

  begin

  dbms_apply_adm.start_apply (

  apply_name => 'apply_scdtrm');

  end;

  /

  sc_source

  -------------------------------------------------------------------------------

  在源库上开始捕获进程

  begin

  dbms_capture_adm.start_capture (

  capture_name => 'capture_scstrm');

  end;

  /

  五,停止方法和删除方法

  exec dbms_capture_adm.stop_capture('capture_scstrm')    ---停止捕获进程

  exec dbms_capture_adm.drop_capture('capture_scstrm')        ---删除捕获进程

  exec dbms_propagation_adm.stop_propagation('pro_source_to_dest')          ---停止传播进程

  exec dbms_propagation_adm.drop_propagation('pro_source_to_dest')        ---删除传播进程

  sc_dest

  exec dbms_apply_adm.stop_apply('apply_scdtrm')                ---停止应用进程

  exec dbms_apply_adm.drop_apply('apply_scdtrm')          ---删除应用进程

  做完了以上工作,即可以执行下面的操作删除streams配置了

  exec dbms_streams_adm.remove_streams_configuration

阅读(252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~