メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Oracle SQLT

Amazon RDS は、SQLT オプションの使用を通じて SQLTPLAIN (SQLT) をサポートします。

Oracle EXPLAIN PLAN ステートメントでは、SQL ステートメントの実行計画を決定できます。Oracle オプティマイザが、ネステッドループされたループ結合などの特定の実行計画を選択しているかどうかを検証できます。また、ハッシュ結合を介してネステッドループ結合を選択した理由など、オプティマイザの決定を理解するのに役立ちます。そのため、EXPLAIN PLAN はステートメントのパフォーマンスの理解に役立ちます。

SQLT は、レポートを作成する Oracle ユーティリティです。このレポートには、オブジェクト統計、オブジェクトメタデータ、オプティマイザ関連の初期化パラメータ、およびデータベース管理者が最適なパフォーマンスを得るために SQL ステートメントを調節するために使用できるその他の情報が含まれています。SQLT は、レポート内のすべてのセクションへのハイパーリンクを含む HTML レポートを生成します。

SQLT は、自動ワークロードリポジトリまたは Statspack レポートとは異なり、個々の SQL ステートメントに対して機能します。SQLT は、パフォーマンスデータを収集、保存、表示する SQL、PL/SQL、および SQL*Plus ファイルのコレクションです。

SQLT をダウンロードして使用するための手順にアクセスするには、My Oracle Support アカウントにログインし、次のドキュメントを開きます。

Oracle データベースの以下のバージョンで SQLT 暗号化を使用できます。

  • Oracle 12c, 12.1.0.2

  • Oracle 11g, 11.2.0.4

Amazon RDS は、以下の SQLT メソッドをサポートしていません。

  • XPLORE

  • XHUME

&SQLT の前提条件

SQLT を使用するための前提条件は次のとおりです。

  • 存在する場合は、SQLT で必要とされるロールとユーザーを削除する必要があります。

    SQLT オプションは、DB インスタンスの次のユーザーおよびロールを作成します。

    • SQLTXPLAIN ユーザー

    • SQLTXADMIN ユーザー

    • SQLT_USER_ROLE ロール

    DB インスタンスにこれらのユーザーまたはロールがある場合は、SQL クライアントを使用して DB インスタンスにログインし、次のステートメントを使用して削除します。

    Copy
    DROP USER SQLTXPLAIN CASCADE; DROP USER SQLTXADMIN CASCADE; DROP ROLE SQLT_USER_ROLE CASCADE;
  • 存在する場合は、SQLT で必要とされるテーブルスペースを削除する必要があります。

    SQLT オプションは、DB インスタンスの次のテーブルスペースを作成します。

    • RDS_SQLT_TS

    • RDS_TEMP_SQLT_TS

    DB インスタンスにこれらのテーブルスペースがある場合は、SQL クライアントを使用して DB インスタンスにログインし、削除します。

SQLT オプション設定

SQLT は、Oracle Tuning Pack および Oracle Diagnostics Pack によって提供されるライセンス機能を使用して動作します。Oracle Tuning Pack には SQL チューニングアドバイザが、Oracle Diagnostics Pack には自動ワークロードリポジトリが含まれています。SQLT 設定は、SQLT からこれらの機能へのアクセスを有効または無効にします。

Amazon RDS は、SQLT オプションの次の設定をサポートします。

オプション設定 有効な値 デフォルト値 説明

LICENSE_PACK

TDN

T

SQLT を使用してアクセスする Oracle Management Pack。以下のいずれかの値にエラーがあります。

  • T は、Oracle Tuning Pack および Oracle Diagnostics Pack のライセンスがあり、SQL チューニングアドバイザおよび自動ワークロードリポジトリに SQLT からアクセスすることを示します。

  • D は、Oracle Diagnostics Pack のライセンスがあり、自動ワークロードリポジトリに SQLT からアクセスすることを示します。

  • N は、Oracle Tuning Pack および Oracle Diagnostics Pack のライセンスを所有していないこと、または一方または両方のライセンスを所有していますが、SQLT にアクセスを希望しないことを示しています。

注記

Amazon RDS はこれらの Oracle Management Pack のライセンスを提供しません。DB インスタンスに含まれていないパックを使用することを指定した場合は、DB インスタンスで SQLT を使用できます。ただし、SQLT はパックにアクセスできず、SQLT レポートにはパックのデータは含まれません。例えば、T を指定したが、DB インスタンスに Oracle Tuning Pack が含まれていない場合、SQLT は DB インスタンス上で動作しますが、作成するレポートに Oracle Tuning Pack に関係するデータは含まれません。

SQLT オプションの追加

DB インスタンスに SQLT オプションを追加する一般的なプロセスを次に示します。

  1. 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。

  2. オプショングループに SQLT オプションを追加します。

  3. オプショングループを DB インスタンスに関連付けます。

