Statspack之初體驗
來源:互聯網
上載者:User
呵呵,今晚之前從來沒有做過Statspack(好像有點丟人)。這幾天一個資料庫實在被折磨得不行了,明明sga_max_size有1.5G,但是實際看整個執行個體才用了200+M記憶體,慢得要死,頻繁讀寫硬碟,偏偏硬碟又不是磁碟陣列,IO狂慢,唉,痛苦啊。於是決定花點時間學下執行個體最佳化,今天列印了幾頁Performance Tuning Guide的文檔,讀了讀關於Statspack的內容,在自己的筆記本上做了實驗,其實還是很容易的。
首先運行%ORACLE_HOME%\RDBMS\ADMIN PCREATE,期間指定perfstat使用者的密碼、資料表空間和暫存資料表空間,一般預設都無所謂。隨後出現一堆成功提示,如果沒來得及看也無所謂,可以到你dos視窗(我是Win32平台)的路徑下察看.lis檔案,那些就是安裝追蹤檔案。
然後就可以用perfstat/密碼來登陸sqlplus了,執行:EXEC STATSPACK.SNAP; 就是一次snapshot了,可以做成定時每隔一段時間運行一次。
察看報告:%ORACLE_HOME%\RDBMS\ADMIN PREPORT 運行後提示已做的所有snapshot的ID,然後根據需要選擇本次報告的開始ID和結束ID,隨後輸入檔案名稱就得到了一份.lst檔案(這裡文檔中將尾碼名寫成了.lis,應該是錯了,不過我看的是9i的文檔,啟動並執行是10g的資料庫,不知道是不是版本問題),可以用文本工具開啟察看。
檢查SQL:察看報告時可以看到跟蹤的SQL,其中就有hash value,把要更詳細察看的語句的hash value記錄下來,運行%ORACLE_HOME%\RDBMS\ADMIN PREPSQL時輸入,即可如前得到lst檔案,記錄了SQL語句的更詳細分析。
做多了snapshot,可能需要刪除一些曆史資料,運行ORACLE_HOME%\RDBMS\ADMIN PPURGE就可以了,根據提示選擇要刪除的ID,而全部刪除就ORACLE_HOME%\RDBMS\ADMIN PTRUNC,一路斷行符號即可。
最後要注意snapshot的level,這可以通過EXEC STATSPACK.MODIFY_STATSPACK_PARAMETER(i_snap_level=N)來修改,N可以為0,5,6,7,10,預設為5。
0 僅提供一般效能統計
5 增加了對SQL語句總體分析
6 增加了SQL計劃和使用
7 增加了分段(Segments)級的統計
10增加了對閂鎖(Latches)的分析
其中文檔建議對10要謹慎,因為代價較高。
因為只是自己玩的系統,所以也沒啥可分析的,只是練習了一下Statspack的使用。結果的分析還要學習學習,已經發現Tom的兩本書裡都有介紹,不過Expert One-on-One Oracle裡更詳細。