问题:电信运营商短信平台,某个过程包执行完一般在10s,不知何种原因执行后长达1分钟,造成短信挤压。
1、诊断 模拟后台调用该包的时候传入的参数手动执行该包,然后开启Oracle的Trace跟踪工具,该过程执行完后关闭跟踪
alter session set events '10046 trace name context forever,level 12'; --用10046trace工具开始跟踪
exec pkg_test('abc'); --执行你的数据库包
alter session set events '10046 trace name context off'; --执行完毕后结束跟踪
10046 trace工具跟踪完毕后会输出分析结果,类似如下: E:\admin\ora10\udump\ora10_ora_4832.trc
可格式化后进行分析,类似如下: tkprof E:\admin\ora10\udump\ora10_ora_4832.trc d:\10046.txt sys=no sort=prsela,exeela,fchela
然后分析10046.txt的文件,这里响应事件从大到小展现该包所有SQL语句,即可有如下收获:该过程包总共执行了多少SQL语句,具体内容是什么,分别开销了多少时长?哪些是开销时长最长的语句?(已排序,最前端)
2、查看SQL的执行计划进行分析原因