暂无图片
暂无图片
4
暂无图片
暂无图片
3
暂无图片

一则job 执行变慢简单分析

原创 心在梦在 2023-08-14
687

一则job 执行变慢简单分析

 

一、问题描述

客户反馈job 之前执行都正常, 08月11日 3点开始,突然变慢,执行时间较长。
 

二、处理过程

1. 分析异常时间段AWR报告

图片.png

分析:数据库整体负载正常,无异常等待事件,各项等待事件平均等待时间非常小,DB整体负载正常;根据客户反馈其他应用都正常,只有这一个job执行变慢,因此基本排除是因为整个DB负载较重导致的性能问题。

2. 查看SQL语句部分

图片.png

分析:查看SQL语句,排名第一的确实是JOB,执行时间相比平时确实变长很多,整个JOB单次执行需60min,主要时间都耗在第二个SQL语句gz9y6v9r32df1上面,该SQL语句单次执行0.04s,看起来执执行速度还可以,但是执行次数较多,7万多次,所以整体时间消耗较大,初步判断为该SQL执行时间过长导致了JOB执行时间较长。

3. 查看SQL语句执行计划

图片.png

分析:我们选取一个时间段较长的awrsqrpt报告,包含正常时间段和异常时间段,可以看到该SQL语句存在2个执行计划,且效率相差很多,单次执行时间差了200多倍,这么看来,0.04s 就显的非常慢了。

对比2个执行计划效率:

3858585690 执行计划,单次执行时间:0.043s

66230310 执行计划,单次执行时间:0.00016s

具体执行计划如下:3858585690 为全表扫描,66230310 为索引范围扫描。
图片.png

图片.png

4. 查看SQL语句异常时间段执行计划

图片.png

分析:可以看到,异常时间段期间,该SQL语句确实走了不好的执行计划,导致了执行时间长,到这里,我们可以判断是该SQL在异常时间段执行计划发生了变化,走了不好的执行计划,执行时间变长,导致整个JOB 执行时间变长。

 

三、解决办法

针对执行计划改变的问题,我们可以采取绑定执行计划或者使用SPM 方式来解决。这里,我们选择使用绑定执行计划的方式。

1. 采用sql profile 方式,绑定执行计划

-- 我们使用coe_load_sql_profile.sql 脚本,绑定执行计划,不要使用sys用户 SQL> conn system/oracle SQL> @coe_load_sql_profile.sql Parameter 1: ORIGINAL_SQL_ID (required) Enter value for 1: gz9y6v9r32df1 Parameter 2: MODIFIED_SQL_ID (required) Enter value for 2: gz9y6v9r32df1 PLAN_HASH_VALUE AVG_ET_SECS -------------------- -------------------- 3858585690 .043 66230310 .000 Parameter 3: PLAN_HASH_VALUE (required) Enter value for 3: 66230310 .... 过程略。。
复制

2. 确认SQL语句已经被绑定

SQL> select * from table(dbms_xplan.display_cursor('gz9y6v9r32df1',null,'last typical')); ... Plan hash value: 66230310 .. Note ----- - SQL profile "xxxx" used for this statement
复制

通过上面的SQL语句,查看新的执行计划,我们可以看到 - SQL profile “xxxx” used for this statement字样,可以确认该SQL语句已经绑定了SQL pofile。

通过绑定执行计划后,SQL语句执行效率恢复到正常水平,JOB 执行时间也恢复正常。

最后修改时间:2023-08-15 16:33:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

暂无图片
1年前
评论
暂无图片 0
其实0.04秒时很快的, 40毫秒 问题是为什么执行那么多次? 慢的执行了35.8万次, 快的执行了131万次. 另外要贴下两个UPDATE 执行计划有什么差异? UPDATE语句是啥? 其实这么短执行时间一般都是根据主键来更新的. 主键更新有什么执行计划差异呢? 使用SPROFILE 绑定执行计划 这个是特定版本才有的吧? 另外文章错误 3603秒 不是30分钟
1年前
暂无图片 点赞
1
心在梦在
暂无图片
1年前
回复
暂无图片 0
感谢纠正指导.
1年前
暂无图片 点赞
回复
杜伟
暂无图片
1年前
评论
暂无图片 0
这现象我也遇到过。。。卡卡卡,就是绑定
1年前
暂无图片 点赞
评论