某客户报表系统Oracle数据库挂起问题分析处理

某客户报表系统Oracle数据库挂起问题分析处理

一、概要

        某客户报表系统Oracle数据库在3月5号、6号均出现一节点实例短暂挂起现象,挂起现象有两种,第一是普通用户不能登录数据库,第二是sys用户可以登录数据库,但是做简单的select查询时数据库不能响应,查询挂起。

        客户这套数据库为两节点RAC,运行在某一体机上,数据库上应用在24小时执行跑批动作,数据库版本为11.2.0.4。

二、问题分析说明

2.1分析数据来源

        数据库中的awr报告、awr对比报告、ash报告、ash源数据、oswatch采集数据、OEM、数据库参数,由于数据库alert中没有明显的ora报错所以没有截取数据库的alter信息。

2.2分析过程

  • 3月5日出现短暂HANG的情况出现的时间点为

        sample_id='39901949'里全是跑批的事务,达681个,与此同时应用程序发起会话是并没有限制并行,会话最大并行达到了112个。

  • 该批量任务是造成数据库短暂HANG的原因

        可以看出会话出现大量等待,并且查询会话都开启了并行

  • 3月6号出现短暂HANG的情况出现的时间点非常多

        表中时间片上的活动事务均为跑P事务

  • 相对5号来说,6号的批量事务更多。所以HANG的时间相对更久

  • 以下为6号主要topsql

  • awr中看到的信息

从awr报告中可以看出耗时最长的事件发生在并行查询上

  • SQL耗时统计

  • 排在第一位的SQL语句
select count(*) from t47_xxxxxx t where organkey in ('64010018') and (t.validate_ind = '0' or t.validate_ind2 = '0') 

        这是一条简单的计数查询语句,因此表上索引存在并行,所以操作表是默认走了并行。

三、问题总结

        根据以上数据分析,这套数据库出现挂起现象时,该数据库中的会话均出现大量并行的操作,通过oem采集的数据发现个别会话并行数达到了112。由此可以确定这套数据库挂起原因为并行导致。

四、处理建议

  • 根据awr和执行计划,分析topsql耗时在哪方面,实行具体优化。
  • 控制批量事务的并行度,以CPU实际运行状态,和跑批SQL运行效率来调整并行度。
  • 该库为跑P数据库,相对来说,8GB内存太少了,可适当分配多一些内存给该库,提高跑P效率,且内存用的是自动管理,建议参照最佳实践进行配置。

五、附录

        1.虽然查出是并行引起的数据库挂起,但进一步分析以及询问应用方面人员后,发现某些表上建立索引的时候就运用了并行,所以导致每次操作表的时候默认走了索引的并行。

        2.出问题的数据库是部署在某一体机平台上的,并且该集群下创建了多套数据库实例。如果多个数据库上都有并行存在,在业务量集中到一个时间点的话,影响小的话会挂起节点实例,影响大的话可能会波及数据库服务器上的其他实例。这对于数据库来说是一个潜在的隐患。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值