Oracle10gR2流复制操作简明手册.doc

上传人:11****ws 文档编号:4250369 上传时间:2019-10-08 格式:DOC 页数:41 大小:431.50KB
下载 相关 举报
Oracle10gR2流复制操作简明手册.doc_第1页
第1页 / 共41页
Oracle10gR2流复制操作简明手册.doc_第2页
第2页 / 共41页
Oracle10gR2流复制操作简明手册.doc_第3页
第3页 / 共41页
Oracle10gR2流复制操作简明手册.doc_第4页
第4页 / 共41页
Oracle10gR2流复制操作简明手册.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、Oracle10gR2 流复制 简明操作手册 作者:夏明伟 二 OO 八年十月 夏明伟 第 1 页 2019-9-26 目 录 一、 ORACLE10GR2 STREAMS 概念与原理 .4 二、 准备流复制环境 .5 2.1 创建流复制实验用的源目数据库 .6 2.2 源数据库置于归档模式 .6 2.3 修改初始化参数 .6 2.4 创建流复制管理员 .7 2.5 创建数据库链路 .7 三、 数据库级复制设置 .7 3.1 配置 directory 7 3.2 在源库端执行 maintain_global 8 3.3 验证复制是否成功 .9 四、 用户级复制设置 .9 4.1 在源库端创建用

2、户 .9 4.2 配置 directory 10 4.3 在存放日志文件端执行 maintain_schemas.10 4.4 验证复制是否成功 .11 五、 表级复制设置 .11 5.1 在源库端创建测试表 .11 5.2 配置 directory 11 5.3 在存放日志文件端执行 maintain_tables.11 5.4 验证复制是否成功 .12 六、 记录或字段级复制设置 .13 6.1 单向表级流复制中使用子集规则和转换规则的例子 .13 6.1.1 手工建立 Capture、 Apply 和 Propagation 流及相应的队列 13 6.1.2 案例 1:考虑队列间的迁移的

3、水平分割复制 .16 6.1.3 案例 2:不考虑队列间的迁移的水平分割复制 .17 6.1.4 案例 3:使用 Rule-base Transformation 的垂直分割复制 18 七、 流复制的监控 .21 夏明伟 第 2 页 2019-9-26 7.1 查看数据库对补充日志的设置情况 .21 7.2 获取数据库的全局名 .21 7.3 获取数据库的核心初始化参数值 .21 7.4 查询数据库中所有流的规则定义 .22 7.5 查询流进程对应的正、负向规则集和规则 .22 7.6 查询流进程是否存在空规则集 .22 7.7 查询数据库中定义的所有队列 .22 7.8 查询所有包含有转换函

4、数的规则及规则集 .22 7.9 查询所有包含有 handle 的应用及库表 23 7.10 查询所有设置了补充日志的表 .23 7.11 查询所有设置了补充日志的列 .23 7.12 查询流复制的警告信息 .23 7.13 查询与流有关的数据对象的建立时间 .23 7.14 检查执行 MAINTAIN_TABLE|SCHEMA|GLOBAL脚本的错误语句 23 7.15 检查执行 MAINTAIN_TABLE|SCHEMA|GLOBAL脚本时的错误信息 23 7.16 检查 MAINTAIN 脚本的每一步 forward 语句和 undo 语句及状态 23 7.17 查询所有队列当前缓存的记

5、录数及累计入列记录数 .24 7.18 查询流复制不支持的表 .24 7.19 查询流复制处理的数据量 .24 7.20 查询已定义的捕获流状态及对应的捕获规则 .24 7.21 查询已定义的捕获进程的状态 .24 7.22 查询捕获进程中的 SCN 情况及状态和错误信息 .24 7.23 查询捕获进程的参数设置情况 .25 7.24 查询为捕获进程注册的日志文件 .25 7.25 查询被捕获的表及其上补充日志的设置情况 .25 7.26 查询被捕获的用户及其上补充日志的设置情况 .25 7.27 查询被捕获的数据库及其上补充日志的设置情况 .25 7.28 查询定义的传播流状态及对应的传播规

6、则 .25 7.29 查询定义的应用流状态及对应的应用规则 .25 7.30 查询定义的应用进程的状态 .25 7.31 查看应用进程的参数值 .26 7.32 查询应用进程的最新应用时间 .26 7.33 查询流应用时的报错信息 .26 7.34 查询表级序列化的 SCN 值 .26 7.35 查询数据库、用户级序列化的 SCN 值 .26 7.36 待定 .26 八、 流复制的维护 .27 8.1 启动 Apply,Propagation 和 Capture 进程的语句 27 8.2 停止 Apply,Propagation 和 Capture 进程的语句 27 8.3 删除 Apply,

