加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle AWR性能优化一例

发布时间:2020-12-12 13:19:40 所属栏目:百科 来源:网络整理
导读:有一个批处理程序运行超过24小时仍然不能完成,采集了程序运行期间的AWR报告如下。 由上可以看到,该系统为AIX的单实例数据库,采样时长1319.96 分钟,DB time 1532.15分钟。 看一下TOP等待事件: 可以看到有非常高的DB file scattered read等待事件,该等待
有一个批处理程序运行超过24小时仍然不能完成,采集了程序运行期间的AWR报告如下。

由上可以看到,该系统为AIX的单实例数据库,采样时长1319.96 分钟,DB time 1532.15分钟。

看一下TOP等待事件:

可以看到有非常高的DB file scattered read等待事件,该等待事件表示将大量的数据块读入到不连续的内存区域,往往预示着大的全表扫描。
在程序运行期间,查看ASH动态视图v$active_session_history,同样可以发现发生着大量的DB file scattered read 等待事件,从该视图的执行计划列可以看到正在发生着 Table Full Scan.

接着我们看TOP SQL部分:

我们看到 SQL ID 为2yhcj6jcbtvac的SQL语句消耗大量的资源, 该SQL语句如下:
SELECT MATCH_CLIENT_ID,MATCH_CLIENT_ROLE,DECODE(MATCH_SYS_CODE,‘HKP‘,1,‘UVP‘,2,‘CAS‘,3,‘NB‘,4,‘GP‘,5,‘GLH‘,6,‘GI‘,7,‘MFD‘,8,‘CRC‘,9,10) AS MATCH_POL_ORDER,MATCH_SYS_CODE,MATCH_LOB,MATCH_CONTRACT_NO,MATCH_CERTIFICATE_NO FROM POSSIBLE_CUST_REPORT_SCB WHERE BATCH_DATE = :B3 AND CLIENT_ID = :B2 AND MATCH_CLIENT_ID = :B1

可以看到该语句为一个单表查询,从v$active_session_history也可以看到就是该语句发生着大量的DB file scattered read,查看该表的定义,没有索引,所以初次可以判定,以上的SQL语句被多次执行,并且因为没有索引所以在产生全表扫描。

查看AWR的segment部分,更确认了这一点:

该表段上产生最大的逻辑读、物理读和非优化的读取。

所以, 现在完全可以确定,该表上大量的全表扫描是最主要的性能问题,所以需要在该表上添加索引。

在该表上创建索引:
CREATE INDEX idx1_POSSIBLE_CUST_REPORT_SCB ON POSSIBLE_CUST_REPORT_SCB(BATCH_DATE,CLIENT_ID,MATCH_CLIENT_ID);

所以创建完成后,立刻再次查看v$active_session_history,可以看到执行路劲改走索引。最终结果确认,该批处理程序性能提升3倍以上。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读