この章の内容は次のとおりです。
SQLチューニング・セット(STS)は、チューニング・ツールへの入力として使用できるデータベース・オブジェクトです。
STSに含まれるのは、次のとおりです。
SQL文のセット
関連する実行コンテキスト(ユーザー・スキーマ、アプリケーション・モジュール名およびアクション、バインド値のリストおよびカーソルのSQLのコンパイルの環境など)
関連する基本実行統計(経過時間、CPUタイム、バッファ読取り、ディスク読取り、処理された行数、カーソル・フェッチ、実行数、実行完了数、オプティマイザ・コストおよびコマンドのタイプなど)
各SQL文に関連する実行計画および行ソースの統計(オプション)
このデータベースは、SQLチューニング・セットをデータベース提供のスキーマに格納します。
この項の内容は次のとおりです。
注意:
STSをプラガブル・データベースとともに使用すると、データの可視性と権限の要件が一致しない場合があります。コンテナ・データベース(CDB)内での管理機能の動作をまとめた表が記載されている『Oracle Database管理者ガイド』を参照してください。
STSを使用すると、SQL文と関連するメタデータを単一のデータベース・オブジェクトにグループ化し、そのオブジェクトを使用してチューニングに関する目標を達成できます。具体的には、SQLチューニング・セットによって次の目標が達成されます。
パフォーマンス・チューニング・アドバイザへの入力の提供
STSは、SQLチューニング・アドバイザ、SQLアクセス・アドバイザ、SQLパフォーマンス・アナライザなど、複数のデータベース・アドバイザの入力として使用できます。
データベース間でのSQLの転送
SQLチューニングセットを別のデータベースにエクスポートすることで、SQLワークロードをデータベース間で転送してリモート・パフォーマンス診断およびチューニングを実行できます。本番データベースにパフォーマンスが最適でないSQL文がある場合、開発者が直接本番システム上で調査およびチューニングを実行することは望ましくありません。DBAにより、開発者が安全に分析およびチューニングできるテスト用データベースに、問題のあるSQL文を転送できます。
STSを作成するには、SQL文をソースからSTSにロードする必要があります。
図19-1のように、使用可能なソースには、自動ワークロード・リポジトリ(AWR)、共有SQL領域、ユーザーによって提供されたカスタマイズ済のSQL、トレース・ファイル、他のSTSなどがあります。
SQLチューニング・セットでは、次の操作を実行できます。
アプリケーション・モジュール名とアクション、または任意の実行統計を使用して、SQL文をフィルタできます。
SQL文を実行統計の任意の組合せに基づいてランク付けできます。
アドバイザの入力として使用したり、それを異なるデータベースに転送したりできます。
関連項目:
AWRの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
Oracle Enterprise Manager Cloud Control (Cloud Control)またはPL/SQLパッケージを使用すると、SQLチューニング・セットを管理できます。Cloud Controlをお薦めします。
Cloud ControlのSQLチューニング・セット・ページは、SQLチューニング・セットに関係する多くの操作を実行できる開始ページです。
SQLチューニング・セット・ページにアクセスする手順は次のとおりです。
「Cloud Controlのデータベース・ホーム・ページへのアクセス」の説明に従って、「データベース・ホーム」ページにアクセスします。
「パフォーマンス」メニューから「SQL」を選択し、さらに「SQLチューニング・セット」を選択します。
SQLチューニング・セット・ページは、図19-2のように表示されます。
関連項目:
Oracle Database 2日でパフォーマンス・チューニング・ガイド
DBMS_SQLTUNE
は、SQLチューニング・セットの作成、使用および削除に必要なプロシージャを提供します。
次の図は、基本ワークフローを示しています。
通常、STS操作を実行する順序は次のとおりです。
新規STSを作成します。
このタスクについては、「SQLチューニング・セットの作成」を参照してください。
そのSTSをSQL文および関連するメタデータとともにロードします。
このタスクについては、「SQLチューニング・セットのロード」を参照してください。
オプションで、STSの内容を表示します。
このタスクについては、「SQLチューニング・セットの内容の表示」を参照してください。
オプションで、STSの内容を更新または削除します。
このタスクについては、「SQLチューニング・セットの変更」を参照してください。
入力にSTSを使用してチューニング・タスクを作成します。
オプションで、他のデータベースにSTSを転送します。
このタスクについては、「SQLチューニング・セットの転送」を参照してください。
完了時にSTSを削除します。
このタスクについては、「SQLチューニング・セットの削除」を参照してください。
データベース内に空のSTSを作成するには、DBMS_SQLTUNE.CREATE_SQLSET
プロシージャを実行します。プロシージャのかわりにファンクションを使用すると、データベースによってSTSの名前が生成されます。
次の表では、一部のプロシージャ・パラメータを説明します。
表19-1 DBMS_SQLTUNE.CREATE_SQLSETパラメータ
パラメータ | 説明 |
---|---|
|
STSの名前 |
|
STSに関するオプションの説明 |
前提条件
このチュートリアルでは、SQLT_WKLD_STS
という名前のSTSを作成するものとします。
STSを作成する手順は次のとおりです。
適切な権限でデータベースにSQL*Plusを接続し、DBMS_SQLTUNE.CREATE_SQLSET
プロシージャを実行します。
たとえば、次のPL/SQLプログラムを実行します。
BEGIN DBMS_SQLTUNE.CREATE_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , description => 'STS to store SQL from the private SQL area' ); END;
オプションで、STSが作成されたことを確認します。
次の例では、現行のユーザーによって所有されているすべてのSQLチューニング・セットのステータスを問い合せます。
COLUMN NAME FORMAT a20 COLUMN COUNT FORMAT 99999 COLUMN DESCRIPTION FORMAT a30 SELECT NAME, STATEMENT_COUNT AS "SQLCNT", DESCRIPTION FROM USER_SQLSET;
出力例は次のように表示されます。
NAME SQLCNT DESCRIPTION -------------------- ------ ------------------------------ SQLT_WKLD_STS 2 SQL Cache
関連項目:
詳細な参照情報については、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
STSをSQL文とともにロードするには、DBMS_SQLTUNE.LOAD_SQLSET
プロシージャを実行します。STSにデータを移入するための標準ソースは、AWR、他のSTSまたは共有SQL領域です。ワークロード・リポジトリおよびSQLチューニング・セットのどちらの場合も、事前定義済のテーブル・ファンクションにより、新しいSTSに移入する列をソースから選択できます。
表19-2に、プロシージャの一部のDBMS_SQLTUNE.LOAD_SQLSET
パラメータの説明を示します。完全なリファレンス情報については、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
表19-2 DBMS_SQLTUNE.LOAD_SQLSETのパラメータ
パラメータ | 説明 |
---|---|
|
STSの入力に使用するカーソル参照を指定します。 |
|
STSへの文のロード方法を指定します。指定可能な値は、 |
DBMS_SQLTUNE.SELECT_CURSOR_CACHE
ファンクションは、指定されたフィルタに従って、SQL文を共有SQL領域から収集します。このファンクションは、各データ・ソースで検出されるSQL IDまたはPLAN_HASH_VALUE
の組合せごとに1つのSQLSET_ROW
を戻します。
CAPTURE_CURSOR_CACHE_SQLSET
ファンクションを使用すると、特定の間隔で共有SQL領域を繰り返しポーリングできます。このファンクションは、SELECT_CURSOR_CACHE
およびLOAD_SQLSET
プロシージャを繰り返しコールする場合よりも効率的です。また、高負荷SQL文のワークロードのみを取得するAWR、またはデータ・ソースに1回のみアクセスするLOAD_SQLSET
プロシージャとは対照的に、ワークロード全体を効果的に取得します。
前提条件
このチュートリアルの前提条件は、次のとおりです。
SELECT_CURSOR_CACHE
ファンクションで提供されるフィルタは、現行のユーザーが実行するSQL文の一部として評価されます。したがって、それらのフィルタは、ユーザーのセキュリティ権限で実行され、ユーザーがアクセスできるすべての構成メンバーおよび副問合せを含んでいますが、それ以外のものは含んでいません。
現行のユーザーは、共有SQL領域のビューに対する権限を持っている必要があります。
前提条件
このチュートリアルでは、SQLT_WKLD_STS
という名前のSQLチューニング・セットに共有SQL領域の文をロードするものとします。
STSをロードする手順は次のとおりです。
適切な権限を持つユーザーとして、SQL*Plusをデータベースに接続します。
DBMS_SQLTUNE.LOAD_SQLSET
プロシージャを実行します。
たとえば、次のPL/SQLプログラムを実行すると、sh
スキーマに属するすべてのカーソル・キャッシュ文をSQLチューニング・セットに移入できます。
DECLARE c_sqlarea_cursor DBMS_SQLTUNE.SQLSET_CURSOR; BEGIN OPEN c_sqlarea_cursor FOR SELECT VALUE(p) FROM TABLE( DBMS_SQLTUNE.SELECT_CURSOR_CACHE( ' module = ''SQLT_WKLD'' AND parsing_schema_name = ''SH'' ') ) p; -- load the tuning set DBMS_SQLTUNE.LOAD_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , populate_cursor => c_sqlarea_cursor ); END; /
STSを作成し、データを移入したら、DBMS_SQLTUNE.SELECT_SQLSET
ファンクションを実行して、STSの内容を(オプションでフィルタ条件を使用して)読み取ります。
PL/SQL パイプライン・テーブル・ファンクションを使用するSELECT_SQLSETの出力を選択し、行のコレクションを入力として受け入れます。
SELECT
文のFROM
リストで表演算子のオペランドとしてテーブル・ファンクションを起動します。
表19-3に、SELECT_SQLSET
ファンクションの一部のパラメータの説明を示します。完全なリファレンス情報については、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
表19-3 DBMS_SQLTUNE.SELECT_SQLSETのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
共有SQL領域から選択されたSQLのオブジェクト・リストに含まれるオブジェクトを指定します。 |
表19-4に、SQLSET_ROW
オブジェクトの一部の属性の説明を示します。これらの属性は、TABLE(DBMS_SQLTUNE.SELECT_SQLSET())
を問い合せたときに列として表示されます。
表19-4 SQLSET_ROWの属性
パラメータ | 説明 |
---|---|
|
SQLの解析が行われるスキーマ |
|
このSQL文で経過した秒数の合計 |
|
このSQL文のバッファ取得回数(データベースがブロックにアクセスした回数)の合計 |
前提条件
このチュートリアルでは、SQLT_WKLD_STS
という名前のSTSの内容を表示するものとします。
STSの内容を表示する手順は次のとおりです。
適切な権限でデータベースにSQL*Plusを接続し、TABLE
ファンクションを使用してSTSの内容を問い合せます。
たとえば、次の問合せを実行します。
COLUMN SQL_TEXT FORMAT a30 COLUMN SCH FORMAT a3 COLUMN ELAPSED FORMAT 999999999 SELECT SQL_ID, PARSING_SCHEMA_NAME AS "SCH", SQL_TEXT, ELAPSED_TIME AS "ELAPSED", BUFFER_GETS FROM TABLE( DBMS_SQLTUNE.SELECT_SQLSET( 'SQLT_WKLD_STS' ) );
出力例は次のように表示されます。
SQL_ID SCH SQL_TEXT ELAPSED BUFFER_GETS ------------- --- ------------------------------ ---------- ----------- 79f8shn041a1f SH select * from sales where quan 8373148 24016 tity_sold < 5 union select * f rom sales where quantity_sold > 500 2cqsw036j5u7r SH select promo_name, count(*) c 3557373 309 from promotions p, sales s whe re s.promo_id = p.promo_id and p.promo_category = 'internet' group by p.promo_name order b y c desc fudq5z56g642p SH select sum(quantity_sold) from 4787891 12118 sales s, products p where s.p rod_id = p.prod_id and s.amoun t_sold > 20000 and p.prod_name = 'Linen Big Shirt' bzmnj0nbvmz8t SH select * from sales where amou 442355 15281 nt_sold = 4
オプションで、ユーザー固有の条件に基づいて結果をフィルタします。
次の例では、バッファ取得に対するディスク読取りの比率が50%以上の文を表示します。
COLUMN SQL_TEXT FORMAT a30 COLUMN SCH FORMAT a3 COLUMN BUF_GETS FORMAT 99999999 COLUMN DISK_READS FORMAT 99999999 COLUMN %_DISK FORMAT 9999.99 SELECT sql_id, parsing_schema_name as "SCH", sql_text, buffer_gets as "B_GETS", disk_reads, ROUND(disk_reads/buffer_gets*100,2) "%_DISK" FROM TABLE( DBMS_SQLTUNE.SELECT_SQLSET( 'SQLT_WKLD_STS', '(disk_reads/buffer_gets) >= 0.50' ) );
出力例は次のように表示されます。
SQL_ID SCH SQL_TEXT B_GETS DISK_READS %_DISK ------------- --- ------------------------------ ------ ---------- ------- 79f8shn041a1f SH select * from sales where quan 24016 17287 71.98 tity_sold < 5 union select * f rom sales where quantity_sold > 500 fudq5z56g642p SH select sum(quantity_sold) from 12118 6355 52.44 sales s, products p where s.p rod_id = p.prod_id and s.amoun t_sold > 20000 and p.prod_name = 'Linen Big Shirt'
SQL文をSTSから削除するには、DBMS_SQLTUNE.DELETE_SQLSET
プロシージャを使用します。
UPDATE_SQLSET
プロシージャを使用すると、STS名およびSQL IDで識別される既存のSTS内のSQL文の属性(PRIORITY
またはOTHER
など)を更新できます。
前提条件
このチュートリアルでは、SQLT_WKLD_STS
を次のように変更するものとします。
フェッチ回数が100を超えるすべてのSQL文を削除します。
IDがfudq5z56g642p
のSQL文の優先順位を1
に変更します。優先順位は、SQLチューニング・アドバイザを実行するときのランク付け基準として使用できます。
STSの内容を変更する手順は次のとおりです。
適切な権限でデータベースにSQL*Plusを接続し、オプションでTABLE
ファンクションを使用してSTSの内容を問い合せます。
たとえば、次の問合せを実行します。
SELECT SQL_ID, ELAPSED_TIME, FETCHES, EXECUTIONS FROM TABLE(DBMS_SQLTUNE.SELECT_SQLSET('SQLT_WKLD_STS'));
出力例は次のように表示されます。
SQL_ID ELAPSED_TIME FETCHES EXECUTIONS ------------- ------------ ---------- ---------- 2cqsw036j5u7r 3407459 2 1 79f8shn041a1f 9453965 61258 1 bzmnj0nbvmz8t 401869 1 1 fudq5z56g642p 5300264 1 1
ユーザー固有の条件に基づいてSQL文を削除します。
SQLSET_ROW
の属性に対して定義されたSTSからSQLをフィルタするには、basic_filter
述語を使用します。次の例では、フェッチ回数が100を超えるSTS内の文をすべて削除します。
BEGIN DBMS_SQLTUNE.DELETE_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , basic_filter => 'fetches > 100' ); END; /
SQL文の属性値を設定します。
次の例では、文2cqsw036j5u7r
の優先順位を1
に設定します。
BEGIN DBMS_SQLTUNE.UPDATE_SQLSET ( sqlset_name => 'SQLT_WKLD_STS' , sql_id => '2cqsw036j5u7r' , attribute_name => 'PRIORITY' , attribute_value => 1 ); END; /
オプションで、STSを問い合せて、目的の変更が加えられたことを確認します。
たとえば、次の問合せを実行します。
SELECT SQL_ID, ELAPSED_TIME, FETCHES, EXECUTIONS, PRIORITY FROM TABLE(DBMS_SQLTUNE.SELECT_SQLSET('SQLT_WKLD_STS'));
出力例は次のように表示されます。
SQL_ID ELAPSED_TIME FETCHES EXECUTIONS PRIORITY ------------- ------------ ---------- ---------- ---------- 2cqsw036j5u7r 3407459 2 1 1 bzmnj0nbvmz8t 401869 1 1 fudq5z56g642p 5300264 1 1
関連項目:
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください
Oracle Database 10gリリース2 (10.2)以降で作成された任意のデータベースにSTSを転送できます。これは、SQLパフォーマンス・アナライザを使用してテスト用データベースで回帰をチューニングする場合に役立ちます。
データベース間のSQLチューニング・セットの転送は、SQLチューニング・セットとステージング表間でコピーして、他のツールを使用してステージング表を宛先データベースに移行することを意味します。最も一般的なツールは、Oracle Data Pumpまたはデータベース・リンクです。
SQLチューニング・セットを転送するには、STSをエクスポートし、ダンプ・ファイルを転送した後、ダンプ・ファイルをインポートする必要があります。
次の図は、Oracle Data Pumpとftp
を使用したプロセスを示しています。
図19-4に示すとおり、次のような手順があります。
本番データベースで、DBMS_SQLTUNE.PACK_STGTAB_SQLSET
を使用してSTSをステージング表にパックします。
Oracle Data Pumpを使用して、STSをステージング表から.dmp
ファイルにエクスポートします。
ftp
などの転送ツールを使用して本番ホストからテスト・ホストに.dmp
ファイルを転送します。
テスト・データベースで、Oracle Data Pumpを使用して、STSを.dmp
ファイルからステージング表にインポートします。
DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET
を使用して、STSをステージング表からアンパックします。
STSを転送するとき、ソース・データベースと宛先データベースのcon_dbid
が異なる場合に、STS内の各SQL文のcon_dbid
を再マップする必要があります。
con_dbid
値が異なるのは、次の状況です。
単一インスタンスのデータベースであり、そのインスタンスが再起動されている
Oracle RACデータベースに様々なインスタンスがある
PDBが異なっている
非CDBとCDBが存在する
再マップする基本手順は次のとおりです。
DBMS_SQLTUNE.PACK_STGTAB_SQLSET
を使用してSTSをステージング表にパックします。
DBMS_SQLTUNE.REMAP_STGTAB_SQLSET
を使用して、ステージング表内の各con_dbid
を再マップします。
STSをエクスポートします。
転送先のCDBでSTSをアンパックします。
例19-1 非CDBからCDBにSTSを転送する場合のCON_DBIDの再マップ
この例では、STS_for_transport
という名前のSTSを非CDBからCDBに転送します。ソース非CDB上で、DBMS_SQLTUNE.PACK_STGTAB_SQLSET
プロシージャを使用して、すでにSTSをソース・ステージング表src_stg_tbl
にパックしています。転送先のCDBのコンテナIDは、12345
です。
転送元の非CDBで、次のコマンドを実行します。
VARIABLE con_dbid_src NUMBER; EXEC SELECT UNIQUE con_dbid INTO :con_dbid_src FROM src_stg_tbl; BEGIN DBMS_SQLTUNE.REMAP_STGTAB_SQLSET ( staging_table_name => 'src_stg_tbl' , staging_schema_owner => 'dba1' , old_sqlset_name => 'STS_for_transport' , old_con_dbid => :con_dbid_src , new_con_dbid => 12345); END;
ステージング表のコンテンツをエクスポートして、引き続き通常の転送手順の使用できます。
関連項目:
REMAP_STGTAB_SQLSET
の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
SQLチューニング・セットを転送するには、DBMS_SQLTUNE
パッケージの3つのサブプログラムを使用します。
次の表に、SQLチューニング・セットの転送に関連するDBMS_SQLTUNE
プロシージャの説明を示します。
表19-5 SQLチューニング・セットを転送するためのDBMS_SQLTUNEプロシージャ
プロシージャ | 説明 |
---|---|
|
エクスポートされたSQLチューニング・セットを保持するステージング表を作成します。 |
|
ステージング表にSQLチューニング・セットを移入します。 |
|
SQLチューニング・セットをステージング表からデータベースにコピーします。 |
前提条件
このチュートリアルでは、次のことが前提となっています。
現在のリリースで作成した本番データベースに、低下したSQLを含むSTSが存在する場合。
Oracle Database 11gリリース2 (11.2)で作成したリモートのテスト用データベースでSQLパフォーマンス・アナライザの試行を実行する場合。
STSを本番データベースからテスト用データベースにコピーして、SQLパフォーマンス・アナライザの試行で回帰をチューニングする場合。
Oracle Database Pumpを使用して、データベース・ホスト間でSQLチューニング・セットを転送する場合。
STSを転送する手順は次のとおりです。
管理者権限で、SQL*Plusを本番データベースに接続します。
CREATE_STGTAB_SQLSET
プロシージャを使用して、エクスポートされたSQLチューニング・セットを保持するステージング表を作成します。
次の例では、dba1
にmy_11g_staging_table
を作成し、ステージング表の形式を11.2に指定します。
BEGIN DBMS_SQLTUNE.CREATE_STGTAB_SQLSET ( table_name => 'my_10g_staging_table' , schema_name => 'dba1' , db_version => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION ); END; /
PACK_STGTAB_SQLSET
プロシージャを使用して、ステージング表にSQLチューニング・セットを移入します。
次の例では、dba1.my_11g_staging_table
に、hr
が所有するSTS my_sts
を移入します。
BEGIN DBMS_SQLTUNE.PACK_STGTAB_SQLSET ( sqlset_name => 'sqlt_wkld_sts' , sqlset_owner => 'sh' , staging_table_name => 'my_11g_staging_table' , staging_schema_owner => 'dba1' , db_version => DBMS_SQLTUNE.STS_STGTAB_11_2_VERSION ); END; /
必要に応じて、「CON_DBID値が異なる場合のSQLチューニング・セットを転送するための基本手順」の説明に従って、STS内の文のコンテナIDの値を再マップします。
Oracle Data Pumpを使用して、ステージング表のコンテンツをエクスポートします。
たとえば、オペレーティング・システム・プロンプトでexpdp
コマンドを実行します。
expdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=sts.dmp TABLES=my_11g_staging_table
dumpファイルをテスト・データベースのホストに転送します。
管理者としてテスト・ホストにログインし、Oracle Data Pumpを使用してステージング表の内容をインポートします。
たとえば、オペレーティング・システム・プロンプトでimpdp
コマンドを実行します。
impdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=sts.dmp TABLES=my_11g_staging_table
テスト・データベースで、UNPACK_STGTAB_SQLSET
プロシージャを使用してステージング表からデータベースにSQLチューニング・セットをコピーします。
次の例は、SQLチューニング・セットをアンパックする方法を示しています。
BEGIN DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET ( sqlset_name => '%' , replace => true , staging_table_name => 'my_11g_staging_table'); END; /
関連項目:
DBMS_SQLTUNE.UNPACK_STGTAB_SQLSET
の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
データベースからSTSを削除するには、DBMS_SQLTUNE.DROP_SQLSET
プロシージャを実行します。
前提条件
削除するSTSがチューニング・タスクによって現在使用されていないことを確認します。既存のチューニング・タスクがこのSTSを使用している場合は、STSを削除する前に、そのタスクを削除します。削除しないと、データベースからORA-13757
エラーが発行されます。
前提条件
このチュートリアルでは、SQLT_WKLD_STS
という名前のSTSを削除するものとします。
STSを削除する手順は次のとおりです。
SQL*Plusを起動し、適切な権限でデータベースにログインします。
DBMS_SQLTUNE.DROP_SQLSET
プロシージャを実行します。
たとえば、次のPL/SQLプログラムを実行します。
BEGIN DBMS_SQLTUNE.DROP_SQLSET( sqlset_name => 'SQLT_WKLD_STS' ); END; /
オプションで、STSが削除されたことを確認します。
次の例では、現行のユーザーによって所有されているSQLT_WKLD_STS
という名前のSQLチューニング・セットの数をカウントします(出力例も示します)。
SELECT COUNT(*) FROM USER_SQLSET WHERE NAME = 'SQLT_WKLD_STS'; COUNT(*) ---------- 0
関連項目:
DBMS_SQLTUNE
のSTSプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。