SQLT オプションの追加後、オプショングループがアクティブになるとすぐに、SQLT がアクティブになります。

SQLT オプションを DB インスタンスに追加するには

  1. 使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。または、次の設定でカスタム DB オプショングループを作成します。

    1. [Engine] で、使用する Oracle のエディションを選択します。SQLT オプションは、すべてのエディションでサポートされます。

    2. [Major Engine Version] で、[11.2] または [12.1] を選択します。

    詳細については、「オプショングループを作成する」を参照してください。

  2. オプショングループに [SQLT] オプションを追加します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。

  3. 新規または既存の DB インスタンスに、DB オプショングループを適用します。

  4. (オプション) SQLT オプションを伴う各 DB インスタンスの SQLT のインストールを検証します。

    1. マスターユーザーとして DB インスタンスに接続している SQL クライアントを使用します。

      Oracle DB インスタンスで SQL クライアントに接続する詳細については、「Oracle データベースエンジンを実行している DB インスタンスへの接続」を参照してください。

    2. 次のクエリを実行します。

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

      クエリは Amazon RDS の SQLT オプションの最新バージョンを返します。12.1.160429 は Amazon RDS で使用可能である SQLT のバージョンの例です。

  5. SQLT オプションで作成されたユーザーのパスワードを変更します。

    1. マスターユーザーとして DB インスタンスに接続している SQL クライアントを使用します。

    2. SQLTXADMIN ユーザーのパスワードを変更するには、以下の SQL ステートメントを実行します。

      Copy
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;
    3. SQLTXPLAIN ユーザーのパスワードを変更するには、以下の SQL ステートメントを実行します。

      Copy
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;

注記

SQLT をアップグレードするには、SQLT の旧バージョンをアンインストールしてから、新しいバージョンをインストールする必要があります。そのため、すべての SQLT メタデータが SQLT をアップグレードすると失われる可能性があります。データベースのメジャーバージョンのアップグレードでも、SQLT がアンインストールされ、再インストールされます。メジャーバージョンのアップグレードの例は、Oracle 11g から Oracle 12c へのアップグレードです。

SQLT の使用

SQLT は Oracle SQL*Plus ユーティリティで動作します。

使用する SQLT

  1. My Oracle Support サイトの ドキュメント 215187.1 から SQLT .zip ファイルをダウンロードします。

  2. SQLT .zip ファイルを解凍します。

  3. コマンドプロンプトから、ファイルシステムの sqlt/run をディレクトリに変更します。

  4. コマンドプロンプトで、SQL*Plus を開き、マスターユーザーとして DB インスタンスに接続します。

    SQL*Plus を使用する DB インスタンスへの接続の詳細については、「Oracle データベースエンジンを実行している DB インスタンスへの接続」を参照してください。

  5. SQL ステートメントの SQL ID を取得します。

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

    以下のような出力が生成されます。

    
    SQL_ID
    -------------
    chvsmttqjzjkn                
                
  6. SQLT を含む SQL ステートメントの分析:

    Copy
    START sqltxtract.sql sql_id sqltxplain_user_password

    例えば、SQL IDchvsmttqjzjkn に対して、以下を入力してください。

    Copy
    START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password

    SQLT は、HTML レポートと関連リソースを SQLT コマンドが実行されたディレクトリに .zip ファイルとして生成します。

  7. (オプション) アプリケーションユーザーが SQLT を使用して SQL ステートメントを診断できるようにするには、次のステートメントを使用して SQLT_USER_ROLE を各アプリケーションユーザーに付与します。

    Copy
    GRANT ROLE SQLT_USER_ROLE TO application_user_name;

    注記

    Oracle は、SYS ユーザー、または DBA ロールを持つユーザーで SQLT を実行することを推奨していません。SQLT_USER_ROLE をアプリケーションユーザーに付与することにより、アプリケーションユーザーのアカウントを使用して SQLT 診断を実行することをお勧めします。

SQLT 設定の変更

SQLT を有効にした後、オプションで LICENSE_PACK 設定を変更できます。

オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。各設定の詳細については、「SQLT オプション設定」を参照してください。

SQLT オプションの削除

DB インスタンスから SQLT を削除できます。

DB インスタンスから SQLT を削除するには、次のいずれかを実行します。

  • 複数の DB インスタンスから SQLT を削除するには、DB インスタンスが属しているオプショングループから SQLT オプションを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「オプショングループからオプションを削除する」を参照してください。

     

  • 単一の DB インスタンスから SQLT を削除するには、DB インスタンスを変更し、NNE オプションが含まれていない別のオプショングループを指定します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「Oracle データベースエンジンを実行する DB インスタンスの変更」を参照してください。

関連トピック