Statspack初步學和用第三篇 分析初步

junsansi發表於2007-09-24
Statspack初步學和用第一篇 安裝初步

http://junsansi.itpub.net/post/29894/397681

Statspack初步學和用第二篇 使用初步

http://junsansi.itpub.net/post/29894/398041


Statspack報告分為如下部分:

1. 資料庫總體資訊

含例項、版本、是否RAC、CPU、實體記憶體、oracle記憶體設定等等

2. 每秒每事務的資源消耗情況

3. 例項的各元件的命中率

4. 共享池總體情況(Shared Pool Statistics)

5. 等待時間最長的前5個等待事件(Top 5 Timed Events)

含前5等待事件,兩次取樣間cpu佔用,記憶體分配等資訊。Oracle各版本等待事件並不完全相同,數量依版本升高而增加,關於各項等待事情的說明,三思之前的"學習動態效能表"系列文章中有過介紹,有心的朋友可以去搜搜看。

6. DB所有等待事件(Wait Events)

Total wait time>=0.001的事件。

7. 後臺等待事件(Background Wait Events)

Total wait time>=0.001的事件。

8. 柱狀顯示的等待事件(Wait Event Histogram)

顯示各等待事件不同響應時間的比例

9. 根據CPU開銷進行排序的SQL(SQL ordered by CPU)

10. 根據執行時間進行排序的SQL(SQL ordered by Elapsed)

11. 根據BufferGets進行排序的SQL(SQL ordered by Gets)

12. 根據物理讀進行排序的SQL(SQL ordered by Reads)

13. 根據執行次數排序的SQL(SQL ordered by Executions)

14. 根據解析呼叫次數排序的SQL(SQL ordered by Parse Calls)

15. 例項記錄的各項活動的統計資料(Instance Activity Stats)

16. 表空間的IO統計(Tablespace IO Stats)

17. 資料檔案的IO統計(File IO Stats)

18. 資料檔案讀柱狀圖形式統計(File Read Histogram Stats)

19. Buffer池統計資料(Buffer Pool Statistics)

含例項恢復的統計資料,buffer池大小設定建議等等。

20. PGA統計資料(PGA Aggr Target Stats)

含PGA快取命中率,柱狀圖形式的統計以及PGA設定建議等等。

21. 程式的記憶體佔用情況(Process Memory Summary Stats)

含佔用記憶體較多的程式等。

22. undo段摘要

23. undo段統計

24. 鎖存器的當前情況

25. 鎖存器睡眠等待統計

26. 鎖存器失敗情況

27. 資料字典cache效能統計(Dictionary Cache Stats)

28. 庫快取的活動情況(Library Cache Activity)

29. Rule集(Rule Sets)

30. 共享池設定建議(Shared Pool Advisory)

31. SGA摘要(SGA Memory Summary)

32. SGA統計資訊(SQL Memory Statistics)

33. 系統引數(init.ora Parameters)

  其報告過長,限於篇幅,此處不再羅列及一一對照介紹,大家可以自己線下生成一份做對照理解。由此可以看到,Statspack報告確實非常全面

下面我們來看一下statspack都進行了什麼操作。

SQL> select s.text,s.line from user_source s where type='PACKAGE BODY' and NAME='STATSPACK';

  哇好長的程式碼,找到snap,發現有兩個,procedure和function,主要的操作都在function中進行。通過檢視我們發現,statspack.snap主要就是複製v$tables中的記錄。然後我們再來分析一下spreport.sql的奧妙,o原來是呼叫sprepins.sql啊,再開啟看看,哇嘞,更長更復雜,指令碼套指令碼。

  大致我們可以確認其是根據儲存在stats$tables中的資料做分析,並進行一些運算,將結果輸出。值的一提的是,sp*.sql中不少寫法還是很有意思,執行邏輯執行巧妙,各種函式運用靈活,值的花時間深入研究體會呀:)

  這僅僅只是statspack自身的操作,至於根據其報告輔助分析,並做適當調優,那涉及到的東西就更多了。在我看來其報告可以分為兩類來看,一類是優化業務邏輯,重點是根據9-14中羅列的各條SQL語句進行語句級調優,這可能跟你的業務邏輯關聯緊密。另一類則是根據其它各項的報告,進行oracle體系結構上的調優,比如增加減少SGA、PGA快取池大小啦,調整回滾段之類oracle自身設定達到優化目的。俺原本認為statspack不過是個輔助分析的小玩易兒,花個二三天功夫還不就輕鬆掌握了,但是分析了其生成原理之後,俺恍然意識到原來的認識太膚淺,初始配置下的statspack不過是個模板,如果你希望更強大的功能,或者想針對某方面進行調優,那你完全可以對其指令碼做改造,打造滿足你自己需求的statspack。但要實現這點就不只是說說這麼簡單了,u not only very clearly in statspack的儲存、分析、運算了若指掌,but 要對oracle的各項機制及相互間的關聯洞若觀火(黑黑,什麼都不懂也是種幸福啊,起碼不用操心啦,有啥用啥唄)

同樣,如果你真的到了這個境界,那我想statspack對你而言又回到了原點,僅僅只是參考。佛教裡有“見山是山,見水是水”,“見山不是山,見水不是山”,“見山還是山,見水還是水”三重境界,如此比對,一一深合其意啊。

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

相關文章