Oracle SQLT
Amazon RDS は、SQLT オプションの使用を通じて SQLTPLAIN (SQLT) をサポートします。SQLT は Oracle Database 19c 以降の任意のエディションで使用できます。
Oracle EXPLAIN PLAN
ステートメントでは、SQL ステートメントの実行計画を決定できます。Oracle オプティマイザが、ネステッドループされたループ結合などの特定の実行計画を選択しているかどうかを検証できます。また、ハッシュ結合を介してネステッドループ結合を選択した理由など、オプティマイザの決定を理解するのに役立ちます。そのため、EXPLAIN PLAN
はステートメントのパフォーマンスの理解に役立ちます。
SQLT は、レポートを作成する Oracle ユーティリティです。このレポートには、オブジェクト統計、オブジェクトメタデータ、オプティマイザ関連の初期化パラメータ、およびデータベース管理者が最適なパフォーマンスを得るために SQL ステートメントを調節するために使用できるその他の情報が含まれています。SQLT は、レポート内のすべてのセクションへのハイパーリンクを含む HTML レポートを生成します。
SQLT は、自動ワークロードリポジトリまたは Statspack レポートとは異なり、個々の SQL ステートメントに対して機能します。SQLT は、パフォーマンスデータを収集、保存、表示する SQL、PL/SQL、および SQL*Plus ファイルのコレクションです。
各 SQLT バージョンでは次の Oracle バージョンがサポートされています。
SQLT バージョン | Oracle Database 21c | Oracle Database 19c |
---|---|---|
2018-07-25.v1 |
サポート |
サポート |
2018-03-31.v1 |
サポートされません |
サポートされません |
2016-04-29.v1 |
サポートされません |
サポートされません |
SQLT および使用のためのアクセス手順をダウンロードします。
My Oracle Support アカウントにログインして、以下のドキュメントを開きます。
SQLT のダウンロード: ドキュメント 215187.1
SQLT のご利用方法: ドキュメント 1614107.1
SQLT についてのよくある質問: ドキュメント 1454160.1
出力された SQLT 読み取りについて: ドキュメント 1456176.1
メインレポートの解釈について: ドキュメント 1922234.1
Amazon RDS は、以下の SQLT メソッドをサポートしていません。
-
XPLORE
-
XHUME
&SQLT の前提条件
SQLT を使用するための前提条件は次のとおりです。
-
存在する場合は、SQLT で必要とされるロールとユーザーを削除する必要があります。
SQLT オプションは、DB インスタンスの次のユーザーおよびロールを作成します。
SQLTXPLAIN
ユーザーSQLTXADMIN
ユーザーSQLT_USER_ROLE
ロール
DB インスタンスにこれらのユーザーまたはロールがある場合は、SQL クライアントを使用して DB インスタンスにログインし、次のステートメントを使用して削除します。
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 オプションの次の設定をサポートします。
オプション設定 | 有効な値 | デフォルト値 | 説明 |
---|---|---|---|
|
|
|
SQLT を使用してアクセスする Oracle Management Pack。以下のいずれかの値にエラーがあります。
注記Amazon RDS はこれらの Oracle Management Pack のライセンスを提供しません。DB インスタンスに含まれていないパックを使用することを指定した場合は、DB インスタンスで SQLT を使用できます。ただし、SQLT はパックにアクセスできず、SQLT レポートにはパックのデータは含まれません。例えば、 |
|
|
|
インストールする SQLT のバージョン。 注記Oracle Database 19c と 21c では、サポートされているバージョンは |
SQLT オプションの追加
DB インスタンスに SQLT オプションを追加する一般的なプロセスを次に示します。
新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更します。
オプショングループに SQLT オプションを追加します。
オプショングループを DB インスタンスに関連付けます。
SQLT オプションの追加後、オプショングループがアクティブになるとすぐに、SQLT がアクティブになります。
SQLT オプションを DB インスタンスに追加するには
-
使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。または、次の設定でカスタム DB オプショングループを作成します。
-
[Engine] で、使用する Oracle のエディションを選択します。SQLT オプションは、すべてのエディションでサポートされます。
-
[メジャーエンジンのバージョン] で、DB インスタンスのバージョンを選択します。
詳細については、「オプショングループを作成する」を参照してください。
-
-
オプショングループに [SQLT] オプションを追加します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。
-
新規または既存の DB インスタンスに、DB オプショングループを適用します。
-
新規 DB インスタンスの場合は、インスタンスを起動するときにオプショングループを適用します。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。
-
既存の DB インスタンスの場合は、インスタンスを修正し、新しいオプショングループを添付することで、オプショングループを適用します。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
-
(オプション) SQLT オプションを伴う各 DB インスタンスの SQLT のインストールを検証します。
マスターユーザーとして DB インスタンスに接続している SQL クライアントを使用します。
Oracle DB インスタンスで SQL クライアントに接続する詳細については、「RDS for Oracle DB インスタンスへの接続」を参照してください。
次のクエリを実行します。
SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;
クエリは Amazon RDS の SQLT オプションの最新バージョンを返します。
12.1.160429
は Amazon RDS で使用可能である SQLT のバージョンの例です。
SQLT オプションで作成されたユーザーのパスワードを変更します。
マスターユーザーとして DB インスタンスに接続している SQL クライアントを使用します。
SQLTXADMIN
ユーザーのパスワードを変更するには、以下の SQL ステートメントを実行します。ALTER USER SQLTXADMIN IDENTIFIED BY
new_password
ACCOUNT UNLOCK;注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
SQLTXPLAIN
ユーザーのパスワードを変更するには、以下の SQL ステートメントを実行します。ALTER USER SQLTXPLAIN IDENTIFIED BY
new_password
ACCOUNT UNLOCK;注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
注記
SQLT をアップグレードするには、SQLT の旧バージョンをアンインストールしてから、新しいバージョンをインストールする必要があります。そのため、すべての SQLT メタデータが SQLT をアップグレードすると失われる可能性があります。データベースのメジャーバージョンのアップグレードでも、SQLT がアンインストールされ、再インストールされます。メジャーバージョンのアップグレードの例は、Oracle Database 18c から Oracle Database 19c へのアップグレードです。
SQLT の使用
SQLT は Oracle SQL*Plus ユーティリティで動作します。
使用する SQLT
My Oracle Support サイトの ドキュメント 215187.1
から SQLT .zip ファイルをダウンロードします。 注記
My Oracle Support サイトから SQLT 12.1.160429 をダウンロードすることはできません。Oracle はこの古いバージョンを廃止しました。
SQLT .zip ファイルを解凍します。
コマンドプロンプトから、ファイルシステムの
sqlt/run
をディレクトリに変更します。コマンドプロンプトで、SQL*Plus を開き、マスターユーザーとして DB インスタンスに接続します。
SQL*Plus を使用する DB インスタンスへの接続の詳細については、「RDS for Oracle DB インスタンスへの接続」を参照してください。
SQL ステートメントの SQL ID を取得します。
SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='
sql_statement
';以下のような出力が生成されます。
SQL_ID ------------- chvsmttqjzjkn
SQLT を含む SQL ステートメントの分析:
START sqltxtract.sql
sql_id
sqltxplain_user_password
例えば、SQL ID
chvsmttqjzjkn
に対して、以下を入力してください。START sqltxtract.sql chvsmttqjzjkn
sqltxplain_user_password
SQLT は、HTML レポートと関連リソースを SQLT コマンドが実行されたディレクトリに .zip ファイルとして生成します。
(オプション) アプリケーションユーザーが 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_PACK
および VERSION
設定を変更できます。
オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。各設定の詳細については、「SQLT オプション設定」を参照してください。
SQLT オプションの削除
DB インスタンスから SQLT を削除できます。
DB インスタンスから SQLT を削除するには、次のいずれかを実行します。
-
複数の DB インスタンスから SQLT を削除するには、DB インスタンスが属しているオプショングループから SQLT オプションを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「オプショングループからオプションを削除する」を参照してください。
-
単一の DB インスタンスから SQLT を削除するには、DB インスタンスを変更し、NNE オプションが含まれていない別のオプショングループを指定します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。