2014年7月23日 星期三

SQLHC

介紹:
SQLHC (SQL Health Check) 是Database診斷工具之一,目的是快速取得SQL效能診斷資訊,你可以將它視為SQLT (SQLTXPLAIN) 的精簡版,不過和SQLT不同的是,SQLHC不需要安裝,所以也不會異動到Database,但是精簡版的工具當然有所限制,例如它無法在Data Guard的環境之下使用,也無法針對PL/SQL Procedure進行分析等等。

適用環境:
Oracle Database 10.2.0.1以後的版本

設定:
無須任何設定

執行條件:
需要在SQL*Plus執行sqlhc.sql,並且使用SYS,DBA,或是對Data Dictionary views有權限存取的User

執行步驟:
首先,先登入到database Server
# sqlplus / as sysdba
SQL> @sqlhc.sql
接著會出現參數1詢問:
Oracle Pack License (Tuning, Diagnostics or None) [T|D|N] (required)
請輸入T
接著會出現參數2詢問:
A valid SQL_ID for the SQL to be analyzed (required)
請輸入SQL_ID

或是直接輸入參數也可以
SQL> @sqlhc.sql T djkbyr8vkc64h

執行結果:
執行完之後會在Database Server上產生sqlhc_{timestamp}_{sql_id}.zip,解壓縮之後會產出以下檔案:
1_health_check.html
2_diagnostics.html
3_execution_plans.html
4_sql_detail.html
5_sql_monitor.zip
6_10053_trace_from_cursor.trc
8_sqldx.zip
9_log.zip

各位是不是覺得 "7" 怎麼不見了?? 但是產出結果就是如此,不用再去鑽牛角尖,畢竟這不是重點。
第一份的health check會給出 Oracle建議項目,各位可以自身經驗參考,如下圖所示:


第二份的diagnostics會直接從AWR and ASH Reprot 抓出和該SQL相關的數值。
第三份execution plan對各位來說比較有感覺,裡頭會詳述該 SQL 的執行計畫,有經驗的Programer看了執行計畫應該就知道哪個地方該被tuning。
第四份sql detail是以圖形化的方式直接呈現該SQL對各項資源的效能指標。

如果沒有太多時間,前4份文件給的資訊就足以tuning SQL statement,如果可以的話,其他文件會讓你發現對於該SQL相關的其他更微小的細節,

參考文件:
SQL Tuning Health-Check Script (SQLHC) (Doc ID 1366133.1)

沒有留言:

張貼留言