Logical standby 库实时应用停止应急处理

Logical standby 应用时如果遇到错误可能导致主备之间的实时应用停止,alert日志中会有如下错误

 Fri Sep 26 12:32:29 2014
LOGSTDBY Apply process AS03 server id=3 pid=60 OS id=6102 stoppedFri Sep 26 12:32:29 2014
LOGSTDBY Apply process AS02 server id=2 pid=59 OS id=6100 stopped
LOGSTDBY Apply process AS05 server id=5 pid=62 OS id=6106 stoppedFri Sep 26 12:32:29 2014
LOGSTDBY Apply process AS01 server id=1 pid=58 OS id=6098 stopped
Fri Sep 26 12:32:29 2014
LOGSTDBY Apply process AS04 server id=4 pid=61 OS id=6104 stopped

这样错误导致实时应用停止(会导致主备库数据不同步),系统无法自动修复这样的错误,需要手动处理

通过如下语句可以查询出

select XIDUSN, XIDSLT,XIDSQN , status , event,event_time from dba_logstdby_events orderby event_time desc

这个视图dba_logstdby_events是逻辑Standby操作日志,如果发生了错误,可以通过该视图查看近期逻辑Standby都做了些什么。默认情况下,该视图只保留最近10000条事件的记录,event字段看执行的具体语句

上图查询出553250405这个事物在逻辑备库应用失败,需要手动处理

处理方法1:

执行如下包跳过失败事物

exec dbms_logstdby.skip_transaction(55,32,50405);

然后重新开启实时应用

SQL> ALTER DATABASE START LOGICALSTANDBY APPLY immediate; 

处理方法2:

直接跳过遇见的错误

SQL> alter database start logicalstandby apply immediate skip failed transaction;

怎样查看逻辑备库是否实时应用

1.在逻辑备库上查询V$LOGSTDBY_STATE中的state字段如果状态为SQL APPLY NOT ON说明逻辑Standby数据库根本没启动SQL应用

 select * from V$LOGSTDBY_STATE

2.不推荐使用第一种查询方案,查询不是很明确,推荐使用在主库上查询v$archive_dest_status视图查看归档到逻辑备库的日志recovery_mode如果为LOGICAL REAL TIME APPLY表明是实时应用,为其他表明非实时应用

 select DEST_ID,STATUS,RECOVERY_MODE from v$archive_dest_status

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值