Oracle SQLT - Amazon Relational Database Service

Oracle SQLT

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*Plus 檔案的集合,這些檔案收集、儲存並顯示效能資料。

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

SQLT 版本 Oracle Database 21c Oracle 資料庫 19c

2018-07-25.v1

支援

支援

2018-03-31.v1

不支援

不支援

2016-04-29.v1

不支援

不支援

若要下載 SQLT 並取得使用的說明:

Amazon RDS 不支援下列 SQLT 方法:

  • XPLORE

  • XHUME

SQLT 先決條件

下列是使用 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 選項設定

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

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

選項設定 有效值 預設值 描述

LICENSE_PACK

T, D, N

N

您想要透過 SQLT 來存取的 Oracle 管理套件。輸入下列其中一個值:

  • T 表示您有 Oracle 調校套件和 Oracle 診斷套件的授權,而且想要從 SQLT 存取 SQL Tuning Advisor 和「自動工作負載儲存區域」。

  • D 表示您有 Oracle 診斷套件的授權,而且想要從 SQLT 存取「自動工作負載儲存區域」。

  • N 表示您沒有 Oracle 調校套件和 Oracle 診斷套件的授權,或您有其中一個或兩者的授權,但不想讓 SQLT 存取這些功能。

注意

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 選項

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

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

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

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

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

將 SQLT 選項新增至資料庫執行個體
  1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組,請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組:

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

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

    如需更多詳細資訊,請參閱 建立選項群組

  2. SQLT 選項新增至選項群組。如需新增選項的詳細資訊,請參閱將選項新增至選項群組

  3. 將選項群組套用至新的或現有的資料庫執行個體:

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

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

      如需使用 SQL 用戶端連接至 Oracle 資料庫執行個體的相關資訊,請參閱連線至 Oracle 資料庫執行個體

    2. 執行下列查詢:

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

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

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

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

    2. 執行下列 SQL 陳述式來變更 SQLTXADMIN 使用者的密碼:

      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;
      注意

      指定此處所顯示提示以外的密碼,作為安全最佳實務。

    3. 執行下列 SQL 陳述式來變更 SQLTXPLAIN 使用者的密碼:

      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;
      注意

      指定此處所顯示提示以外的密碼,作為安全最佳實務。

注意

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

使用 SQLT

SQLT 可搭配 Oracle SQL*Plus 公用程式一起使用。

使用 SQLT
  1. 從「我的 Oracle 支援」網站上的文件 215187.1 下載 SQLT .zip 檔案。

    注意

    您無法從「我的 Oracle 支援」網站下載 SQLT 12.1.160429。Oracle 已廢除這個較舊的版本。

  2. 解壓縮 SQLT .zip 檔案。

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

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

    如需使用 SQL*Plus 連接到資料庫執行個體的相關資訊,請參閱連線至 Oracle 資料庫執行個體

  5. 取得 SQL 陳述式的 SQL ID:

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

    輸出類似如下:

    SQL_ID ------------- chvsmttqjzjkn
  6. 使用 SQLT 來分析 SQL 陳述式:

    START sqltxtract.sql sql_id sqltxplain_user_password

    例如,若為 SQL ID chvsmttqjzjkn,請輸入下列陳述式:

    START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password

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

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

    GRANT SQLT_USER_ROLE TO application_user_name;
    注意

    Oracle 不建議以 SYS 使用者或具備 DBA 角色的使用者來執行 SQLT。最好將 SQLT_USER_ROLE 授予應用程式使用者,再以應用程式使用者的帳戶來執行 SQLT 診斷。

升級 SQLT 選項

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

升級 SQLT 選項會導致失去舊版 SQLT 的中繼資料。舊版 SQLT 的結構描述和相關物件都會被捨棄,並安裝較新版的 SQLT。如需 SQLT 最新版變更的詳細資訊,請參閱「My Oracle Support」網站上的文件 1614201.1

注意

不支援版本降級。

修改 SQLT 設定

在啟用 SQLT 之後,您可以修改該選項的 LICENSE_PACKVERSION 設定。

如需如何修改選項設定的詳細資訊,請參閱修改選項設定。如需每項設定的詳細資訊,請參閱SQLT 選項設定

移除 SQLT 選項

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

若要從資料庫執行個體中移除 SQLT,請執行下列其中一個動作:

  • 若要從多個資料庫執行個體中移除 SQLT,請從資料庫執行個體所屬的選項群組中移除 SQLT 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊,請參閱 從選項群組移除選項

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