Oracle性能調整在工作中經常遇到,比如TopSQL的出現導致系統資源浪費嚴重、物理讀過多導致IO出現瓶頸、獨占鎖導致事務不能提交、索引建立不合理導致查詢速度極慢、PGA或者SGA設置不合理導致內存不足、PCTFREE值設置不合理導致的行鏈接、熱點塊等等。作為一個DBA應該實時的監控系統,然後找出問題,再分析問題,最後解決。真正有難度的是找出問題所在,對於大多數的問題,只要經驗足夠都是很好解決的。有經驗和沒經驗主要區別就在於定位問題的速度。
這篇文章淺談下Oracle性能調整工具。現在常用的工具如下:
•OEM,實時的Web性能監視
•第三方生產的工具,比如SpotLightOn Oracle
•反映數據庫運行狀態的視圖
•收集某段時間的性能數據,比如Statpack,9i默認使用
•收集某段時間的性能數據,比如AWR/ASH,10G及其以後默認使用
•其他工具,比如DRA
下面就我目前使用過的工具來談談這些工具的對比。首先,OEM作為一款網頁版的性能監控工具,直觀方便,對於初學者來說卻是是一個比較好的選擇。OEM可以生成AWR或者ASH報表,很多操作只是點點鼠標就可以完成。要相信,任何事物都有雙面性,有利肯定有弊。方便的後果就是你要付出很多代價。第一,基於Web界面的OEM很占內存,對於一台服務器來說這絕不能容忍;第二,OEM無非是把一些可以使用命令行修改的參數或者其他的操作通過頁面顯示,每一個操作都是對應著一條語句的,從點鼠標到真正的執行需要經過很多流程,這樣的話執行的效率會相當地低,並且很多操作不能及時地看到,其宣稱的實時性只不過是相對而言;第三,使用OEM太業余,不要跟我說只要達到目標什麼都可以,有更好的工具為什麼不用?然後,反應數據庫運行狀態的視圖相當有限,操作略顯麻煩。其次,Statpack使用需要額外的表空間存放收集數據,生成報表操作還需要先創建Statpack,然後生成快照,最後還需要調用生成報表腳本。最後,AWR或者ASH,這個方法是強烈推薦使用的,對於Oracle性能調優已經足夠使用了。出現問題後生成快照,然後調用awrrpt.sql生成AWR報表,調用ashrpt.sql生成ASH報表,選擇報表類型,快照點,如果選擇的是html格式(實際上工作中一般都是選擇的是此格式)接著使用浏覽器打開查看,進行分析,就可以得到數據庫在這一段時間是否有性能問題。當然分析AWR或者ASH報表需要對裡面的每個項有深入的了解,同時要求對Oracle體系結構耳熟能詳。AWR報表裡面的內容相當豐富,如果你只想優化SQL,可以使用ASH報表。
Oracle Performance Tuning Tools
性能調優是一門相當龐大的學問,要知道怎樣調優,為什麼要這樣調優,這個就是一個厚積薄發的過程。