欲善其事必利其器-SQL性能分析工具sqlhc簡單介紹

今天是週末,看點不燒腦的內容。html


sqlhc是老虎劉最經常使用的SQL優化工具,沒有之一。sql


這個工具在oracle 的 MOS網站能夠下載,原壓縮包裏面有3個文件,老虎劉通常只用sqlhc.sql一個文件。
數據庫


sqlhc是SQL health check的簡稱,可以收集sql相關的表、索引、統計信息、優化器參數、SQL執行狀況、等待事件等信息,能夠幫你檢查SQL存在的問題並優化SQL性能優化


使用sqlhc以前,首先要提供要檢查或優化的SQL的sql_id,通常DBA都知道sql_id,遺憾的是有些初級研發人員殊不知道sql_id爲什麼物,本身百度一下,很是簡單。微信


一般狀況下,咱們會取AWR報告的TOP SQL進行性能分析。oracle


執行方法:工具

使用sqlplus 連到數據庫(建議用DBA用戶,由於要訪問一些性能視圖)性能


兩種執行方法(注意:10g版本執行過程還須要輸入一個參數,直接回車便可):優化


一、一次輸入兩個參數:網站


SQL>@sqlhc T sql_id


二、根據提示依次輸入參數:


SQL> @sqlhc 


Parameter 1:

Oracle Pack License (Tuning, Diagnostics or None) [T|D|N] (required)


Enter value for 1: T

第一個參數,根據購買License狀況選擇T、D或N(大多數人會選擇T)


PL/SQL procedure successfully completed.


Parameter 2:

SQL_ID of the SQL to be analyzed (required)


Enter value for 2: 9kpzwpgf7gdz2  

第二個參數:你要檢查優化的SQL的sql_id


......具體執行過程較長,省略


執行過程大概幾分鐘到半小時不等(根據AWR保存週期、字典表大小不一樣相差較大,通常系統應該在5分鐘之內可以完成),在生產系統上執行沒關係張,對系統基本無影響!


執行過程有log,也有屏顯。

執行過程會inset 數據到plan_table表,執行結束會rollback。


執行完成後會在當前目錄下生成一個相似下面形式的一個zip文件:

sqlhc_20160722_170249_1g33tgkybp2sv.zip

文件名以sqlhc開頭,依次是日期、時間、sql_id。


壓縮包內的文件通常以下圖所示:

其中4個html文件和log.zip是一般存在的。


    10053 trace文件的生成須要11.2版本以上,sql_id仍在library cache內的狀況下。

    若是*sql_monitor.zip 也包含在sqlhc壓縮包內,說明你的SQL執行時間超過了5s,或者是並行的SQL,並且收集sqlhc時仍保留在sql monitor的內存。sql monitor對分析sql執行計劃有很大幫助,這個工具也能夠做爲一個專門的主題。若是遇到問題收集sqlhc信息及時,就很是有可能收集到sql monitor文件。若是一個sql執行完後超過半小時沒有收集sqlhc,sql monitor信息就就很是有可能被刷出內存。


主要分析的的3個html文件是:

*_health_check.html

*_diagnostics.html

*_execution_plan.html


具體內容很是豐富,本身動手看看吧,看多了你就成「老中醫」了!

找人幫忙時直接把zip文件發給對方,須要的信息基本上可以診斷分析和優化了。



分享持續更新中,敬請關注:老虎劉談SQL優化


腳本分享在QQ羣:16778072    

歡迎轉發分享給更多的朋友

爲了方便交流,有興趣的朋友能夠加入同名微信羣:



本文分享自微信公衆號 - 老虎劉談oracle性能優化(sql_tigerliu)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索