获取卡时间段的堵塞事件,发现大部分事件是“cursor: pin S wait on X”,“log file parallel write”,“LGWR-LNS wait on channel”等
根据blocking_session的堵塞源进行查询,最终查到源头,发现堵塞在文件号为2,块号2的源头上:
文件号2为“SYSAUX”表空间
SYSAUX表空间主要是awr、ash、基表等信息,而当时堵塞的主要事件是“LGWR-LNS wait on channel”,并且根据awr的后台等待事件
“LNS wait on SENDREQ”,“LGWR-LNS wait on channel”,这两个都跟dataguard的数据发送有关系,检查dg配置发现使用了“SYNC,AFFIRM”参数,如果网络出现波动或者dg库异常,会导致生产库卡住,所以建议使用async模式。
需要注意的是:使用SYNC 方式,主库产生的Redo 日志,LGWR 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,主库上的事务才能提交。而上面的2号文件等待就是等待基表的更新,但是由于sync模式下传输慢,导致事务不能提交。
所以修改dataguard配置参数log_archive_dest_2中的“SYNC”,设置为“ASYNC”。