Oracle-ADG无法应用日志问题(Bug-17695685)

问题:

        Oracle11.2.0.4.5的版本,ADG备库mrp进程出现无法应用日志的问题

问题原因分析:

        查看当前mrp进程的状态,当前在应用日志thread# 1 626298

select  inst_id,process,thread#,sequence#,status from gv$managed_standby;

Oracle-ADG无法应用日志问题(Bug-17695685)_第1张图片

        备库查看日志的状态,日志已经投递到备库并且还未被删除

select thread#,sequence#,deleted,dest_id
from v$archived_log
where sequence#=626298

Oracle-ADG无法应用日志问题(Bug-17695685)_第2张图片

     对mrp进程进行10046跟踪,查看mrp进程一直在等待parallel recovery control message reply,等待并行子进程的信息回复

SQL> select process,pid from V$managed_standby where process like '%MRP%';
​
PROCESS                            PID
--------------------------- ----------
MRP0                             87986
​
SQL> oradebug setospid 87986
Oracle pid: 92, Unix process pid: 87986, image: oracle@​db1 (MRP0)
SQL>  oradebug unlimit
Statement processed.
SQL> oradebug Event 10046 trace name context forever, level 12
​
Statement processed.
SQL>  oradebug Event 10046 trace name context off
Statement processed.
SQL> oradebug tracefile_name

        查看并行应用子进程的等待,除了正常的parallel recovery slave next change等待之后,出现了gc buffer的请求等待gc buffer busy release

Oracle-ADG无法应用日志问题(Bug-17695685)_第3张图片

        还看到,会话出现大量的buffer busy wait以及buffer deadlock

Oracle-ADG无法应用日志问题(Bug-17695685)_第4张图片

        这个问题是由于bug 17695685导致的mrp进程在应用日志时出现Media Recovery buffer等待,并伴随buffer deadlock/"gc buffer busy acquire"等待

Oracle-ADG无法应用日志问题(Bug-17695685)_第5张图片

问题修复:

        临时的规避方法:强制kill了mrp以及pr子进程,重启mrp进程恢复日志应用

        根因修复:安装数据库补丁修复

你可能感兴趣的:(Oracle,oracle,数据库,dba,运维,bug)