Oracle bug的故障排查过程思考.docx
《Oracle bug的故障排查过程思考.docx》由会员分享,可在线阅读,更多相关《Oracle bug的故障排查过程思考.docx(10页珍藏版)》请在第一文库网上搜索。
1、Orac1ebug的故障排查过程思考问题现象:一套十几个TPS的系统被执行2分钟(00:30-00:32)的夜维(删除历史过期的数据)搞挂了。初步分析:通过应用日志,定位到应用处理都卡在了一条SQ1语句上,这个SQ1要更新一个包含4个C1OB列的表,有的UPdate操作执行时间超过了10秒,形如:updateAseta=:1,b=:2,c=:3whereid=:10andupdate-time=:11;通过夜维日志,定位到在应用出现卡顿的时间内,夜维正在执行删除这张A表的操作,SQ1中会接受删除日期和一次删除的条数作为参数,分别是90和10000,表示一次删除IOOOO条90天以前的历史数据(
2、一天大约20万),日志记录了一次删除IOOoO条的用时,都在6T0秒内,和前几日的执行时间相比,基本一致,并未出现异常:de1etefromAwhereupdate_time=trunc(sysdate)-:1andrownum=:2通过操作系统OSWtOP监控的信息,发现故障期间,数据库服务器的CPUid1e曾降低到0%,正常时间段内,CPUid1e通常是80%-90%,所以故障期间,应该是什么操作,极度消耗CPU。通过数据库AWR,看到resmgr:CPUquantum排在榜首,在故障时间段内,看到业务的update和夜维的de1ete操作等待事件的信息,尤其UPdate操作,等待的就是r
3、esmgr:CPUquantum,这个等待事件,参考了eyg1e的文章(https:WWMeta1ink:786346.1)o经过确认,每天00:00-02:00,启动了缺省的维护窗口,为了保障一些后台任务的执行,UPdate等待resmgr:CPUquantum很可能是因为更新操作消耗了太多的CPU,触发了OraC1e对UPdate操作的资源限制,所以应该是正常现象,因此,找到UPdate消耗更多CPU才是问题的关键。通过SQ1AWR,确认UPdate语句的执行计划只有一个,而且用的INDEXUNIQUESCAN,相对来说是很高效的,通过计算,发现故障期间,一条UPdate操作消耗的逻辑读高
4、达20多万,而正常时间段,一条update操作仅消耗20多。基于以上信息,初步得到问题的主线,夜维执行期间,正常业务的UPdate操作逻辑读超高(20多万),消耗CPU异常,导致OraCIe启动了资源限制,限制了更新操作CPU的使用,等待事件是resmgr:CPUqUantUnbUPdate操作变慢了,前面的请求未处理完成,后面的请求就进入了等待队列,发生了雪崩效应,进而搞挂了应用。现在的问题是,为什么故障期间,一条UPdate操作消耗的逻辑读如此之多?应用逻辑:梳理下应用逻辑,出现问题的功能,是记录流水信息,大致的操作步骤,1. insert一条记录,其中包括插入第一个C1oB列。2. up
5、date这条记录的第二个C1OB列。3. UPdate这条记录的第三个C1oB列。4. UPC1ate这条记录的第四个C1OB列。其中C1OB是个大报文,从容量看,这张表是IOOG,其中一个C1OB是300G,另外三个C1OB将近IOOG0深入分析:数据库是11.2.0.4,根据故障的现象,一条update操作在de1ete删除的同时,逻辑读超高。MoS上有这个bug描述,Bug19791273-PoorUPDATESQ1performanceduetospacesearchcacheforupdatesonASSMsegment(DocTD19791273.8)指出当使用ASSM位图管理段的
6、时候,可能因为对UPdate开启了spacesearchcache的功能而导致update性能降低。出现这个问题,另外有个前提,就是已经修复了13641076这个bug(换句话说,很可能是因为修复了13641076这个bug,而引出了19791273这个bug,数据库是11.2.0.4,包含了13641076的PatCh),这个bug。13641076这个bug,是让UPdate和insert操作一样能使用spacesearchCaChe功能,尽管这会降低update的一些性能。19791273这个bug的fix,会对update操作禁用spacesearchcache,避免性能过载。作为这个
7、fix的替代方案,就是设置IO(H9事件。spacesearchCaChe是什么?那再看下13641076这个bug,Bug13641076-Highbuffergetsforinsertstatement-rejection1istdoesnotfire-superseded(DocID13641076.8),这个bug同样和ASSM空间管理相关,指出当存在一个并发未提交的大数据量de1ete操作时,insert操作会消耗大量buffergetso在这种情况下,insert首次尝试寻找段空闲空间的时候,需要访问很多的块数据,但是下次执行时,就会访问一个“黑名单”列表(即SPaCesearch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle bug的故障排查过程思考 bug 故障 排查 过程 思考