24 SQLチューニング・セットの管理
SQLチューニング・セットを使用して、文および関連メタデータを単一のオブジェクトにグループ化し、それをSQLチューニング・ツールへの入力として使用できます。
この章のトピックは、次のとおりです:
24.1 SQLチューニング・セットについて
SQLチューニング・セット(STS)は、チューニング・ツールへの入力として使用できるデータベース・オブジェクトです。
このデータベースは、SQLチューニング・セットをデータベース提供のスキーマに格納します。STSには次が含まれます。
-
SQL文のセット
-
関連する実行コンテキスト(ユーザー・スキーマ、アプリケーション・モジュール名およびアクション、バインド値のリストおよびカーソルのSQLのコンパイルの環境など)
-
関連する基本実行統計(経過時間、CPUタイム、バッファ読取り、ディスク読取り、処理された行数、カーソル・フェッチ、実行数、実行完了数、オプティマイザ・コストおよびコマンドのタイプなど)
-
各SQL文の関連実行計画と行ソース統計(オプション)
ノート:
STSをプラガブル・データベースとともに使用すると、データの可視性と権限の要件が一致しない場合があります。コンテナ・データベース(CDB)内での管理機能の動作をまとめた表が記載されている『Oracle Database管理者ガイド』を参照してください。
この項では、次の項目について説明します。
24.1.1 SQLチューニング・セットの目的
STSを使用すると、SQL文と関連するメタデータを単一のデータベース・オブジェクトにグループ化し、そのオブジェクトを使用してチューニングに関する目標を達成できます。
具体的には、SQLチューニング・セットによって次の目標が達成されます。
-
パフォーマンス・チューニング・アドバイザへの入力の提供
STSは、SQLチューニング・アドバイザ、SQLアクセス・アドバイザ、SQLパフォーマンス・アナライザなど、複数のデータベース・アドバイザの入力として使用できます。
-
データベース間でのSQLの転送
SQLチューニングセットを別のデータベースにエクスポートすることで、SQLワークロードをデータベース間で転送してリモート・パフォーマンス診断およびチューニングを実行できます。本番データベースにパフォーマンスが最適でないSQL文がある場合、開発者が直接本番システム上で調査およびチューニングを実行することは望ましくありません。DBAにより、開発者が安全に分析およびチューニングできるテスト用データベースに、問題のあるSQL文を転送できます。
24.1.2 SQLチューニング・セットの概念
STSを作成するには、SQL文をソースからSTSにロードする必要があります。
図24-1に示すとおり、使用可能なソースには、自動ワークロード・リポジトリ(AWR)、共有SQL領域、ユーザーによって提供されたカスタマイズ済のSQL、トレース・ファイル、他のSTSなどがあります。
SQLチューニング・セットでは、次の操作を実行できます。
-
アプリケーション・モジュール名とアクション、または任意の実行統計を使用して、SQL文をフィルタできます。
-
SQL文を実行統計の任意の組合せに基づいてランク付けできます。
-
アドバイザの入力として使用したり、それを異なるデータベースに転送したりできます。
関連項目:
AWRについて学習するには、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください
24.1.3 SQLチューニング・セットのユーザー・インタフェース
Oracle Enterprise Manager Cloud Control (Cloud Control)またはPL/SQLパッケージを使用すると、SQLチューニング・セットを管理できます。Cloud Controlをお薦めします。
この項では、次の項目について説明します。
24.1.3.1 Cloud Controlでの「SQLチューニング・セット」ページへのアクセス
Cloud ControlのSQLチューニング・セット・ページは、SQLチューニング・セットに関係する多くの操作を実行できる開始ページです。
SQLチューニング・セット・ページにアクセスするには:
-
適切な資格証明を使用してCloud Controlにログインします。
-
「ターゲット」メニューの下で、「データベース」を選択します。
-
データベース・ターゲットのリストで、管理対象のOracle Databaseインスタンスのターゲットを選択します。
-
データベースの資格証明の入力を求められた場合は、実行するタスクに必要な最小限の資格証明を入力します。
-
「パフォーマンス」メニューから「SQL」を選択し、さらに「SQLチューニング・セット」を選択します。
SQLチューニング・セット・ページは、図24-2のように表示されます。
24.1.3.2 SQLチューニング・セットへのコマンドライン・インタフェース
コマンドラインでは、DBMS_SQLTUNE
パッケージを使用してSQLチューニング・セットを管理できます。
所有するSQLチューニング・セットを管理するためのADMINISTER SQL TUNING SET
システム権限が必要です。または、任意のSQLチューニング・セットを管理するためのADMINISTER ANY SQL TUNING SET
システム権限が必要です。
関連項目:
DBMS_SQLTUNE
について学習するには、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
24.1.4 SQLチューニング・セットの基本タスク
DBMS_SQLTUNE
には、SQLチューニング・セットの作成、使用および削除に必要なプロシージャが提供されています。
次の図は、基本ワークフローを示しています。
通常、STS操作を実行する順序は次のとおりです。
-
新規STSを作成します。
このタスクについては、「SQLチューニング・セットの作成」を参照してください。
-
そのSTSをSQL文および関連するメタデータとともにロードします。
このタスクについては、「SQLチューニング・セットのロード」を参照してください。
-
オプションで、STSの内容を表示します。
このタスクについては、「SQLチューニング・セットの内容の表示」を参照してください。
-
オプションで、STSの内容を更新または削除します。
このタスクについては、「SQLチューニング・セットの変更」を参照してください。
-
入力にSTSを使用してチューニング・タスクを作成します。
-
オプションで、他のデータベースにSTSを転送します。
このタスクについては、「SQLチューニング・セットの転送」を参照してください。
-
完了時にSTSを削除します。
このタスクについては、「SQLチューニング・セットの削除」を参照してください。
24.2 SQLチューニング・セットの作成
データベース内に空のSTSを作成するには、DBMS_SQLTUNE.CREATE_SQLSET
プロシージャを使用します。
プロシージャのかわりにファンクションを使用すると、データベースによってSTSの名前が生成されます。次の表では、一部のプロシージャ・パラメータを説明します。
表24-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 a11 SELECT NAME, STATEMENT_COUNT AS "SQLCNT", DESCRIPTION FROM USER_SQLSET;
出力例は次のように表示されます。
NAME SQLCNT DESCRIPTION -------------------- ------ ----------- SQLT_WKLD_STS 2 SQL Cache
関連項目:
詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
24.3 SQLチューニング・セットのロード
STSをSQL文とともにロードするには、DBMS_SQLTUNE.LOAD_SQLSET
プロシージャを実行します。
STSにデータを移入するための標準ソースは、AWR、他のSTSまたは共有SQL領域です。ワークロード・リポジトリおよびSQLチューニング・セットのどちらの場合も、事前定義済のテーブル・ファンクションにより、新しいSTSに移入する列をソースから選択できます。
表24-2に、プロシージャの一部のDBMS_SQLTUNE.LOAD_SQLSET
パラメータの説明を示します。
表24-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; /
関連項目:
詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
24.4 SQLチューニング・セットの内容の表示
STSを作成し、データを移入したら、DBMS_SQLTUNE.SELECT_SQLSET
ファンクションを実行して、STSの内容を(オプションでフィルタ条件を使用して)読み取ります。
PL/SQL パイプライン・テーブル・ファンクションを使用するSELECT_SQLSET
の出力を選択し、行のコレクションを入力として受け入れます。SELECT
文のFROM
リストで表演算子のオペランドとしてテーブル・ファンクションを起動します。次の表は、SELECT_SQLSET
ファンクション・パラメータの一部について説明しています。
表24-3 DBMS_SQLTUNE.SELECT_SQLSETパラメータ
パラメータ | 説明 |
---|---|
|
|
|
共有SQL領域から選択されたSQLのオブジェクト・リストに含まれるオブジェクトを指定します。 |
表24-4に、SQLSET_ROW
オブジェクトの一部の属性の説明を示します。これらの属性は、TABLE(DBMS_SQLTUNE.SELECT_SQLSET())
を問い合せたときに列として表示されます。
表24-4 SQLSET_ROWの属性
パラメータ | 説明 |
---|---|
|
SQLの解析が行われるスキーマ |
|
このSQL文で経過した秒数の合計 |
|
このSQL文のバッファ取得回数(データベースがブロックにアクセスした回数)の合計 |
前提条件
このチュートリアルでは、SQLT_WKLD_STS
という名前のSTSの内容を表示するものとします。
STSの内容を表示するには:
-
SQL*PlusまたはSQL Developerで、必要な権限を持つユーザーとしてデータベースにログインします。
-
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'
関連項目:
詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください
24.5 SQLチューニング・セットの変更
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パッケージ・プロシージャおよびタイプ・リファレンス』を参照してください
24.6 SQLチューニング・セットの転送
Oracle Database 10gリリース2 (10.2)以降で作成された任意のデータベースにSTSを転送できます。これは、SQLパフォーマンス・アナライザを使用してテスト用データベースで回帰をチューニングする場合に役立ちます。
この項では、次の項目について説明します。
24.6.1 SQLチューニング・セットの転送について
データベース間のSQLチューニング・セットの転送は、SQLチューニング・セットとステージング表間でコピーして、他のツールを使用してステージング表を宛先データベースに移行することを意味します。最も一般的なツールは、Oracle Data Pumpまたはデータベース・リンクです。
この項では、次の項目について説明します。
24.6.1.1 SQLチューニング・セットを転送するための基本ステップ
SQLチューニング・セットの転送には、STSのエクスポート、ダンプ・ファイルの転送、およびその後のダンプ・ファイルのインポートが必要です。
次の図は、Oracle Data Pumpおよびftp
を使用したプロセスを示しています。
図24-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をステージング表からアンパックします。
24.6.1.2 CON_DBIDの値が異なる場合にSQLチューニング・セットを転送するための基本ステップ
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をアンパックします。
例24-1 CDB以外からCDBへSTSを転送する際のCON_DBIDの再マップ
この例では、STS_for_transport
という名前のSTSをCDB以外からCDBへ転送しようとしています。CDBではないソースでは、DBMS_SQLTUNE.PACK_STGTAB_SQLSET
プロシージャを使用して、ソース・ステージング表src_stg_tbl
に、すでにSTSをパックしてあります。宛先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パッケージおよびタイプ・リファレンス』を参照してください
24.6.2 DBMS_SQLTUNEを使用したSQLチューニング・セットの転送
SQLチューニング・セットは、DBMS_SQLTUNE
パッケージの3つのサブプログラムを使用して転送できます。
次の表に、SQLチューニング・セットの転送に関連するDBMS_SQLTUNE
プロシージャの説明を示します。
表24-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
が所有するSTSmy_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パッケージおよびタイプ・リファレンス』を参照してください
24.7 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パッケージおよびタイプ・リファレンスを参照してください