7、Propagation 和 Capture 流及队列和相应的规则集和规则的语句 27 8.4 在本地数据库中清除整个流配置 .28 8.5 数据库级实例化过程 .28 夏明伟 第 3 页 2019-9-26 8.6 用户级实例化过程 .28 8.7 库表级实例化过程 .29 8.8 用 rman 进行数据库复制 29 8.9 修改应用进程参数的方法 .30 8.10 调整捕获进程的并行度 .30 8.11 调整 LogMiner 使用的内存空间 30 8.12 调整检查点频率 .31 8.13 优化应用时的 update 语句 .31 8.14 通过 MAINTAIN 脚本自动创建流复制失败后

8、断点续建的方法 31 8.15 通过 MAINTAIN 脚本自动创建流复制失败后回退的方法 31 8.16 为日志挖掘建立独立的表空间 .31 8.17 在源库端建立心跳表的方法 .31 8.18 智能启动某流进程的例子 .31 8.19 清除指定应用进程的错误队列 .32 8.20 清除错误队列中指定应用事务的错误 .32 8.21 重新应用错误队列中指定的出错事务 .32 8.22 重新应用错误队列中所有出错事务 .32 8.23 查询应用错误队列中所有错误记录的值的方法 .32 九、 补充知识 .37 9.1 规则集和流客户端行为一览表 .37 9.2 如何查看归档日志中的内容 .37

9、夏明伟 第 4 页 2019-9-26 一、 Oracle10gR2 Streams 概念与原理 Streams 的原理其实很简单,通过 logmnr 技术从 oracle 的 10g 中解析出数据,然后传递到目标库并应用, 从而将源库的数据复制到目标库。 整个的复制过程可以分成三个步骤:捕获(capture),传播(propagation)和应用(apply),利用高级队列(advance queue)来将这三个步骤的数据串起来,通过在步骤中定义不同的规则(rule) 来控制需要复制的数据。复制可以基 于全库,基于表空间,基于用户或者基于表,具有相当大的灵活性。 捕获进程可以直接在源库捕获日

10、志,也可以先将日志(归档日志或者联机日志) 传递另外的库中进行捕获, 这就是本地捕获(local capture)和异地捕获(downstream capture)。对于异地捕获,根据是传递归档日志还是联机日 志,可以分为普通的异地捕获和实时异地捕获。日志的传递其实和 DataGuard 中是一样的机制。 流复制的简单过程描述如下: 首先捕获进程从日志解析出数据,封装在一个个的逻辑改变记录(LCR:logical change record)中,将这些 lcr 压进捕获队列中,然后传播进程从捕获队列取得数据压进应用队列中,最后应用进程从应用队列取得 LCR 并应 用到目标库中。LCR 可以分为

11、 row LCR(DML 操作记录)和 DDL LCR(DDL 操作记录),所以 streams 复制可以支 夏明伟 第 5 页 2019-9-26 持 DDL 操作的复制。 Streams 复制需要先进行一次初始化建立基线,然后在此基础上复制增量数据。对于全库的初始化,可以使 用 RMAN。表空间复制的初始化可以使用 transport tablespace,而对于用户复制和表复制,则可以使用 exp/imp 或者 expdb/impdp。 Streams 配置和管理的相关 package dbms_steams_adm dbms_capture_adm dbms_propagation_a

12、dm dbms_apply_adm dbms_rule_adm Streams 主要相关数据字典 dba_streams_administrator dba_capture dba_capture_parameters dba_propagation dba_registered_archived_log dba_apply dba_apply_confict_columns dba_apply_dml_handlers dba_apply_enqueue dba_apply_error dba_apply_execute dba_apply_parameters dba_apply_prog

13、ress dba_rules dba_rule_sets dba_rule_set_rules V$STREAMS_CAPTURE V$STREAMS_POOL_ADVICE V$STREAMS_TRANSACTION V$PROPAGATION_RECEIVER V$PROPAGATION_SENDER V$STREAMS_APPLY_COORDINATOR V$STREAMS_APPLY_READER V$STREAMS_APPLY_SERVER 二、 准备流复制环境 夏明伟 第 6 页 2019-9-26 2.1 创建流复制实验用的源目数据库 注:源目数据库可以在同一台机器也可以在不同的

