【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障

Attack_on_Jager發表於2021-08-24

說明

檢查點系列相關文章地址:

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/archive

4. log file switch (clearing log file)

5. log file switch completion

6. log switch/archive

7. log file sync

注:

如果這些等待事件中的一個或多個頻繁地出現,並且對應的值比較大,就可能需要最佳化了,例如,新增 redo 日誌檔案或增加redo日誌的大小,可能另外還需要修改檢查點引數。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2788418/,如需轉載,請註明出處,否則將追究法律責任。

相關文章