Oracle SQLT 診斷SQL語句效能(3)

tolywang發表於2013-12-11

4.  SQLT的主要方法:
XTRACT, XECUTE, XTRXEC, XTRSBY, XPLAIN, XPREXT and XPREXC 
A.   XTRACT方法,如果知道SQL_ID或HASH_VALUE, 那麼可以使用此方法。 sql_id可以從AWR得到,hash_value可以在SQL Trace中 hv= 中看到。否則使用XECUTE 。如果SQL還在記憶體中,或者已被AWR捕獲,那麼XPREXT會找到它並提供診斷檔案,否則XPREXT報錯。
# cd sqlt/run
# sqlplus apps
SQL> START sqltxtract.sql [SQL_ID]|[HASH_VALUE] [sqltxplain_password]
SQL> START sqltxtract.sql 0w6uydn50g8cx sqltxplain_password
SQL> START sqltxtract.sql 2524255098 sqltxplain_password
一些重要的效能統計資訊,比如執行計劃操作的實際的行數等。


B.   XECUTE方法比XTRACT方法提供更加詳細的資訊, 它執行被解析的SQL, 提供一套診斷檔案,缺點是SQL執行時間如果很長,那麼這個方法也需要很長時間。 所以如果一個SQL執行時間小於1小時,才考慮使用此方法。 否則使用XTRACT 。
   需要建立一個包含SQL TEXT的文字檔案,如果Sql有繫結變數,檔案中必須包含繫結變數申明和賦值,可以參考sqlt/input/sample/script1.sql 。
# cd sqlt
# sqlplus apps
SQL> START [path]sqltxecute.sql [path]scriptname [sqltxplain_password]
SQL> START run/sqltxecute.sql input/sample/script1.sql sqltxplain_password

C.  XTRXEC 方法聯合了XTRACT和XECUTE的特性
實際上,XTRXEC連續執行兩種方式(XTRACT, XECUTE), 其中XTRACT生成一個指令碼,包含有繫結變數及賦值的SQL, XECUTE隨後執行這個指令碼。
# cd sqlt/run
# sqlplus apps
SQL> START sqltxtrxec.sql [SQL_ID]|[HASH_VALUE] [sqltxplain_password]
SQL> START sqltxtrxec.sql 0w6uydn50g8cx sqltxplain_password
SQL> START sqltxtrxec.sql 2524255098 sqltxplain_password

還有其他幾種方法,這裡不做介紹,大家可以參考安裝目錄下的 sqlt_instructions.html 。

大多數時候使用  XTRACT方法 比較多,開始生成的檔案會有很多,最後結束的時候,會自動將所有生成的檔案自動集合打包為一個zip檔案, 檔名稱類似  sqlt_s70924_xtract_ 8xvmfgf0ybr7q.zip, 最後的是SQL_ID 。 整個過程時間比較長 。 具體如何分析診斷檔案,待續….

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1062954/,如需轉載,請註明出處,否則將追究法律責任。

相關文章