今天是週末,看點不燒腦的內容。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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。