14、机器。 $export DISPLAY=local_ip:0.0 在客户端启动 Xmanager-xbrowser/xstart $dbca 在客户端的图形界面按提示进行 注:回退方法: $export DISPLAY=local_ip:0.0 在客户端启动 Xmanager-xbrowser/xstart $dbca 在客户端的图形界面按提示进行数据库删除操作 2.2 源数据库置于归档模式 注:如果是双向复制,则每个库都是源库,都需要处于归档模式。 SQL archive log list Database log mode Archive Mode Automatic archival E

15、nabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1527 Next log sequence to archive 1529 Current log sequence 1529 注:设置数据库处于归档模式的语句如下: SQLstartup mount; SQLalter database archivelog; SQL alter database open; 注:shutdown 时不能用 abort。 2.3 修改初始化参数 global_names=true 必须设置 glob

16、al_names 为 true,然后在后面创建 database link 时的名字必须使用 global name compatible=10.2.0.1.0 要使用 10gR2 版本的新特性,则必须设置 10.2.0.1.0 以上 streams_pool_size=200m streams pool 需要根据捕获进程,传播进程,应用进程和队列的数量和并行度来确定。如果 statistics_level 设置为 typical 或者 all,运行一段时间后可以根据 v$streams_pool_advice 来调整该参数,若使用自动内存管 理也可设为 0。 job_queue_proces

17、ses=4 aq_tm_processes=4 open_links=4 夏明伟 第 7 页 2019-9-26 用如下语句设置 db_domain(因 db_domain 不可动态修改,故修改后需要重启数据库, 若源目数据库都 没有设置 db_domain,也可不考虑设置 ): ALTER SYSTEM SET db_domain=net SCOPE=SPFILE; ALTER DATABASE RENAME GLOBAL_NAME TO ; 注 1:有时可能还要修改 listener.ora,加如下段: (SID_DESC = (SID_NAME = rep1) (ORACLE_HOME

18、= F:oracleproduct10.1.0Db_2) (GLOBAL_NAME = rep1.NET) ) 注 1:GLOBAL_NAME 改回来的语句如下: UPDATE SYS.PROPS$ SET VALUE$ = rep1 WHERE name =GLOBAL_DB_NAME; commit; 源库与目标库的 tnsnames.ora 配置,确保正确,可用 tnsping 通。 参数设置查看语句如下: SELECT * FROM v$parameter WHERE NAME IN (global_names,compatible,streams_pool_size, shared_

19、pool_size,sga_max_size, job_queue_processes,aq_tm_processes,open_links ) ORDER BY NAME; 设置语句参考如下: ALTER SYSTEM SET aq_tm_processes=4 SCOPE=BOTH; ALTER SYSTEM SET global_names=true SCOPE=BOTH; 2.4 创建流复制管理员 在源库和目标库都需要创建,创建全库复制时流复制管理员用户不同步。 SQLPLUS / AS SYSDBA CREATE USER strmadm IDENTIFIED BY strmadm;

20、 GRANT CONNECT,RESOURCE,DBA TO strmadm; EXEC DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(strmadm); /* 赋予流管理特权 */ 2.5 创建数据库链路 注:若流复制是基于数据库级的此步可在数据库整库复制后再做一次。 在流复制管理员用户下创建源库到目标库的 db link CREATE DATABASE LINK rep2 CONNECT TO strmadm IDENTIFIED BY strmadm USING rep2; 在流复制管理员用户下创建目标库到源库的 db link CREATE DATAB

21、ASE LINK rep1 CONNECT TO strmadm IDENTIFIED BY strmadm USING rep1; 注:database link 名必须为 global_name 名,否则不能访问。 global_name 是由 db_name.db_domain 构成的。通 过如下语句可得到数据库的 global_name: select * from global_name; 三、 数据库级复制设置 夏明伟 第 8 页 2019-9-26 3.1 配置 directory strmadmrep1:sql CREATE DIRECTORY dir_source AS /d

