

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Oracle SQLT
<a name="Oracle.Options.SQLT"></a>

Amazon RDS 透過使用 SQLT 選項來支援 Oracle SQLTXPLAIN (SQLT)。您可以將 SQLT 搭配用於任何版本的 Oracle Database 19c 和更高版本。

Oracle `EXPLAIN PLAN` 陳述式可以決定 SQL 陳述式的執行計劃。它可以驗證 Oracle 最佳化工具是否選擇特定的執行計劃，例如巢狀迴圈聯結。還可協助您了解最佳化工具的決策，例如，為何選擇巢狀迴圈聯結，而非雜湊聯結。因此，`EXPLAIN PLAN` 協助您了解陳述式的效能。

SQLT 是可產生報告的 Oracle 公用程式。報告包含物件統計資料、物件中繼資料、最佳化工具相關的初始化參數，以及其他資訊，供資料庫管理員用來微調 SQL 陳述式以獲得最佳效能。SQLT 會產生 HTML 報告，內含報告中所有區段的超連結。

不同於「自動工作負載儲存區域」或 Statspack 報告，SQLT 以個別 SQL 陳述式為處理對象。SQLT 是 SQL、PL/SQL 和 SQL\$1Plus 檔案的集合，這些檔案收集、儲存並顯示效能資料。

以下是每個 SQLT 版本支援的 Oracle 版本。


****  

| SQLT 版本 | Oracle Database 21c | Oracle 資料庫 19c | 
| --- | --- | --- | 
|  2018-07-25.v1  |  支援  |  支援  | 
|  2018-03-31.v1  |  不支援  |  不支援  | 
|  2016-04-29.v1  |  不支援  |  不支援  | 

若要下載 SQLT 並取得使用的說明：
+ 登入您的「我的 Oracle 支援」帳戶，並開啟下列文件：
+ 若要下載 SQLT：[文件 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1)
+ 關於 SQLT 使用指示：[文件 1614107.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1614107.1)
+ 關於 SQLT 的常見問答集：[文件 1454160.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454160.1)
+ 有關如何閱讀 SQLT 輸出的相關資訊：[文件 1456176.1](https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=1456176.1&attachid=1456176.1:58&clickstream=yes)
+ 如需解譯主要報告：[文件 1922234.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1922234.1)

Amazon RDS 不支援下列 SQLT 方法：
+ `XPLORE` 
+ `XHUME` 

## SQLT 先決條件
<a name="Oracle.Options.SQLT.PreReqs"></a>

下列是使用 SQLT 的先決條件：
+ 您必須移除 SQLT 所需的使用者和角色 (若存在)。

  SQLT 選項會在資料庫執行個體上建立下列使用者和角色：
  + `SQLTXPLAIN` 使用者
  + `SQLTXADMIN` 使用者
  + `SQLT_USER_ROLE` 角色

  如果您的資料庫執行個體有任何這些使用者或角色，請透過 SQL 用戶端登入資料庫執行個體，然後使用下列陳述式捨棄這些使用者或角色：

  ```
  DROP USER SQLTXPLAIN CASCADE;
  DROP USER SQLTXADMIN CASCADE;   
  DROP ROLE SQLT_USER_ROLE CASCADE;
  ```
+ 您必須移除 SQLT 所需的資料表空間 (若存在)。

  SQLT 選項會在資料庫執行個體上建立下列資料表空間：
  + `RDS_SQLT_TS`
  + `RDS_TEMP_SQLT_TS`

  如果您的資料庫執行個體有這些資料表空間，請使用 SQL 用戶端登入資料庫執行個體，然後捨棄這些資料表空間。

## SQLT 選項設定
<a name="Oracle.Options.SQLT.Options"></a>

 SQLT 可以搭配「Oracle 調校套件」和「Oracle 診斷套件」所提供的授權功能來使用。Oracle 調校套件包含 SQL Tuning Advisor，Oracle 診斷套件包含「自動工作負載儲存區域」。SQLT 設定可允許或禁止從 SQLT 存取這些功能。

Amazon RDS 支援 SQLT 選項的下列設定。


****  

| 選項設定 | 有效值 | 預設值 | 描述 | 
| --- | --- | --- | --- | 
|  `LICENSE_PACK`  |  `T`, `D`, `N`  |  `N`   |  您想要透過 SQLT 來存取的 Oracle 管理套件。輸入下列其中一個值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.SQLT.html)  Amazon RDS 不提供這些 Oracle 管理套件的授權。如果您指出想要使用的套件不在資料庫執行個體中，您可以對資料庫執行個體使用 SQLT。不過，SQLT 無法存取此套件，而 SQLT 報告也不含此套件的資料。例如，若您指定 `T`，但資料庫執行個體不含 Oracle 調校套件，則 SQLT 可處理資料庫執行個體，但所產生的報告不含 Oracle 調校套件相關的資料。   | 
|  `VERSION`  |  `2016-04-29.v1` `2018-03-31.v1` `2018-07-25.v1`  |  `2016-04-29.v1`   |  您要安裝的 SQLT 版本。  對於 Oracle Database 19c 和 21c，唯一支援的版本是 `2018-07-25.v1`。此版本是這些版本的預設版本。   | 

