Oracle 10.2 流复制问题(二)—— C001: large txn detected

来源:互联网 发布:js 使用须知倒计时5秒 编辑:程序博客网 时间:2024/05/05 02:50

系统配置:HP-UX B.11.31 U ia64、Oracle Enterprise Edition Release 10.2.0.4.0、表级单向流复制
问题现象:流复制失效,源表更新,目标表没有更新,没有apply error信息
排错过程:

 

1) 检查源库的alert_<sid>.log,发现大量C001: large txn detected
C001: large txn detected (245742 LCRs), xid: 0x001e.008.00004d5c
Thu Apr 29 16:59:53 2010
C001: large txn detected (245742 LCRs), xid: 0x001e.008.00004d5c
Thu Apr 29 17:09:56 2010
C001: large txn detected (245742 LCRs), xid: 0x001e.008.00004d5c
Thu Apr 29 17:19:59 2010
C001: large txn detected (245742 LCRs), xid: 0x001e.008.00004d5c
Thu Apr 29 17:29:59 2010
C001: large txn detected (245742 LCRs), xid: 0x001e.008.00004d5c

 

2) 查询流事务,发现两个活动事务
set lines 300 pages 3000
select * from V$STREAMS_TRANSACTION;

 

3) 查询活动事务号
select xid, xidusn, xidslt, xidsqn, mining_status from v$logmnr_transaction where mining_status = 'ACTIVE';

 

4) 查询事务的sql_id及其对应的语句
select distinct sql_id from v$active_session_history where xid = '001A0003000068FB';
select distinct sql_id from v$active_session_history where xid = '001E000800004D5C';
select sql_text from dba_hist_sqltext where sql_id in ('8kb1z41samn4u','4apb1v7gt9235');
delete from t1
delete from t2

 

5) 通过计算把事务号转为10进制
0x001e.008.00004d5c =〉30.8.19804
001A0.003.000068FB =〉26.3.26875

 

6) 停止捕捉进程、忽略活动事务、启动捕捉进程
execute dbms_capture_adm.stop_capture('capture1');
execute dbms_capture_adm.set_parameter('capture1','_ignore_transaction','30.8.19804');
execute dbms_capture_adm.set_parameter('capture1','_ignore_transaction','26.3.26875');
execute dbms_capture_adm.start_capture('capture1');


总结:t1、t2两个表都有500万条数据,两个delete是删除1000万数据的事务。本错误就是由对源表进行的大的事务处理,使流复制事务积压,复制很缓慢。在流复制中,大事务的处理会使复制慢到无法接受,所以如果要在源表进行大的事务处理,最好先停止流复制,大事务处理完,重新exp、imp生成目标表,再重新获得表的SCN,最后重新启动流复制。

0 0