22、ata; strmadmrep2:sql CREATE DIRECTORY dir_dest AS /data/rman; 注:主要用于存放 Data Pump export 文件,并使 strmadm 用户对此目录可读写。如用下面的过程可以传送 整数逻辑块的文件: exec dbms_file_transfer.put_file(source_directory_object = “DIR_SOURCE“, source_file_name = export_hr.dmp, destination_directory_object = “DIR_DEST“, destination_file

23、_name = export_hr.dmp, destination_database = rep2 ); 3.2 在源库端执行 maintain_global 注:要在strmadm用户下执行,以下语句表示实现源目数据库整库间流复制,复制方式为双向。一般执行下 面的语句后把maintain_global.sql文件手工执行较为安全。手工执行可用如下方式: $sqlplus strmadm/strmadm maintain_global.sql $sqlplus strmadm/strmadmrep1; BEGIN DBMS_STREAMS_ADM.maintain_global ( sour

24、ce_directory_object = DIR_SOURCE, destination_directory_object = DIR_DEST, source_database = rep1, destination_database = rep2, perform_actions = FALSE, script_name = maintain_global.sql, script_directory_object = DIR_SOURCE, capture_queue_table = , capture_queue_name = , capture_queue_user = , appl

25、y_queue_table = , apply_queue_name = , apply_queue_user = , capture_name = , propagation_name = , apply_name = , dump_file_name = streams_rep.dmp, bi_directional = TRUE, include_ddl = TRUE, instantiation = DBMS_STREAMS_ADM.instantiation_full ); END; / 夏明伟 第 9 页 2019-9-26 手工执行可用如下方式: $ sqlplus strmad

26、m/strmadm maintain_global.sql 注:sys/system/ctxsys 始终不复制,perform_actions:true 直接执行配置,false 的话则生成配置脚本到 script_directory_object/script_name 参数指定的位置。instantiation 指定初始化的方式,其中: DBMS_STREAMS_ADM.INSTANTIATION_FULL:expdp 全库导出然后 impdp 全库导入 DBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORK:使用 data pump 直接通过网络导入的特性

27、初始化。 DBMS_STREAMS_ADM.INSTANTIATION_NONE:不执行初始化。这个选项只有在 perform_actions=false 的情 况下有效,也就是指定先生成脚本,手工初始化,然后再执行配置脚本。 已创建了流队列再执行以上语句可能需要指定队列名称等。 3.3 验证复制是否成功 在目标库上新建用户: STRMADMrep2 CREATE USER test_user1 IDENTIFIED BY test_user1; GRANT RESOURCE,CONNECT,DBA TO test_user1; 在源库上参看新建用户是否同步: 在目标库上新建库表并插入数据:

28、test_user1rep2 CREATE TABLE TEST ( NAME VARCHAR2(20 BYTE) NULL ); insert into test values(“xmw test1“); commit; 在源库上参看新建库表及插入数据是否同步: 反之再测一次。 测试结论:一开始应用进程总是报 abort 导致不能同步,后执行如下语句修改参数后同步正常,但恢复此 参数后又不正常,最后只有保持 DISABLE_ON_ERROR 为 N。 BEGIN DBMS_APPLY_ADM.set_parameter ( apply_name = APPLY$_REP2_120, para

29、meter = DISABLE_ON_ERROR, VALUE = N ); END; / EXEC dbms_apply_adm.start_apply(APPLY$_REP2_120); 注:apply_name 填具体的应用名。 四、 用户级复制设置 4.1 在源库端创建用户 在源库上新建用户: STRMADMrep1 夏明伟 第 10 页 2019-9-26 CREATE USER test_user1 IDENTIFIED BY test_user1; GRANT RESOURCE,CONNECT,DBA TO test_user1; 注:要复制的用户 test_user1 在目标库

30、中不能已经存在。 4.2 配置 directory strmadmrep1:sql CREATE DIRECTORY dir_source AS /data; strmadmrep2:sql CREATE DIRECTORY dir_dest AS /data/rman; 注:主要用于存放 Data Pump export 文件,并使 strmadm 用户对此目录可读写。如用下面的过程可以传送 整数逻辑块的文件: exec dbms_file_transfer.put_file(source_directory_object = “DIR_SOURCE“, source_file_name =

31、 export_hr.dmp, destination_directory_object = “DIR_DEST“, destination_file_name = export_hr.dmp, destination_database = rep2 ); 4.3 在存放日志文件端执行 maintain_schemas 注:要在strmadm用户下执行,以下语句表示实现源目数据库用户间流复制,复制方式为单向。一般执行下 面的语句后把maintain_schemas.sql 文件手工执行较为安全。手工执行可用如下方式: $sqlplus strmadm/strmadm maintain_sche