## 新增 SQLT 選項
<a name="Oracle.Options.SQLT.Add"></a>

下列是將 SQLT 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將 SQLT 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

在新增 SQLT 選項之後，只要選項群組為作用中，SQLT 就立即變成作用中。

**將 SQLT 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇您想要使用的 Oracle 版本。所有版本都支援 SQLT 選項。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **SQLT** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

      
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. (選用) 在每一個含有 SQLT 選項的資料庫執行個體上驗證 SQLT 安裝。

   1. 以主要使用者身分使用 SQL 用戶端來連接到資料庫執行個體。

      如需使用 SQL 用戶端連接至 Oracle 資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

   1. 執行下列查詢：

      ```
      SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;                        
      ```

      該查詢會傳回 Amazon RDS 上 SQLT 選項的目前版本。`12.1.160429` 即為 Amazon RDS 上可用 SQLT 版本的範例。

1. 變更 SQLT 選項所建立之使用者的密碼。

   1. 以主要使用者身分使用 SQL 用戶端來連接到資料庫執行個體。

   1. 執行下列 SQL 陳述式來變更 `SQLTXADMIN` 使用者的密碼：

      ```
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   1. 執行下列 SQL 陳述式來變更 `SQLTXPLAIN` 使用者的密碼：

      ```
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

**注意**  
升級 SQLT 需要先解除安裝舊版的 SQLT，然後安裝新版本。因此，升級 SQLT 時會遺失所有 SQLT 中繼資料。資料庫的主要版本升級也會解除安裝並重新安裝 SQLT。例如，從 Oracle Database 19c 升級至 Oracle Database 21c 即為主要版本升級。

## 使用 SQLT
<a name="Oracle.Options.SQLT.Using"></a>

SQLT 可搭配 Oracle SQL\$1Plus 公用程式一起使用。

**使用 SQLT**

1.  從「我的 Oracle 支援」網站上的[文件 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1) 下載 SQLT .zip 檔案。
**注意**  
您無法從「我的 Oracle 支援」網站下載 SQLT 12.1.160429。Oracle 已廢除這個較舊的版本。

1.  解壓縮 SQLT .zip 檔案。

1.  從命令列提示字元中，切換到檔案系統上的 `sqlt/run` 目錄。

1.  從命令提示字元中，開啟 SQL\$1Plus，並以主要使用者身分連接到資料庫執行個體。

   如需使用 SQL\$1Plus 連接到資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

1.  取得 SQL 陳述式的 SQL ID：

   ```
   SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='sql_statement';                               
   ```

   輸出類似如下：

   ```
   SQL_ID
   -------------
   chvsmttqjzjkn
   ```

1. 使用 SQLT 來分析 SQL 陳述式：

   ```
   START sqltxtract.sql sql_id sqltxplain_user_password                    
   ```

   例如，若為 SQL ID `chvsmttqjzjkn`，請輸入下列陳述式：

   ```
   START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password                    
   ```

   SQLT 會在執行 SQLT 命令的目錄中產生 HTML 報告及相關的資源，並全部壓縮成一個 .zip 檔案。

1.  (選用) 若要讓應用程式使用者利用 SQLT 來診斷 SQL 陳述式，請執行下列陳述式，將 `SQLT_USER_ROLE` 授予每個應用程式使用者：

   ```
   GRANT SQLT_USER_ROLE TO application_user_name;                
   ```
**注意**  
Oracle 不建議以 `SYS` 使用者或具備 `DBA` 角色的使用者來執行 SQLT。最好將 `SQLT_USER_ROLE` 授予應用程式使用者，再以應用程式使用者的帳戶來執行 SQLT 診斷。

## 升級 SQLT 選項
<a name="Oracle.Options.SQLT.Upgrading"></a>

使用 Amazon RDS for Oracle 之後，可以將 SQLT 選項從您現有的版本升級到更新版本。若要升級 SQLT 選項，請為新版 SQLT 完成 [使用 SQLT](#Oracle.Options.SQLT.Using) 中的步驟 1–3。另外，如果您在該節的步驟 7 中授予舊版 SQLT 的權限，請再次對於新版 SQLT 授予該權限。

升級 SQLT 選項會導致失去舊版 SQLT 的中繼資料。舊版 SQLT 的結構描述和相關物件都會被捨棄，並安裝較新版的 SQLT。如需 SQLT 最新版變更的詳細資訊，請參閱「My Oracle Support」網站上的[文件 1614201.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1614201.1)。

**注意**  
不支援版本降級。

## 修改 SQLT 設定
<a name="Oracle.Options.SQLT.ModifySettings"></a>

在啟用 SQLT 之後，您可以修改該選項的 `LICENSE_PACK` 和 `VERSION` 設定。

如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。如需每項設定的詳細資訊，請參閱[SQLT 選項設定](#Oracle.Options.SQLT.Options)。

## 移除 SQLT 選項
<a name="Oracle.Options.SQLT.Remove"></a>

您可以從資料庫執行個體中移除 SQLT。

若要從資料庫執行個體中移除 SQLT，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除 SQLT，請從資料庫執行個體所屬的選項群組中移除 SQLT 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。

   
+ 若要從單一資料庫執行個體中移除 SQLT，請修改資料庫執行個體，並指定不包括 SQLT 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。