背景:
2020年4月26日,财务人员反映最近系统运行慢。
分析及排查过程
1、业务反映慢,生成了awr报告:awr报告:awrrpt_1_24556_24559系统反应慢.html,该awr报告信息截取如下:
可以看到DB Time相对于elapsed时间是10倍量级。
可以看到top10的等待事件
可以看到服务器及实例的CPU占用率很低,CPU的资源是充足的。
可以看到主要的等待事件
可以看到top的sql执行情况。frjd8zfy2jfdq执行的次数最多,且每次执行需要的dbtime和CPUtime多。
以上选了其中一个ADDM报告建议
2、查看了alert日志发现,从系统运行初期,pga一直不足
采取措施:将pga_aggreget_target 由2G调整到了6G;
3、业务反映依然慢:生成了awr报告:awrrpt_1_24562_24563after_pga_goup.html
4、通过ADDM报告建议,将系统 参数调整:alter system set cursor_sharing=‘FORCE’;业务反映系统依然慢,有时会好点。
5、晚上重启数据库之前生成了awr报告:awrrpt_1_24564_24565_before_dbstartup.html
6、重启数据库后,业务反映系统明显加快。同样的一个数据同步程序,重启之前需要跑近10个小时,重启后跑2个小时左右。
生成awr报告:awrrpt_1_24578_245979_after_dbstartup.html。
可以看到db时间下降很多,同时,ADDM报告也未生成建议。
7、再一次收集了数据库重启后,上午10点至11点(工作忙时)的awr数据,发现dbtime又开始增加
以上标红的语句又开始执行多次了
可以看到在top等待事件中的相关top的sql.
根据ADDM报告的各项情况(尽管看来目前的SGA=10G是够用的。)
4月27日,对系统的内存启用了自动管理,功能将在下次重启数据库后生效。
参考文档 : Automatic Memory Management (AMM) on 11g & 12c (Doc ID 443746.1)
Troubleshooting ‘cursor: pin S wait on X’ waits. (Doc ID 1349387.1)
SQL> ALTER SYSTEM SET memory_max_target=30G SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET memory_target=30G SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM RESET sga_target=0 SCOPE=SPFILE;
ALTER SYSTEM RESET sga_target=0 SCOPE=SPFILE
*
ERROR at line 1:
ORA-00922: missing or invalid option
SQL> ALTER SYSTEM SET sga_target=0 SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET pga_aggregate_target=0 SCOPE=SPFILE;
System altered.