32、mas.sql $sqlplus strmadm/strmadmrep1; BEGIN DBMS_STREAMS_ADM.maintain_schemas (schema_names = test_user1, source_directory_object = dir_source, destination_directory_object = dir_dest, source_database = rep1, destination_database = rep2, perform_actions = FALSE, script_name =maintain_schemas.sql, sc

33、ript_directory_object = DIR_SOURCE, dump_file_name = export_strmtest.dmp, capture_queue_table = , capture_queue_name = , capture_queue_user = NULL, apply_queue_table = , apply_queue_name = , apply_queue_user = NULL, capture_name = , propagation_name = , apply_name = , log_file = export_strmtest.clg,

34、 bi_directional = FALSE, 夏明伟 第 11 页 2019-9-26 include_ddl = TRUE, instantiation = DBMS_STREAMS_ADM.instantiation_schema ); END; / 手工执行可用如下方式: $ sqlplus strmadm/strmadm maintain_schemas.sql 注:参数含义基本同 pre_instantiation_setup 中的参数含义。其中要同步的用户为“test_user1” , 复制方式为单向。 4.4 验证复制是否成功 在源库上新建库表并插入数据: test_user

35、1rep1 CREATE TABLE TEST ( NAME VARCHAR2(20 BYTE) NULL ); insert into test values(“xmw test1“); commit; 在目标库上参看新建库表及插入数据是否同步: 测试结论:可以并且相对稳定,实现也很方便。 五、 表级复制设置 5.1 在源库端创建测试表 test_user1rep1:sql CREATE TABLE BONUS ( ename VARCHAR2(10 BYTE) NULL, job VARCHAR2(9 BYTE) NULL, sal NUMBER NULL, comm NUMBER NUL

36、L ); CREATE TABLE DEPT ( deptno NUMBER(2) NULL, dname VARCHAR2(14 BYTE) NULL, loc VARCHAR2(13 BYTE) NULL ); CREATE TABLE EMP ( empno NUMBER(4) NULL, ename VARCHAR2(10 BYTE) NULL, job VARCHAR2(9 BYTE) NULL, mgr NUMBER(4) NULL, hiredate DATE NULL, sal NUMBER(7,2) NULL, comm NUMBER(7,2) NULL, deptno NU

37、MBER(2) NULL ); 注:要复制的表在目标库中不能已经存在。 5.2 配置 directory strmadmrep1:sql CREATE DIRECTORY dir_source AS /data; 注:主要用于存放脚本文件,使 strmadm 用户对此目录可读。 5.3 在存放日志文件端执行 maintain_tables 注:要在strmadm用户下执行,以下语句表示实现源目数据库表间流复制,复制方式为单向。一般执行下面 的语句后把maintain_tables.sql文件手工执行较为安全。手工执行可用如下方式: $sqlplus strmadm/strmadm mainta

38、in_tables.sql $sqlplus strmadm/strmadmrep1; DECLARE 夏明伟 第 12 页 2019-9-26 TABLES DBMS_UTILITY.UNCL_ARRAY; BEGIN TABLES (1) := SCOTT.BONUS; TABLES (2) := SCOTT.DEPT; TABLES (3) := SCOTT.EMP; DBMS_STREAMS_ADM.maintain_tables (table_names = TABLES, capture_queue_table = CAPTURE_CAP1_QT, capture_queue_na

39、me = CAPTURE_CAP1_QN, capture_queue_user = NULL, apply_queue_table = APPLY_APP1_QT, apply_queue_name= APPLY_APP1_QN, apply_queue_user= NULL, capture_name = CAPTURE_CAP1_CN, propagation_name= PROPAGATION_PROP1_PN, apply_name = APPLY_APP1_AN, source_directory_object= NULL, destination_directory_object

40、= NULL, source_database = rep1, destination_database = rep2, perform_actions = FALSE, script_name = maintain_tables.sql, script_directory_object= DIR_SOURCE, bi_directional = FALSE, include_ddl = TRUE, instantiation = DBMS_STREAMS_ADM.instantiation_table_network ); END; / 手工执行可用如下方式: $ sqlplus strma

41、dm/strmadm maintain_tables.sql 注:参数含义基本同 pre_instantiation_setup 中的参数含义。其中要同步的库表为 “TEST_USER1.BONUS、TEST_USER1.DEPT、TEST_USER1.EMP”,复制方式为单向。 如果等了足够长的时间发现数据没有复制过来,仔细检查 capture/propagation/apply 各进程的状态,看是否 有异常。有人在使用 maintain_tts/maintain_schemas/maintain_tables 试验表空间复制/ 用户复制/表复制的时候遇到 过所有的东西看起来都是正常的,但是

