您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“SQLT使用方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“SQLT使用方法是什么”吧!
在使用 SQLT
提供的主要方法之前,須確保 SQLT
已經(jīng)被正確
安裝,并且使用 SQLT
的用戶被賦予了 SQLT_USER_ROLE
角色。
假如 SQLT 安裝繞過了 SQL*Net (意味著您并沒有在安裝期間沒有指定連接符),那么在從遠(yuǎn)端客戶端執(zhí)行任何 SQLT 主要方法前,您將需要手動設(shè)置連接符參數(shù)。即,假如您連接使用 sqlplus scott/tiger@myprod 那么您需要執(zhí)行: EXEC sqltxadmin.sqlt$a.set_sess_param('connect_identifier', '@myprod');
SQLT
為一個(gè) SQL 語句提供了下面 7種主要方法來生成診斷詳細(xì)信息
XTRACT,
XECUTE,
XTRXEC,
XTRSBY,
XPLAIN,
XPREXT 和
XPREXC。
XTRACT,
XECUTE,
XTRXEC,
XTRSBY,
XPREXT 和
XPREXC 處理綁定變量和會做 bind peeking(綁定變量窺視),但是
XPLAIN 不會。這是因?yàn)?nbsp;
XPLAIN 是基于 EXPLAIN PLAN FOR
命令執(zhí)行的,該命令不做 bind peeking。因此,如果可能請避免使用
XPLAIN.
除了
XPLAIN 的 bind peeking 限制外,所有這 7種主要方法都可以提供足夠的診斷詳細(xì)信息,對性能較差或產(chǎn)生錯(cuò)誤結(jié)果集的 SQL 進(jìn)行初步評估。如果該 SQL 仍位于內(nèi)存中或者 Automatic Workload Repository (AWR
) 中,請使用
XTRACT 或
XTRXEC,其他情況請使用
XECUTE。對于 Data Guard 或備用只讀數(shù)據(jù)庫,請使用
XTRSBY。僅當(dāng)其他方法都不可行時(shí),再考慮使用
XPLAIN。
XPREXT 和
XPREXC 是類似于
XTRACT 和
XECUTE,但為了提高 SQLT
的性能它們禁了一些 SQLT
的特性。
如果您知道待分析 SQL 的 SQL_ID
或 HASH_VALUE
,請使用該方法,否則請使用
XECUTE。您可以在 AWR
report 中找到 SQL_ID
,在 SQL trace 中找到 HASH_VALUE
(在 SQL 文本上面,通過 "hv=" 標(biāo)記進(jìn)行標(biāo)識)。
如果該 SQL 仍位于內(nèi)存中,或其已被 AWR
捕獲,那么使用 XTRACT 可發(fā)現(xiàn)該 SQL 并提供一組診斷文件,否則 XTRACT 將輸出錯(cuò)誤。
如果對 SQL 進(jìn)行硬分析時(shí)將參數(shù) STATISTICS_LEVEL
設(shè)置為 ALL
,將可以得到重要的性能統(tǒng)計(jì)信息(如每步操作的實(shí)際行數(shù))。您也可以通過在 SQL 中包括以下 CBO 提示來生成同樣有用的性能統(tǒng)計(jì)信息:/*+ GATHER_PLAN_STATISTICS */
。在 11g 中,您可以在 SQL 中包含以下 CBO 提示以獲得增強(qiáng)的診斷信息:/*+ GATHER_PLAN_STATISTICS MONITOR */
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XTRACT
執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XTRACT
方法,首先確保已
安裝了 SQLT
,然后以已執(zhí)行待分析 SQL 的應(yīng)用程序用戶身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxtract.sql
腳本,傳遞 SQL_ID
或 HASH_VALUE
。
# 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
與 XTRACT方法相比,該方法提供的信息更為詳細(xì)。正如名稱 XECUTE 所指示的,它將執(zhí)行正在分析的 SQL,然后生成一組診斷文件。它的主要缺點(diǎn)是如果正在分析的 SQL 需要很長時(shí)間來執(zhí)行,那么該方法也要花費(fèi)很長的時(shí)間。
根據(jù)經(jīng)驗(yàn)法則,僅當(dāng) SQL 執(zhí)行少于 1 小時(shí)的情況下,才考慮使用此方法,否則請使用 XTRACT。
使用此 XECUTE 方法之前,必須創(chuàng)建一個(gè)包含 SQL 文本的文本文件。如果 SQL 包括綁定變量,則您的文件必須包含綁定變量聲明和賦值。以 sqlt/input/sample/script1.sql
為例。您的 SQL 應(yīng)該包含標(biāo)記 /* ^^unique_id */
(強(qiáng)烈建議)。
如果您的 SQL 需要與 SQL*Plus 無法使用的數(shù)據(jù)類型綁定,或者它使用了集合,您可能需要將 SQL 嵌入到匿名 PL/SQL 塊中。在這種情況下,請使用 sqlt/input/sample/plsql1.sql
作為此方法的輸入示例。
對于修改數(shù)據(jù)的語句,例如 INSERT/UPDATE/DELETE,工具會在語句執(zhí)行之前創(chuàng)建一個(gè)保存點(diǎn),這樣在會話結(jié)束時(shí)事務(wù)處理可以回退到該保存點(diǎn)。關(guān)于 SAVEPOINT(保存點(diǎn))的更多信息,請參閱《Oracle Concepts》參考手冊。
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XECUTE 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XECUT 方法,首先確保已
安裝了 SQLT
,然后以已執(zhí)行待分析 SQL 的應(yīng)用程序用戶身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxecute.sql
腳本,傳遞包含 SQL 文本及其綁定變量的文本文件名稱。您需要將該文件放置到 sqlt/input
目錄下,并在位于 sqlt 主目錄時(shí)運(yùn)行 XECUTE,如下所示:
# cd sqlt # sqlplus apps SQL> START [path]sqltxecute.sql [path]scriptname [sqltxplain_password] SQL> START run/sqltxecute.sql input/sample/script1.sql sqltxplain_password
該方法合并了 XTRACT 和 XECUTE 的功能。實(shí)際上,XTRXEC 連續(xù)執(zhí)行了這兩種方法。針對所請求 SQL 語句找到的開銷較大的計(jì)劃, XTRACT 階段將生成一個(gè)包含提取的 SQL 以及綁定聲明和賦值的腳本。然后,XTRXEC 使用第一階段創(chuàng)建的腳本執(zhí)行 XECUTE 階段。
SQLT 根據(jù)在內(nèi)存中生成開銷最大的執(zhí)行計(jì)劃時(shí)窺視到的值,創(chuàng)建腳本的綁定變量的以供 XTRACT使用。判斷計(jì)劃的開銷大小的標(biāo)準(zhǔn)是基于這個(gè)計(jì)劃的平均執(zhí)行時(shí)間。
如果 XTRXEC 僅執(zhí)行了第一個(gè)階段( XTRACT) 后就輸出錯(cuò)誤,您可能需要檢查在第二階段( XECUTE)使用的腳本并相應(yīng)調(diào)整綁定變量。使用不常用數(shù)據(jù)類型時(shí)尤其需要進(jìn)行調(diào)整。
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XTRXEC 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XTRXEC 方法,首先確保已
安裝了 SQLT
,然后以執(zhí)行待分析 SQL 的應(yīng)用程序用戶身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxtrxec.sql
腳本,傳遞 SQL_ID
或 HASH_VALUE
。
# 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
如果需要分析在 Data Guard 或備用只讀數(shù)據(jù)庫上執(zhí)行的 SQL,請使用該方法。您需要知道要分析的 SQL 的 SQL_ID
或 HASH_VALUE
。
在主庫上創(chuàng)建一個(gè)到備庫的database link,連接到的用戶需要有訪問數(shù)據(jù)字典的權(quán)限,通常都是使用有 DBA 權(quán)限的用戶。CREATE PUBLIC DATABASE LINK V1123 CONNECT TO mydba IDENTIFIED by mydba_password
USING '(DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)
(HOST=coesrv14.us.oracle.com)(PORT=1521))(CONNECT_DATA=(SID = V1123)))';
如果該 SQL 仍位于只讀數(shù)據(jù)庫中的內(nèi)存中,那么使用 XTRSBY 可發(fā)現(xiàn)該 SQL 并提供一組診斷文件,否則 XTRSBY 將輸出錯(cuò)誤。
如果對只讀數(shù)據(jù)庫中的 SQL 進(jìn)行硬分析時(shí)將參數(shù) STATISTICS_LEVEL
設(shè)置為 ALL
,將可以得到重要的性能統(tǒng)計(jì)信息(如每個(gè)執(zhí)行計(jì)劃操作的實(shí)際行數(shù))。您也可以通過在 SQL 中包括以下 CBO 提示來生成同樣有用的性能統(tǒng)計(jì)信息:/*+ GATHER_PLAN_STATISTICS */
。在 11g 中,您可以在 SQL 中包含以下 CBO 提示以獲得改進(jìn)的診斷信息:/*+ GATHER_PLAN_STATISTICS MONITOR */
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XTRSBY 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
XTRSBY 需要 3 個(gè)參數(shù): SQL id,DB_LINK的 ID,以及 SQLTXPLAIN
的密碼。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XTRSBY
方法,首先確保在主數(shù)據(jù)庫上已安裝了 SQLT
,并且已復(fù)制到該只讀數(shù)據(jù)庫中。然后連接到主要數(shù)據(jù)庫中的 SQL*Plus 并執(zhí)行 sqlt/run/sqltxtrsby.sql
腳本,傳遞 SQL_ID
或 HASH_VALUE
,然后是 DB_LINK。
# cd sqlt/run # sqlplus apps SQL> START sqltxtrsby.sql [SQL_ID]|[HASH_VALUE] [sqltxplain_password] [DB_LINK] SQL> START sqltxtrsby.sql 0w6uydn50g8cx sqltxplain_password V1123 SQL> START sqltxtrsby.sql 2524255098 sqltxplain_password v1123
除了 XTRSBY,還可以從只讀數(shù)據(jù)庫直接執(zhí)行 sqlt/utl/sqlhc.sql
或 sqlt/utl/sqlhcxec.sql
。這兩個(gè)只讀腳本不在數(shù)據(jù)庫上安裝任何東西,也不執(zhí)行 DML 命令。它們提供在 XTRSBY 中沒有的其他信息。
該方法是基于 EXPLAIN PLAN FOR
命令執(zhí)行的,因此它將無視您的 SQL 語句引用的綁定變量。僅當(dāng)無法使用
XTRACT 或
XECUTE 時(shí)才使用該方法。
使用此 XPLAIN 方法之前,必須創(chuàng)建一個(gè)包含 SQL 文本的文本文件。如果 SQL 包括綁定變量,您有兩個(gè)選擇:保持 SQL 文本“不變”,或謹(jǐn)慎使用相同數(shù)據(jù)類型的字面值替換該綁定。以 sqlt/input/sample/sql1.sql
為例。
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XPLAIN 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XPLAIN 方法,首先確保已
安裝了 SQLT
,然后以已執(zhí)行待分析 SQL 的應(yīng)用程序用戶的身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxplain.sql
腳本,傳遞包含 SQL 文本的文本文件名稱。您需要將該文件放置到 sqlt/input 目錄下,并在位于 sqlt 主目錄時(shí)運(yùn)行 XPLAIN,如下所示:
# cd sqlt # sqlplus apps SQL> START [path]sqltxplain.sql [path]filename [sqltxplain_password] SQL> START run/sqltxplain.sql input/sample/sql1.sql sqltxplain_password
假如您想使用
XTRACT 同時(shí)希望禁用一些 SQLT
的特性使之 執(zhí)行更快,請使用這個(gè)方法。腳本 sqlt/run/sqltcommon11.sql
顯示了哪些特性被禁用。
假如您知道要被分析的 SQL 的 SQL_ID
或者 HASH_VALUE
,使用這個(gè)方法,否則請使用
XPREXC.您可以在 AWR report 中找到 SQL_ID
,在 SQL trace 中找到 HASH_VALUE
(在 SQL 文本上面,通過 "hv=" 標(biāo)記進(jìn)行標(biāo)識)。
使用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XPREXT 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XPREXT
方法,首先確保已
安裝了 SQLT
,然后以已執(zhí)行待分析 SQL 的應(yīng)用程序用戶身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxprext.sql
腳本,傳遞 SQL_ID
或 HASH_VALUE
。
# cd sqlt/run # sqlplus apps SQL> START sqltxprext.sql [SQL_ID]|[HASH_VALUE] [sqltxplain_password] SQL> START sqltxprext.sql 0w6uydn50g8cx sqltxplain_password SQL> START sqltxprext.sql 2524255098 sqltxplain_password
假如您想使用
XECUTE 同時(shí)希望禁用一些 SQLT
的特性使之執(zhí)行更快,請使用這個(gè)方法。腳本 sqlt/run/sqltcommon11.sql
顯示哪些特性被禁用
根據(jù)經(jīng)驗(yàn)法則,僅當(dāng) SQL 執(zhí)行少于 1 小時(shí)的情況下,才考慮使用此方法,否則請使用 XPREXT。
使用此 XPREXC 方法之前,必須創(chuàng)建一個(gè)包含 SQL 文本的文本文件。如果 SQL 包括綁定變量,則您的文件必須包含綁定變量聲明和賦值。以 sqlt/input/sample/script1.sql
為例。您的 SQL 應(yīng)該包含標(biāo)記 /* ^^unique_id */
,這個(gè)標(biāo)記應(yīng)該拼寫準(zhǔn)確,換句話說請不要改變它。
如果您的 SQL 需要與 SQL*Plus 無法使用的數(shù)據(jù)類型綁定,或者它使用了集合,您可能需要將 SQL 嵌入到匿名 PL/SQL 塊中。在這種情況下,請使用 sqlt/input/sample/plsql1.sql
作為此方法的輸入示例。
對于修改數(shù)據(jù)的語句,例如 INSERT/UPDATE/DELETE,工具會在語句執(zhí)行之前創(chuàng)建一個(gè)保存點(diǎn),這樣在會話結(jié)束時(shí)事務(wù)處理可以回退到該保存點(diǎn)。關(guān)于 SAVEPOINT(保存點(diǎn))的更多信息,請參閱《Oracle Concepts》參考手冊。
用此方法時(shí),它會要求提供 SQLTXPLAIN
密碼,這個(gè)在導(dǎo)出與該 XPREXC 執(zhí)行所對應(yīng)的 SQLT
Repository 時(shí)會被使用。
該方法需要對執(zhí)行 SQLT
的應(yīng)用程序用戶授予 SQLT_USER_ROLE
角色。
要使用該 XPREXC 方法,首先確保已
安裝了 SQLT
,然后以已執(zhí)行待分析 SQL 的應(yīng)用程序用戶身份連接到 SQL*Plus,并執(zhí)行 sqlt/run/sqltxprexc.sql
腳本,傳遞包含 SQL 文本及其綁定變量的文本文件名稱。您需要將該文件放置到 sqlt/input
目錄下,并在位于 sqlt 主目錄時(shí)運(yùn)行 XPREXC,如下所示:
# cd sqlt # sqlplus apps SQL> START [path]sqltxprexc.sql [path]scriptname [sqltxplain_password] SQL> START run/sqltxprexc.sql input/sample/script1.sql sqltxplain_password
除了
主要方法,SQLT
還提供了一些特殊方法。
最常用的特殊方法是
COMPARE。該方法將 SQLT
先前的兩次執(zhí)行(
主要方法中的任何一個(gè))作為輸入并生成差異分析的報(bào)告。
其他特殊方法包括: TRCANLZR, TRCAXTR, TRCASPLIT 和 XTRSET。前三種方法基于一個(gè)單獨(dú)的 SQL trace 執(zhí)行操作,最后一種對一組 SQL trace 執(zhí)行操作。
當(dāng)您具有兩個(gè)相似的系統(tǒng) (SOURCES),但是相同 SQL 語句在其中一個(gè)系統(tǒng)中執(zhí)行正常而在另一個(gè)系統(tǒng)中不正常時(shí),請使用該 COMPARE 方法。該方法可以幫助確定兩個(gè) SOURCES 之間在計(jì)劃、元數(shù)據(jù)、CBO 統(tǒng)計(jì)信息、初始化參數(shù)以及問題修復(fù)控制方面的區(qū)別。前提是必須在這兩個(gè)系統(tǒng)中
安裝 SQLT
,并且必須在兩個(gè)系統(tǒng)中的相同 SQL 上使用了
主要方法中的任何一個(gè)。
這種比較可以在任何兩個(gè) SOURCES 數(shù)據(jù)庫的其中一個(gè)或第三個(gè) COMPARE 數(shù)據(jù)庫執(zhí)行。后者應(yīng)包含兩個(gè) SOURCES 的 SQLT
Repoitory。要導(dǎo)入 SQLT
Repository,請使用由任何
主要方法生成的 sqlt_99999_readme.html 文件中提供的語法。
一旦 COMPARE 系統(tǒng)包含來自兩個(gè) SOURCES 的資源庫,執(zhí)行 sqlt/run/sqltcompare.sql
,以 SYS
或應(yīng)用程序用戶身份連接。系統(tǒng)將顯示 STATEMENT_ID
的列表,您可以從中選擇要比較的兩個(gè) SQLT
存儲的執(zhí)行程序。輸入兩個(gè) STATEMENT_ID
后,會要求您提供來自兩個(gè) SOURCES 的特定 PLAN_HASH_VALUE
。
# cd sqlt # sqlplus sqltxplain SQL> START [path]sqltcompare.sql [STATEMENT_ID 1] [STATEMENT_ID 2] SQL> START run/sqltcompare.sql 92263 72597 SQL> START run/sqltcompare.sql
該方法將 SQL 跟蹤文件名作為輸入并分析該文件。實(shí)際 trace 必須位于 TRCA$INPUT1
目錄中,其在
安裝期間默認(rèn)為 USER_DUMP_DEST
目錄。
TRCANLZR 方法還可以將多個(gè)相關(guān) trace 作為一組同時(shí)進(jìn)行分析。當(dāng)分析 PX trace 時(shí)將需要用到該功能。在這種情況下,需要?jiǎng)?chuàng)建一個(gè)包含 trace 列表的 control.txt
文件(每行一個(gè)文件名,不包括路徑指定),并將此 control.txt
放置到 TRCA$INPUT1
或 TRCA$INPUT2
目錄中。這兩個(gè)目錄在
安裝。期間分別默認(rèn)為 USER_DUMP_DEST
和 BACKGROUND_DUMP_DEST
。然后,TRCANLZR 將從兩個(gè)輸入目錄之一讀取 control.txt
文件,并在這兩個(gè)目錄的任何一個(gè)中查找 trace 集。
TRCANLZR 類似于 TKPROF
,但它具有擴(kuò)展功能。當(dāng)它分析一個(gè) trace (或 trace 集)時(shí),它還包括類似 CBO 統(tǒng)計(jì)信息的 Schema 對象特征以及一些其他重要的性能度量。
要使用此 TRCANLZR
方法,請確保首先已經(jīng)
安裝了 SQLT
。然后,以生成 trace 的應(yīng)用程序用戶身份啟動 SQL*Plus,并執(zhí)行 sqlt/run/sqltrcanlzr.sql
腳本,傳遞待分析 trace 的名稱或者填充了文件名的 control.txt
文件名稱。不用包括任何路徑指定。
# cd sqlt # sqlplus [application_user] SQL> START [path]sqltrcanlzr.sql [SQL Trace filename|control.txt] SQL> START run/sqltrcanlzr.sql V1122_ora_24292.trc SQL> START run/sqltrcanlzr.sql control.txt
該方法執(zhí)行的操作與 TRCANLZR相同,但是當(dāng) trace 分析完成時(shí),它會針對在 trace 中發(fā)現(xiàn)的頂級 SQL 繼續(xù)執(zhí)行 XTRACT 。該方法基本上自動調(diào)用并合并 TRCANLZR 和 XTRACT 生成的所有報(bào)告。
要使用此 TRCAXTR 方法,請確保首先已經(jīng)
安裝了 SQLT
。然后,進(jìn)入到 sqlt/run
目錄并啟動 SQL*Plus,以生成 trace 的應(yīng)用程序用戶身份連接。接著,執(zhí)行 sqlt/run/sqltrcaxtr.sql
腳本,傳遞待分析 trace 的名稱或者填充了文件名的 control.txt
文件名稱。不用包括任何路徑指定。
# cd sqlt/run # sqlplus [application_user] SQL> START sqltrcaxtr.sql [SQL Trace filename|control.txt] SQL> START sqltrcaxtr.sql V1122_ora_24292.trc SQL> START sqltrcaxtr.sql control.txt
該方法將 EVENT 10046 和其他 EVENT(通常是 10053)創(chuàng)建的 SQL trace 文件名作為輸入。然后,它繼續(xù)將此輸入 trace 文件分為兩個(gè)輸出文件。一個(gè)包含與 EVENT 10046 對應(yīng)的 trace 行,另一個(gè)包含其補(bǔ)充信息。換句話說,第二個(gè)文件包含不屬于 EVENT 10046 語法部分的那些 trace 行。所以,如果輸入 trace 是同時(shí)使用 EVENT 10046 和 EVENT 10053 創(chuàng)建的,得到的輸出文件將是 10046 trace 和 10053 trace 。實(shí)際輸入 trace 必須位于 TRCA$INPUT1
目錄中,其在
安裝期間默認(rèn)為 USER_DUMP_DEST
目錄。
要使用此 TRCASPLIT 方法,請確保首先已經(jīng)
安裝了 SQLT
。然后,啟動 SQL*Plus(以任何 SQLT 用戶身份連接)并執(zhí)行 sqlt/run/sqltrcasplit.sql
腳本,傳遞待分割 trace 的名稱。不用包括任何路徑指定。
# cd sqlt # sqlplus [sqlt_user] SQL> START [path]sqltrcasplit.sql [SQL Trace filename] SQL> START run/sqltrcasplit.sql V1122_ora_24292.trc
XTRSET 從內(nèi)存或 AWR
提取由 SQL_ID
或 HASH_VALUE
標(biāo)識的 SQL 語句列表,然后對其中每個(gè) SQL 語句執(zhí)行
XTRACT。最后它將所有 SQLT
文件合并到一個(gè)壓縮文件中。通過一系列測試確定相同 SQL 語句集的基準(zhǔn)時(shí)需要使用此 XTRSET 方法。
使用此方法時(shí),它只要求提供一次 SQLTXPLAIN
密碼,將在對 SQL 語句列表的每個(gè)
XTRACT 執(zhí)行導(dǎo)出 SQLT
Repository 時(shí)需要。
要使用此 XTRSET 方法,必須首先
安裝了 SQLT
。導(dǎo)航到 sqlt/run
目錄并啟動 SQL*Plus,以發(fā)出所有或大部分 SQL 語句的應(yīng)用程序用戶身份連接。然后,執(zhí)行 sqlt/run/sqltxtrset.sql
腳本。出現(xiàn)提示時(shí),傳遞由 SQL_ID
或 HASH_VALUE
標(biāo)識的 SQL 語句列表(以逗號分隔),以及 SQLTXPLAIN
的密碼。
# cd sqlt/run # sqlplus [application_user] SQL> START sqltxtrset.sql List of SQL_IDs or HASH_VALUEs: 2yas208zgt5cv, 6rczmqdtg99mu, 8w8tjgac6tv12
除了 主要方法和 特殊方法,SQLT 還提供了一些其他功能。僅當(dāng) Oracle Support 要求時(shí)才使用這些高級方法和模塊: PROFILE, XGRAM, XPLORE 和 XHUME。最后一個(gè)僅供 Oracle Support 使用,僅用于內(nèi)部測試環(huán)境中。
當(dāng)性能較差的 SQL 語句正好有已知的更好的計(jì)劃時(shí),在 10g 使用該 PROFILE 方法可以提供一個(gè)快速修復(fù)。這個(gè)更好的計(jì)劃可以位于相同或不同系統(tǒng)中的內(nèi)存中,或者位于相同或不同系統(tǒng)的 AWR
中。換句話說,如果有更好的計(jì)劃,該方法允許使用自定義 SQL Profile “固定”該計(jì)劃。使用該方法之前,必須對您要為其提取和固定此計(jì)劃的 SQL 使用
主要方法中的任何一個(gè)。在 11g 或更高的版本你可以使用 SQL Plan Management (SPM) 來代替這個(gè)方法。
請注意,PROFILE 使用了 DBMS_SQLTUNE
API,其是“SQL Tuning Advisor”的一部分,因此需要 Oracle Tuning Pack 的使用許可。僅當(dāng)您的數(shù)據(jù)庫具有 Oracle Tuning Pack 的許可時(shí)才使用該 PROFILE 方法。
要使用該 PROFILE 方法,請確保 SQLT 已經(jīng)
安裝并在 SOURCE 系統(tǒng)中使用,然后以 SYS
或 SQLTXPLAIN
身份連接到 SQL*Plus,執(zhí)行 sqlt/utl/sqltprofile.sql
腳本。它將要求提供先前 SQLT 執(zhí)行的列表中的 STATEMENT_ID
。選擇 STATEMENT_ID
后,它將要求提供可用計(jì)劃列表中的 PLAN_HASH_VALUE
。這些執(zhí)行計(jì)劃是在對 SQL 使用
XTRACT 或
XECUTE 時(shí)捕獲和存儲的。
在需要實(shí)施自定義 SQL Profile 的 TARGET 系統(tǒng)中,不需要安裝 SQLT
。
該 PROFILE 方法基本上包含 4 個(gè)步驟。
在 SOURCE 系統(tǒng)上使用 XTRACT 或 XECUTE。
在 SOURCE 中執(zhí)行 sqlt/utl/sqltprofile.sql
,以生成自定義 SQL Profile 的腳本。
查看生成的腳本并根據(jù)需要調(diào)整 SQL 文本。例如,在使用
XECUTE 時(shí)要移除由 /* ^^unique_id */
生成的注釋。
在要固定計(jì)劃的 TARGET 系統(tǒng)中執(zhí)行生成的腳本。
# cd sqlt/utl # sqlplus sqltxplain SQL> START sqltprofile.sql [statement id] [plan hash value]; SQL> START sqltprofile.sql 32263 923669362; SQL> START sqltprofile.sql 32263; SQL> START sqltprofile.sql;
由該方法創(chuàng)建的自定義 SQL Profile 是基于計(jì)劃大綱數(shù)據(jù)完成的,因此它更穩(wěn)定。如果您稍后要?jiǎng)h除此自定義 SQLProfile,您可以在 PROFILE 生成的腳本內(nèi)找到刪除命令。
如果尚未在 SOURCE 系統(tǒng)中安裝 SQLT 或者無法為有關(guān) SQL 執(zhí)行
XTRACT 或
XECUTE您可以使用 sqlt/utl/coe_xfr_sql_profile.sql
實(shí)現(xiàn) PROFILE 方法提供的相同功能。該腳本也使用了 DBMS_SQLTUNE
;因此,需要 Oracle Tuning Pack 的許可。
如果您的系統(tǒng)為 11g 并且在考慮使用該 PROFILE 方法,請查看由任何 主要方法生成的動態(tài) Readme 文件,并查找 "Create SQL Plan Baseline from SQL Set" 部分內(nèi)容。如動態(tài) Readme 文件中所述,您可以考慮通過 SQL Set 使用“SQL Plan Management SPM”。
XGRAM 模塊提供了修改 CBO 直方圖的功能,用以增強(qiáng)某些列的 CBO 統(tǒng)計(jì)信息或作為測試用例的一部分。通過該模塊,可以插入、更新或刪除直方圖或單個(gè)存儲桶。
實(shí)施 XGRAM 模塊的腳本的按字母排序列表:
sqlt/utl/xgram/sqlt_delete_column_hgrm.sql
sqlt/utl/xgram/sqlt_delete_hgrm_bucket.sql
sqlt/utl/xgram/sqlt_delete_schema_hgrm.sql
sqlt/utl/xgram/sqlt_delete_table_hgrm.sql
sqlt/utl/xgram/sqlt_display_column_stats.sql
sqlt/utl/xgram/sqlt_insert_hgrm_bucket.sql
sqlt/utl/xgram/sqlt_set_bucket_size.sql
sqlt/utl/xgram/sqlt_set_column_hgrm.sql
sqlt/utl/xgram/sqlt_set_min_max_values.sql
XGRAM 是在 SQLT 安裝過程中自動安裝的。如果您想在 SQLT
以外使用這個(gè)模塊,您只需要安裝一個(gè)單獨(dú)的 package 并使用以上腳本(不依賴于 SQLTXADMIN
)。
如果在數(shù)據(jù)庫升級后 SQL 開始性能變差或者它可能產(chǎn)生明顯的錯(cuò)誤結(jié)果,那么使用 XPLORE 模塊將有所幫助。如果將 optimizer_features_enable
OFE 切換到升級之前的數(shù)據(jù)庫版本,SQL 重新執(zhí)行正?;蛘弋a(chǎn)生不同的結(jié)果,您可以使用此 XPLORE 模塊嘗試標(biāo)識哪個(gè)特定 Optimizer 功能或修復(fù)引入了未預(yù)期的行為。確定特定故障有助于進(jìn)一步故障排除或者對此特定功能和(或)修復(fù)執(zhí)行更詳細(xì)的研究。
此模塊通過切換初始化參數(shù)和 fix control 參數(shù)來搜索計(jì)劃。
僅當(dāng)滿足以下所有條件時(shí)才使用 XPLORE:
當(dāng)使用“差”計(jì)劃時(shí),SQL 執(zhí)行性能差或者返回錯(cuò)誤結(jié)果。
可以在測試系統(tǒng)上重新生成差計(jì)劃(最好沒有真實(shí)數(shù)據(jù))。
可以通過切換 OFE 在測試系統(tǒng)上重新生成“好”計(jì)劃。
您需要將原因范圍縮小到特定參數(shù)或 bug fix control。
您對測試系統(tǒng)具有完全訪問權(quán)限,包括 SYS
訪問權(quán)限。
當(dāng)符合以下任一條件時(shí)不要使用 XPLORE:
SQL 語句可能導(dǎo)致數(shù)據(jù)損壞或被更新。
在 SQL 引用的表中存在大量數(shù)據(jù)。
執(zhí)行 SQL 需要的時(shí)間可能超過幾秒鐘。
要安裝和使用該 XPLORE 模塊,請閱讀相應(yīng)的 sqlt/utl/xplore/readme.txt
。
該模塊僅供 Oracle Support 使用,且只能在 Oracle 內(nèi)部系統(tǒng)中使用。因?yàn)樗鼤聰?shù)據(jù)字典,而且 Oracle 不支持此操作。
XHUME 可用于搜索僅舊版本的 Schema 對象統(tǒng)計(jì)信息(與一個(gè) SQL 相關(guān))可以產(chǎn)生的計(jì)劃。使用 SQLT
創(chuàng)建測試用例 (TC
) 后,該 XHUME 模塊將系統(tǒng)地還原先前版本的統(tǒng)計(jì)信息,并通過執(zhí)行正在研究的 SQL 來生成計(jì)劃。它將捕獲統(tǒng)計(jì)信息的每個(gè)版本可以生成的計(jì)劃。然后生成報(bào)告,可用于了解執(zhí)行計(jì)劃不穩(wěn)定性的原因,或者查找可用于創(chuàng)建 SQL Profile 或 SQL Plan Baseline 的執(zhí)行計(jì)劃。
該模塊永遠(yuǎn)不能應(yīng)用于生產(chǎn)系統(tǒng),因?yàn)樗鼤薷臄?shù)據(jù)字典。僅能用于 Oracle 內(nèi)部測試環(huán)境。
作為修改測試用例 (TC
) Schema 對象的創(chuàng)建日期的替代方案,可以在 TC
實(shí)施之前更改服務(wù)器上的日期并在創(chuàng)建 TC
后重置為當(dāng)前日期。這個(gè)臨時(shí)的先前日期至少要早一個(gè)月,這樣 Schema 對象統(tǒng)計(jì)信息的所有歷史記錄的保存時(shí)間均將新于 TC
對象創(chuàng)建時(shí)間。
僅當(dāng)滿足以下所有下列條件時(shí)才使用 XHUME:
已知 SQL 有多個(gè)計(jì)劃并且其中一個(gè)或多個(gè)性能較差。
Bind peeking 已經(jīng)被排除不是導(dǎo)致計(jì)劃不穩(wěn)定的故障。
對 CBO 參數(shù)的更改已經(jīng)被排除不是導(dǎo)致計(jì)劃不穩(wěn)定的故障。
您具有能產(chǎn)生已知計(jì)劃的 SQLT
TC
(“好”或“差”計(jì)劃)。
您需要了解計(jì)劃的不穩(wěn)定性或者正在查找專用的已知“好”計(jì)劃。
您對 Oracle 內(nèi)部測試系統(tǒng)具有完全訪問權(quán)限,包括 SYS
訪問權(quán)限。
當(dāng)符合以下任一條件時(shí)不要使用 XHUME:
SQL 語句可能導(dǎo)致數(shù)據(jù)損壞或被更新。
您只有一個(gè)生產(chǎn)環(huán)境中可以運(yùn)行 TC
。
您沒有使用 SQLT
創(chuàng)建 TC
。
您對包含您 TC
的 Oracle 內(nèi)部測試系統(tǒng)沒有 SYS
訪問權(quán)限。
Bind peeking
或 CBO
參數(shù)尚未被排除不是導(dǎo)致計(jì)劃不穩(wěn)定的故障。
要安裝和使用此 XHUME 模塊,請閱讀相應(yīng)的 sqlt/utl/xhume/readme.txt
。
在SQLT運(yùn)行后,它會產(chǎn)生一個(gè)zip格式的輸出文件(這個(gè)文件包含了SQLT相關(guān)的各種輸出)。這個(gè)文件的文件名一般為:
sqlt_s<sqltrun#>_<method>_<sql_id>.zip
如果您已經(jīng)使用一個(gè)特定的方法執(zhí)行完一個(gè)SQLT,那么您可以根據(jù)方法的名稱來找到輸出文件。比如,下面的文件就是使用XTRACT方法執(zhí)行SQLT后產(chǎn)生的::
sqlt_s45774_xtract_fp48hh6dkm529.zip
如果輸出文件的文件名是類似下面的格式:
sqlt_s50605_log.zip
那么SQLT很可能并未成功執(zhí)行,請檢查log文件中的錯(cuò)誤日志.
一個(gè)正常的SQLT zip文件一般包含下面的文件(僅作參考) :
$ unzip -v sqlt_s45774_xtract_fp48hh6dkm529.zip Archive: sqlt_s45774_xtract_fp48hh6dkm529.zip Length Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- ----- -------- ---- 0 Stored 0 0% 04-09-2015 18:34 00000000 sqlt_s45774_10053_explain.trc 0 Stored 0 0% 04-09-2015 18:34 00000000 sqlt_s45774_10053_i1_c0_extract.trc 610 Stored 610 0% 04-09-2015 18:35 51c54175 sqlt_s45774_cell_state.zip 4187 Stored 4187 0% 04-09-2015 18:35 ded1bbdd sqlt_s45774_driver.zip 12814 Defl:N 2983 77% 04-09-2015 18:34 d359b6e7 sqlt_s45774_lite.html 18879 Stored 18879 0% 04-09-2015 18:35 8270f836 sqlt_s45774_log.zip 862169 Defl:N 121759 86% 04-09-2015 18:34 9c99af83 sqlt_s45774_main.html 3991 Stored 3991 0% 04-09-2015 18:35 d42245f2 sqlt_s45774_opatch.zip 12572 Defl:N 3645 71% 04-09-2015 18:34 2c6b2c0a sqlt_s45774_readme.html 199784 Stored 199784 0% 04-09-2015 18:35 93a85ee1 sqlt_s45774_tc.zip 394 Defl:N 293 26% 04-09-2015 18:35 a405bd8b sqlt_s45774_tc_script.sql 35 Stored 35 0% 04-09-2015 18:35 4e1901f1 sqlt_s45774_tc_sql.sql 52511 Stored 52511 0% 04-09-2015 18:35 2aee61c6 sqlt_s45774_tcx.zip 406 Stored 406 0% 04-09-2015 18:35 6df4be4d sqlt_s45774_trc.zip 216 Defl:N 113 48% 04-09-2015 18:35 213361e5 sqlt_s45774_xpand.sql 2319 Stored 2319 0% 04-09-2015 18:35 6f79e5b8 sqlt_s45774_sqldx.zip -------- ------- --- ------- 1170887 411515 65% 16 files
到此,相信大家對“SQLT使用方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。