-
SQLT 概覽 -
安全模式
-
安裝
SQLT -
卸載
SQLT -
升級
SQLT -
常見問題
-
上傳SQLT文件給Oracle技術支持
|
|
主要方法
-
XTRACT
-
XECUTE
-
XTRXEC
-
XPLAIN
-
XTRSBY
-
XPREXT
-
XPREXC
|
|
特殊方法
-
COMPARE
-
TRCANLZR
-
TRCAXTR
-
TRCASPLIT
-
XTRSET
|
|
高級方法和模塊
-
PROFILE
-
XGRAM
-
XPLORE
-
XHUME
|
SQLT
概覽
SQLTXPLAIN
,也稱為
SQLT
,是 Oracle Server Technologies Center of Expertise - ST CoE 提供的一款工具。
SQLT
主要方法 通過輸入的一個 SQL 語句,可輸出一組診斷文件。這些文件通常用于診斷性能不佳或者產生錯誤結果的 SQL 語句。

創(chuàng)新互聯公司長期為上千多家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為牡丹企業(yè)提供專業(yè)的網站設計、成都做網站,牡丹網站改版等技術服務。擁有十年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
對于sql語句的調優(yōu),SQLT 需要您有一些專業(yè)的知識來進行分析。對于許多問題來說我們推薦首先使用SQL Health Check 來檢查您的SQL,假如不能解決再嘗試使用SQLT。SQLHC的詳細介紹請看:
Document 1366133.1 SQL Tuning Health-Check Script (SQLHC)
一旦
安裝,便可通過向
SQLT
傳遞一個包含 SQL 語句腳本(包括綁定變量)的文本文件或者其
SQL_ID
,對 SQL 語句進行分析。SQL_ID 可在 AWR 和 ASH 的報告中找到,HASH_VALUE 出現在 SQL_TRACE 的輸出中(SQL 文本的上面以"hv="的標志來識別)。您也能在 V$SQL 視圖中發(fā)現這些字段。請參照接下來的文檔:
Document 1627387.1 How to Determine the SQL_ID for a SQL Statement
SQLT
主要方法 會連接到數據庫,收集執(zhí)行計劃、基于成本的 Optimizer CBO 統(tǒng)計信息、Schema 對象元數據、性能統(tǒng)計信息、配置參數和會影響正在分析的 SQL 性能的其他元素。這些方法會對有問題的SQL_ID產生一攬子輸出,包括一個html格式的"main"報表。關于如何使用"main"報表,您可以參考下面的文檔:
Document 1922234.1 SQLT Main Report: Usage Suggestions
SQLT
可以使用 Oracle Diagnostic 和(或)Oracle Tuning Packs,前提是您的數據庫需要具有這兩個軟件包的許可證。這兩個軟件包向
SQLT
工具提供了增強的功能。在
SQLT
安裝期間,您可以指定是否其中一個軟件包在您的數據庫被授權使用。如果一個都沒有,
SQLT
仍會提供一些基本信息,用于最開始的 SQL 性能診斷。
安全模式
SQLT
在
安裝的過程中會創(chuàng)建兩個用戶和一個角色。這些用戶和角色的名字都是固定的。
SQLT
repository 是由用戶
SQLTXPLAIN
管理的。
SQLT
的使用者每次使用
SQLT
提供的
主要方法時都要提供
SQLTXPLAIN
的密碼。
SQLTXPLAIN
用戶被賦予了以下系統(tǒng)權限:
- CREATE SESSION
- CREATE TABLE
SQLT
包含的 PL/SQL 程序包以及視圖都是由用戶
SQLTXADMIN
管理的。
SQLTXADMIN
用戶處于鎖定狀態(tài)并且由一個隨機產生的密碼保護。
SQLTXADMIN
用戶被賦予了以下系統(tǒng)權限:
- ADMINISTER SQL MANAGEMENT OBJECT
- ADMINISTER SQL TUNING SET
- ADVISOR
- ALTER SESSION
- ANALYZE ANY
- SELECT ANY DICTIONARY
- SELECT_CATALOG_ROLE
所有
SQLT
的使用者在使用
SQLT
提供的
主要方法之前必須被賦予
SQLT_USER_ROLE
這個角色。
SQLT_USER_ROLE
角色被賦予了以下系統(tǒng)權限:
- ADVISOR
- SELECT_CATALOG_ROLE
12c 在缺省情況下 SYS 用戶不能作為
SQLT
的用戶,因為 PL/SQL 安全模型上改變的原因。
為了處理這個改變,
SQLTADMIN
需要在 SYS 上被授予
INHERIT PRIVILEGES
權限。
GRANT INHERIT PRIVILEGES ON USER SYS TO SQLTXADMIN
更多詳細的內容請參見 Oracle? Database PL/SQL Language Reference 12c Release 1 (12.1) - Invoker's Rights and Definer's Rights (AUTHID Property) and in Oracle? Database Security Guide 12c Release 1 (12.1) - Managing Security for Definer's Rights and Invoker's Rights
安裝
SQLT
SQLT
安裝在其自己的 schema
SQLTXPLAIN
和
SQLTXADMIN
下。它不會將任何對象安裝到應用程序 schema 中。您可以在 UNIX、Linux 或 Windows 平臺,Oracle DB 10.2、11.1、11.2 及更高版本中安裝此版本的 SQLT。對于所有“應用于:”的信息,請參照文檔215187.1。
安裝步驟:
-
卸載先前版(可選)。
該可選步驟將刪除所有廢棄的
SQLTXPLAIN/SQLTXADMIN
schema 對象,并為全新安裝準備環(huán)境。如果要保留 SQLT Repository 的現有內容,請?zhí)^此步驟(推薦)。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdrop.sql
- 以
SYS
身份連接數據庫并執(zhí)行安裝腳本
sqlt/install/sqcreate.sql
。 # cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcreate.sql
在安裝期間,系統(tǒng)將要求您輸入以下參數值:
- 可選連接標識符(當安裝在一個可插拔數據庫上時是必須的)
在一些受限訪問的系統(tǒng)中,您可能需要指定連接標識符,例如
@PROD
。如果不需要連接標識符,則不要輸入任何數據,只需單擊回車鍵。什么也不鍵入是最常使用的安裝方法。
當安裝在一個可插拔數據庫上時連接標識符是必須提供的。
-
SQLTXPLAIN
密碼。 在大多數系統(tǒng)中區(qū)分大小寫。
-
SQLTXPLAIN
默認表空間。 從可用的永久表空間列表中,選擇
SQLT
Repository 的
SQLTXPLAIN
應使用的表空間。它必須具有 50MB 以上的可用空間。
-
SQLTXPLAIN
臨時表空間。 從可用的臨時表空間列表中,選擇
SQLTXPLAIN
臨時操作和臨時對象應使用的表空間。
- 可選應用程序用戶。
這是發(fā)出要分析 SQL 語句的用戶。例如,在 EBS 系統(tǒng)上,指定為
APPS
;在 Siebel 上,應指定為 SIEBEL;在 People Soft 上,應指定為
SYSADM
。系統(tǒng)不會要求您輸入此用戶的密碼。也可以在安裝該工具后添加其他的
SQLT
用戶,方法為:授予他們角色
SQLT_USER_ROLE
。
- 授權的 Oracle Pack。(T,D 或 N)
可以指定
T
表示 Oracle Tuning;
D
表示 Oracle Diagnostic,或
N
表示都沒有。如果選擇
T
或
D
,SQLT 可以在它生成的診斷文件中包含授權的內容。默認值為
T
。如果選擇
N
,SQLT 將只安裝限定的功能。
如果需要靜默安裝,可以使用下面三個選項來傳遞所有 6 個安裝參數:
- 在文件中。
首先使用一個腳本進行值的預先定義,類似于示例腳本
sqlt/install/sqdefparams.sql
。然后使用
sqlt/install/sqcsilent.sql
,而不是
sqlt/install/sqcreate.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdefparams.sql
SQL> START sqcsilent.sql
- 命令行。
執(zhí)行
sqlt/install/sqcsilent2.sql
,而不是
sqlt/install/sqcreate.sql
。前者以內嵌形式輸入 6 個安裝參數。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcsilent2.sql '' sqltxplain USERS TEMP '' T
- 在 Oracle 內部安裝。
執(zhí)行
sqlt/install/sqcinternal.sql
,而不是
sqlt/install/sqcreate.sql
。前者首先執(zhí)行
sqlt/install/sqdefparams.sql
,然后是
sqlt/install/sqcsilent.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqcinternal.sql
假如您需要更多關于安裝問題的幫助,您能從下面的論壇得到幫助:
SQLTXPLAIN: SQLT Installation Issues
卸載
SQLT
卸載
SQLT
會同時移除
SQLT
Repository 以及所有
SQLTXPLAIN/SQLTXADMIN
schema 對象。另外還會刪除
SQLTXPLAIN
和
SQLTXADMIN
用戶。要卸載
SQLT
,只需以 SYS 身份連接,執(zhí)行
sqlt/install/sqdrop.sql
。
# cd sqlt/install
# sqlplus / as sysdba
SQL> START sqdrop.sql
升級
SQLT
如果在系統(tǒng)中已安裝先前版本的
SQLT
,則可以將
SQLT
升級到其最新版本,同時部分保留現有
SQLT
Repository 的一些對象。然后可以使用新遷移的
SQLT
Repository 來恢復 CBO 統(tǒng)計信息,或者在
SQLT
的新舊執(zhí)行程序之間執(zhí)行
COMPARE。
要升級
SQLT
,只需執(zhí)行
安裝,而不用執(zhí)行可選
卸載步驟。
如果升級失敗,可能是先前的
SQLT
版本太舊而無法升級。在這種情況下,請先繼續(xù)
卸載
SQLT
,然后執(zhí)行全新
安裝。