42、数据就是过不去。后来开了个 tar 问 oracle,经过一个星期的折腾,最后 oracle 给的答复是修改一个隐含参数: alter system set “_job_queue_interval“=1 scope=spfile; 并且将 aq_tm_processes 参数改为 1(原来是为 10) alter system set aq_tm_processes=1 scope=both; 改完后重启,发现数据就可以去了。这个隐含参数只是控制对 job 队列的检查频率,默认 5 秒。复制正常 后再将这个参数改回默认值,重新配置 streams 复制也一切正常了。 我本人也碰到过一个问题,

43、同样一切正常但数据过不来,后来发现是:由于空间的问题系统无法归档成功, 夏明伟 第 13 页 2019-9-26 后改变归档路径(alter system set db_recovery_file_dest=/data/flash_recovery_area scope=both; ),归档成功,重新 实例化,但流同步数据还是过不来,后来重建捕获队列及捕获流,可以同步数据了,因为发现错误提示中捕获 的日志文件路径还是改变前的。总之,流复制技术变数还是很多的,要想完全驾驭它需要具备丰富的实践经验。 5.4 验证复制是否成功 在源库上插入测试数据 test_user1rep1 INSERT INT

44、O BONUS (ename ) VALUES (“xmw“); SQL commit; 稍等片刻在目标库查询 test_user1rep2select * from scott.BONUS; 测试结论:可以并且相对稳定,实现也很方便。 六、 记录或字段级复制设置 在 Oracle Stream Replication 中有一个子集(SubSet)的概念,通过它可以把一个 Table 的数据进行水平分割来 实现数据的同步。 我们也可以采用转换规则(Rule-base Transformation)来实现把一个 Table 的数据进行垂直分割来实现数据 的同步。 6.1 单向表级流复制中使用子集

45、规则和转换规则的例子 6.1.1 手工建立 Capture、Apply 和 Propagation 流及相应的队列 注:手工创建只是为了展示流复制的底层创建原理,若觉得麻烦也可以通过上面的数据库级、用户级、表 级流复制方法先建立流复制,然后再配置子集规则或转换规则。 源库端执行: 对需要同步的表建立补充日志 ALTER TABLE SCOTT.BONUS ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, FOREIGN KEY, UNIQUE INDEX) COLUMNS; 创建一个队列,用于捕获数据并入列待传 BEGIN dbms_streams_adm.set

46、_up_queue( queue_table = capture_db1_qt, queue_name = capture_db1_qn, queue_user = strmadm); END; / 注:若需要清除这个队列及相应的队列表用如下语句: exec DBMS_AQADM.STOP_QUEUE(queue_name = capture_db1_qn); exec DBMS_AQADM.DROP_QUEUE(queue_name = capture_db1_qn); exec DBMS_AQADM.DROP_QUEUE_TABLE(queue_table = capture_db1_qt

47、); 创建一个传播流,用于把队列 1 中的数据传播到队列 2 中 BEGIN dbms_streams_adm.add_table_propagation_rules( 夏明伟 第 14 页 2019-9-26 table_name = SCOTT.BONUS, streams_name = prop_db1_to_db2_strm, source_queue_name = capture_db1_qn, destination_queue_name = apply_db2_qnorcl.dest, include_dml = TRUE, include_ddl = TRUE, include

48、_tagged_lcr = TRUE, source_database = orcl.source, inclusion_rule = TRUE, and_condition = NULL); END; / 注 1:include_tagged_lcr 设为 true 表 lcr 记录中含 tag 标签,缺省为 null,false 表 lcr 记录中不含 tag 标签。 标签值可在应用时加入(当然也可在其他环节加入) ,一般可为应用流的 id,这样就可明确是对某源库的应用, 数据回到某源库时,源库的捕获流过滤掉这些记录以防循环应用。因此 tag 标签主要是用在有环流的流复制环 境下以防循环应

49、用,也可以在多源复制中解决冲突。 捕获时的过滤条件参考: and_condition = :lcr.get_tag() = HEXTORAW() 注 2:若需要清除这个传播流及相应队列及队列表用如下语句: exec dbms_propagation_adm.drop_propagation(propagation_name=prop_db1_to_db2_strm,drop_unused_rule_sets = TRUE); exec DBMS_AQADM.STOP_QUEUE(queue_name = capture_db1_qn); exec DBMS_AQADM.DROP_QUEUE(queue_name = capture_db1_qn);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。