【TUNE_ORACLE】Oracle检查点(五)创建并利用Statspack定位检查点故障

来源:这里教程网 时间:2026-03-03 16:54:04 作者:

说明

检查点系列相关文章地址:

Oracle检查点(一)检查点(Checkpoint)概念介绍: http://blog.itpub.net/69992972/viewspace-2787595/

Oracle检查点(二)检查点性能: http://blog.itpub.net/69992972/viewspace-2787789/

Oracle检查点(三)增量检查点四个关键参数介绍: http://blog.itpub.net/69992972/viewspace-2787943/

Oracle检查点(四)检查点对redo日志的影响和redo日志大小设置建议: http://blog.itpub.net/69992972/viewspace-2788206/

Oracle检查点(五)创建并利用Statspack定位检查点故障: http://blog.itpub.net/69992972/viewspace-2788418/ 如何使用 Statspack?1. 安装 Statspack

SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql

根据下面提示依次输入:

Enter value for perfstat_password: oracle   --自定义一个初始密码
Enter value for default_tablespace: users  --指定一个已存在的表空间
Enter value for temporary_tablespace: temp   --指定一个临时表空间

2. 手动创建两个快照区间

SQL> exec statspack.snap  --生成第一个快照点
PL/SQL procedure successfully completed.
SQL> exec statspack.snap  --生成第二个快照点
PL/SQL procedure successfully completed.

注: 至少有两个快照才能生成一份报告,这点和生成AWR报告一样 3. 生成 Statspack报告

SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql

4. 自动生成 Statspack快照根据脚本spauto.sql里的内容,自定义一个生成快照的定时任务

SQL> variable jobno number;
SQL> variable instno number;
SQL> begin
2 select instance_number into :instno from v$instance;
3 dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
4 commit;
5 end;
6 /

执行定时任务

SQL>begin
2 dbms_job.run(1); --jobno根据上面的结果来指定
3 end;
4 /

利用Statspack定位检查点故障 一般每 15 分钟左右收集一次 Statspack 快照,这些快照报告将收集有关在该时间段已开始的检查点数量、已完成的检查点数量及检查点发生时写入的数据库缓冲数量等信息。此外,还包含关于 redo 活动的统计信息。 Statspack 报告中另一个值得关注的内容是等待事件,重点关注下面的等待事件,它们显示了 redo 日志吞吐量和检查点的问题:1. log file switch (checkpoint incomplete)2. log file switch (archiving needed)3. log file switch/archive4. log file switch (clearing log file)5. log file switch completion6. log switch/archive7. log file sync注:如果这些等待事件中的一个或多个频繁地出现,并且对应的值比较大,就可能需要优化了,例如,添加 redo 日志文件或增加redo日志的大小,可能另外还需要修改检查点参数。

相关推荐