遇到问题
oracle 数据库 job跑的很慢
方法1
排查办法
打开plsql,执行:
select * from gv$sql_monitor where username=‘myuser1’ order by elapsed_time desc
其中,把myuser1 换成实际运行job的用户
然后看 查询结果的sql_text 列和 elapsed_time 这两列:


elapsed_time这一列单位是微秒。如图所示,发现了大量慢sql ,经对比,确实是job对应的存储过程里面的语句。经分析发现该sql 语句因跨数据库实例查询、存在两个嵌套查询导致性能不佳。
解决办法
停job --> 改写慢sql 语句 --> 再开启job 即可
方法2
select * from gv$sql_plan_monitor order by physical_read_bytes desc;

可以看到,出现较多的全表扫描。
方法1 和 方法2 结合起来用,效果更好!

当遇到Oracle数据库job运行缓慢的问题时,可以采取两种方法进行排查和解决。方法1是通过gv$sql_monitor监控查询,定位到运行job的用户和慢SQL,分析并优化SQL语句。方法2是利用gv$sql_plan_monitor查看物理读取,发现全表扫描等性能瓶颈。结合两者能更有效地提升job执行效率。
最低0.47元/天 解锁文章
789

被折叠的 条评论
为什么被折叠?



