| xyz's profile逍遥者寒号的小屋BlogLists | Help |
|
April, 2007 表级流复制基本操作(上)创建单源流复制数据库源数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ;
创建数据库链接CREATE DATABASE LINK "DEST" --数据库链接名,必须在netca中配置过 CONNECT TO "STREAMADMIN" --目的数据库时复制管理员 IDENTIFIED BY "STREAMADMIN" --目的数据库时复制管理员密码 USING 'DEST' ; --目的数据库名,必须在netca中配置过
创建捕捉队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$CAPQT"', storage_clause => NULL, queue_name => '"STREAMADMIN"."TEST$CAPQ"', queue_user => '');
对要复制的表实例化准备对所有要复制的表执行 DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'rep.a' supplemental_logging => 'keys'); --默认值为key,如果不指定,将采在所有相约束上启用附加日志 添加附加日志ALTER TABLE "REP"."C" ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, FOREIGN KEY, UNIQUE INDEX) COLUMNS; 创建传送进程及传输规则对所有的表执行 dbms_streams_adm.add_table_propagation_rules( --加入传送规则(自动创建传送进程) table_name => '"REP"."A"', --传送表rep.A streams_name => '', -- source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', --捕捉队列(源) destination_queue_name=>"STREAMADMIN"."TEST$APPQ"@DEST', --应用队列(目的) include_dml => TRUE, --捕捉dml include_ddl => TRUE, --捕捉dml include_tagged_lcr => TRUE, --传输带标签的LCR???? source_database => 'SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE, --加入正规则集 and_condition => NULL, -- queue_to_queue => TURE); --10.2 以后为TURE 新目标数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ; 创建应用队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$APPQT"', --队列表?? storage_clause => NULL, -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --队列名 queue_user => ''); --
创建应用进程及应用规则dbms_streams_adm.add_table_rules( --创建应用规则(自动创建应用进程) table_name => '"REP"."A"', --要应用的表 streams_type => 'APPLY', --类型 streams_name => '', -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --应用队列名 include_dml => TRUE, --包括dml include_ddl => TRUE --包括ddl include_tagged_lcr => TRUE, --标签不为空也行 source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE); --加入正规则集 从源数据库导入数据并实例化scn使用imp数据时加入参数STREAMS_INSTANTIATION=Y 或者得到源数据库的当前scn select dbms_flashback.get_system_change_number from dual;
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'rep.a', source_database_name => ' TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM ', instantiation_scn => 1234567); --scn号 设置标签 (多个应用时,结构复杂时需要)dbms_apply_adm.alter_apply( apply_name => apply_nm_dqt, --应用名称,在dba_apply_progress中查看 apply_tag => hextoraw(00)); --00为本机应用标签
添加一个新的目标节点源数据库加入数据库链接CREATE DATABASE LINK "DEST" --数据库链接名,必须在netca中配置过 CONNECT TO "STREAMADMIN" --目的数据库时复制管理员 IDENTIFIED BY "STREAMADMIN" --目的数据库时复制管理员密码 USING 'DEST' ; --目的数据库名,必须在netca中配置过 对要复制的表实例化准备对所有要复制的表执行 DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'rep.a' supplemental_logging => 'keys'); --默认值为key,如果不指定,将采在所有相约束上启用附加日志 创建传送进程及传输规则对所有的表执行 dbms_streams_adm.add_table_propagation_rules( --加入传送规则(自动创建传送进程) table_name => '"REP"."A"', --传送表rep.A streams_name => '', -- source_queue_name => '"STREAMADMIN"."TEST$CAPQ"', --捕捉队列(源) destination_queue_name=>"STREAMADMIN"."TEST$APPQ"@DEST', --应用队列(目的) include_dml => TRUE, --捕捉dml include_ddl => TRUE, --捕捉dml include_tagged_lcr => TRUE, --传输带标签的LCR???? source_database => 'SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE, -- and_condition => NULL, -- queue_to_queue => TURE); --10.2 以后为TURE 新目标数据库创建流复制管理员CREATE USER STREAMADMIN IDENTIFIED BY STREAMADMIN DEFAULT TABLESPACE USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT CONNENT TO STREAMADMIN ; GRANT DBA TO STREAMADMIN ; 创建应用队列dbms_streams_adm.set_up_queue( queue_table => '"STREAMADMIN"."TEST$APPQT"', --队列表?? storage_clause => NULL, -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --队列名 queue_user => ''); --
创建应用进程及应用规则dbms_streams_adm.add_table_rules( --创建应用规则(自动创建应用进程) table_name => '"REP"."A"', --要应用的表 streams_type => 'APPLY', --类型 streams_name => '', -- queue_name => '"STREAMADMIN"."TEST$APPQ"', --应用队列名 include_dml => TRUE, --包括dml include_ddl => TRUE --包括ddl include_tagged_lcr => TRUE, --标签不为空也行 source_database => 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM', --源数据库 inclusion_rule => TRUE); --创建并应用正规则集?? 从源数据库导入数据并实例化scn使用imp数据时加入参数STREAMS_INSTANTIATION=Y 或者得到源数据库的当前scn select dbms_flashback.get_system_change_number from dual;
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'rep.a', source_database_name => ' TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM ', instantiation_scn => 1234567); --scn号 其他: 设置标签 –多个应用时,结构复杂时需要 dbms_apply_adm.alter_apply( apply_name => apply_nm_dqt, --?? apply_tag => hextoraw(00));
TrackbacksThe trackback URL for this entry is: http://xyzhh.spaces.live.com/blog/cns!B4A8BE2681ED7440!168.trak Weblogs that reference this entry
|
|
|