案例一:流复制两端数据不一致故障处理
流复制报错,查询dba_apply_error有错误出现为no data found
处理方法
先打印出错误具体内容
begin
print_transaction('10.45.14553972');
end;
得到结果:
----- Local Transaction ID: 10.45.14553972
----- Source Database: mydb
----Error in Message: 1
----Error Number: 1403
----Message Text: ORA-01403: no data found
--message: 1
type name: SYS.LCR$_ROW_RECORD
source database: MYDB
owner: YUZH
object: TEST1
is tag null: Y
command_type: UPDATE
。。。。。
PL/SQL procedure successfully completed
以上的只是类似,具体的打印没有保留。。。,但是能从以上信息中得到表及记录,然后根据具体错误更新apply库的相应表的相应数据,把数据更新的和源数据库一致
数据改成一致后既可以删除错误信息
begin
dbms_apply_adm.delete_error(local_transaction_id => ’10.45.14553972‘);
end;
案例2:
查询应用延时
SELECT APPLY_NAME,
(DEQUEUE_TIME - DEQUEUED_MESSAGE_CREATE_TIME) * 86400 LATENCY,
TO_CHAR(DEQUEUED_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY') CREATION,
TO_CHAR(DEQUEUE_TIME, 'HH24:MI:SS MM/DD/YY') LAST_DEQUEUE,
DEQUEUED_MESSAGE_NUMBER
FROM V$STREAMS_APPLY_READER;
CREATION LAST_DEQUEUE
07:28:13 01/09/12 09:03:21 02/07/12
极其异常,表示这个根本没有在干活
查询采集进程状态
SELECT CAPTURE_NAME,
STATE,
TO_CHAR(STATE_CHANGED_TIME, 'HH24:MI:SS MM/DD/YY') STATE_CHANGED,
TO_CHAR(CAPTURE_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY') CREATE_MESSAGE
FROM V$STREAMS_CAPTURE;
STATE STATE_CHANGED CREATE_MESSAGE
CAPTURING CHANGES 09:57:27 02/07/12 09:57:27 02/07/12
PAUSED FOR FLOW CONTROL 09:57:19 02/07/12 23:18:20 02/06/12
发现状态变成 PAUSED FOR FLOW CONTROL
查看
SELECT queue_schema, queue_name, unbrowsed_msgs, overspilled_msgs, memory_usage,
publisher_state FROM V$BUFFERED_PUBLISHERS;
得到IN FLOW CONTROL: TOO MANY UNBROWSED MESSAGES
根据此异常查询解决方案
关闭采集进程
关闭传播进程
重启传播进程
重启采集进程
完毕后ok