公司是做交易支付的,为了交易稳定性,上了各种各样的监控。有连接数告警,有交易失败承兑率的告警等,就昨天的一个告警,我们展开了追踪,我们有自建的awr收集平台,通过半小时打点进行展示;
数据库不忙,当时的系统IDLE,MEM,IO都不忙,尤其是大佬们怀疑的IO。
我们继续去排查存储,看看是否有压力
存储用的Dell Unity 600,有共用存储的情况,顺着思路往下屡,发现有大量写入的是归档盘,而告警的数据库当时才6MB/s,且后面有波峰毛刺,但是监控确未告警,故侧面反映出,不是存储的性能瓶颈。
当前数据库redo log每组2G,我们做了很多参数优化形成了自己公司内部的标准参数实践模板;
至于lgwr的warning,我们也有参数
ALTER SYSTEM SET "_use_adaptive_log_file_sync"=FALSE scope=both sid='*';
且当时类比了其他数据库系统的平均IO
11.2之前,oracle的lgwr写入模式为post/wait
11.2之后新增了polling模式,可以与post/wait模式自动切换
通过隐藏参数 _use_adaptive_log_file_sync 参数来控制
查看该隐藏参数的方法:
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.indx = y.indx
AND x.ksppinm LIKE '%_use_adaptive_log_file_sync%';
当参数设置为false时,lgwr还是采用post/wait方式将日志从buffer写入磁盘
当参数设置为true是,lgwr写入方式会自动在post/wait和polling模式之间进行切换,可能会造成比较严重的log file sync (当使用polling模式时)
建议关闭此参数,且立即生效,无需重启实例。
我现在除了还想动_high_priority_processes别无其他想法,因为我认为数据库就是正常的,但是老大纠结lgwr trc抛出的问题。也许是个讨厌的bug,你们觉得呢?