17 DBMS_ADVISOR

DBMS_ADVISORは、データベース・サーバー・コンポーネントに関するパフォーマンス問題を特定および解決する一連のエキスパート・システムであるアドバイザのサーバー管理スイートに含まれます。

一部のアドバイザには、独自のパッケージが含まれます。これらのアドバイザに関しては、DBMS_ADVISORではなくアドバイザ固有のパッケージを使用することをお薦めします。次の各アドバイザには、その特定の機能に特化した独自のパッケージが含まれます。

  • 自動データベース診断モニター(DBMS_ADDM)

  • SQLパフォーマンス・アナライザ(DBMS_SQLPA)

  • SQL修復アドバイザ(DBMS_SQLDIAG)

  • SQLチューニング・アドバイザ(DBMS_SQLTUNE)

  • 圧縮アドバイザ(DBMS_COMPRESSION.GET_COMPRESSION_RATIO)

SQLアクセス・アドバイザおよびセグメント・アドバイザのみが、DBMS_ADVISORを一般的に使用します。UNDOアドバイザおよび圧縮アドバイザは、DBMS_ADVISORサブプログラムをサポートしていません。

この章のトピックは、次のとおりです:

参照:

17.1 DBMS_ADVISORの推奨されないサブプログラム

この項では、Oracle Database 11gで推奨されないプログラムについて説明しています。

17.2 DBMS_ADVISORのセキュリティ・モデル

DBMS_ADVISORパッケージを使用するには、ADVISOR権限が必要です。

17.3 DBMS_ADVISORサブプログラムの要約

このトピックでは、DBMS_ADVISORパッケージのサブプログラムとその説明を示します。

次の表では、「使用されているプログラム」列は各サブプログラムに関連するアドバイザのリストですが、ADDM、SQLパフォーマンス・アナライザ、SQL修復アドバイザおよびSQLチューニング・アドバイザには独自のパッケージが含まれるため、これらのアドバイザは除外されています。

表17-1 DBMS_ADVISORパッケージのサブプログラム

サブプログラム 説明 使用されているプログラム

ADD_SQLWKLD_REFプロシージャ

アドバイザ・タスクにワークロード参照を追加します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

ADD_SQLWKLD_STATEMENTプロシージャ

単一の文をワークロードに追加します。

SQLアクセス・アドバイザ

ADD_STS_REFプロシージャ

現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。

SQLアクセス・アドバイザ

CANCEL_TASKプロシージャ

現在実行中のタスク操作を取り消します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

COPY_SQLWKLD_TO_STSプロシージャ

SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。

SQLアクセス・アドバイザ

CREATE_FILEプロシージャ

PL/SQL CLOB変数から外部ファイルを作成します。スクリプトやレポートの作成に役立ちます。

SQLアクセス・アドバイザ

CREATE_OBJECTプロシージャ

新しいタスク・オブジェクトを作成します。

セグメント・アドバイザ

CREATE_SQLWKLDプロシージャ

新しいワークロード・オブジェクトを作成します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

CREATE_TASKプロシージャ

リポジトリ内に新しいアドバイザ・タスクを作成します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

DELETE_SQLWKLDプロシージャ

ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_SQLWKLD_REFプロシージャ

ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_SQLWKLD_STATEMENTプロシージャ

ワークロードから1つ以上の文を削除します。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

DELETE_STS_REFプロシージャ

現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット・オブジェクト間のリンクを削除します。

SQLアクセス・アドバイザ

DELETE_TASKプロシージャ

リポジトリから指定したタスクを削除します。

SQLアクセス・アドバイザ

EXECUTE_TASKプロシージャ

指定したタスクを実行します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

GET_REC_ATTRIBUTESプロシージャ

タスクから特定のリコメンデーション属性を取り出します。

SQLアクセス・アドバイザ

GET_TASK_REPORTファンクション

指定したタスクのレポートを作成して戻します。

GET_TASK_SCRIPTファンクション

バッファ内にアドバイザ・タスクのリコメンデーションの実行可能なSQLスクリプトを作成して、戻します。

SQLアクセス・アドバイザ

IMPLEMENT_TASKプロシージャ

タスクに対してリコメンデーションを実装します。

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SCHEMAプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SQLCACHEプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_STSプロシージャ

データをSQLチューニング・セットからSQLワークロード・データ・オブジェクトにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_SUMADVプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

IMPORT_SQLWKLD_USERプロシージャ

データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

INTERRUPT_TASKプロシージャ

現在実行中のタスクを停止し、通常の終了時と同じように操作を終了します。これによって、リコメンデーションが表示可能になります。

セグメント・アドバイザ、SQLアクセス・アドバイザ

MARK_RECOMMENDATIONプロシージャ

特定のリコメンデーションにannotation_statusを設定します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

QUICK_TUNEプロシージャ

単一のSQL文の分析を行います。

SQLアクセス・アドバイザ

RESET_SQLWKLDプロシージャ

ワークロードを初期開始ポイントにリセットします。(注意: 推奨されないサブプログラム)

SQLアクセス・アドバイザ

RESET_TASKプロシージャ

タスクを初期状態にリセットします。

セグメント・アドバイザ、SQLアクセス・アドバイザ

SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

データをスキーマからワークロードにインポートします。

SQLアクセス・アドバイザ

SET_DEFAULT_TASK_PARAMETERプロシージャ

デフォルトのタスク・パラメータを変更します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

SET_SQLWKLD_PARAMETERプロシージャ

ワークロード・パラメータの値を設定します。

SQLアクセス・アドバイザ

SET_TASK_PARAMETERプロシージャ

指定したタスク・パラメータ値を設定します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

TUNE_MVIEWプロシージャ

マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。

SQLアクセス・アドバイザ

UPDATE_OBJECTプロシージャ

タスク・オブジェクトを更新します。

セグメント・アドバイザ

UPDATE_REC_ATTRIBUTESプロシージャ

指定したタスクの既存のリコメンデーションを更新します。

SQLアクセス・アドバイザ

UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

ワークロード・オブジェクトを更新します。

SQLアクセス・アドバイザ

UPDATE_SQLWKLD_STATEMENTプロシージャ

ワークロードの1つ以上のSQL文を更新します。

SQLアクセス・アドバイザ

UPDATE_TASK_ATTRIBUTESプロシージャ

タスクの属性を更新します。

セグメント・アドバイザ、SQLアクセス・アドバイザ

17.3.1 ADD_SQLWKLD_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLワークロード・オブジェクト間のリンクを確立します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

このリンクを使用して、アドバイザ・タスクが分析の実行に関心のあるデータにアクセスできます。さらに、このリンクからデータの安定したビューも得られます。SQLアクセス・アドバイザ・タスクとSQLワークロード・オブジェクト間のリンクが確立されると、ワークロードは削除や変更から保護されます。

ユーザーは、すべてのSQLチューニング・セットベースのアドバイザの実行に対して、ADD_SQLWKLD_REFではなくADD_STS_REFを使用する必要があります。このファンクションは、下位互換性を維持する目的でのみ提供されています。

構文

DBMS_ADVISOR.ADD_SQLWKLD_REF (
   task_name              IN VARCHAR2,
   workload_name          IN VARCHAR2,
   is_sts                 IN NUMBER :=0);

パラメータ

表17-2 ADD_SQLWKLD_REFプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

workload_name

リンクするワークロード・オブジェクトの名前。オブジェクトをタスクにリンクすると、読取り専用になり、削除できません。ワークロード・オブジェクトへのリンク数の制限はありません。ワークロード・オブジェクトへのリンクを削除するには、プロシージャDELETE_REFERENCEを使用します。

is_sts

ワークロード・ソースのタイプを示します。使用可能な値は次のとおりです。

  • 0 - SQLワークロード・オブジェクト

  • 1 - SQLチューニング・セット

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name, 1);
END;
/

17.3.2 ADD_SQLWKLD_STATEMENTプロシージャ

このプロシージャは、指定したワークロードに単一の文を追加します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT (
   workload_name          IN VARCHAR2,
   module                 IN VARCHAR2,
   action                 IN VARCHAR2,
   cpu_time               IN NUMBER := 0,
   elapsed_time           IN NUMBER := 0,
   disk_reads             IN NUMBER := 0,
   buffer_gets            IN NUMBER := 0,
   rows_processed         IN NUMBER := 0,
   optimizer_cost         IN NUMBER := 0,
   executions             IN NUMBER := 1,
   priority               IN NUMBER := 2,
   last_execution_date    IN DATE := 'SYSDATE',
   stat_period            IN NUMBER := 0,
   username               IN VARCHAR2,
   sql_text               IN CLOB);

パラメータ

表17-3 ADD_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード名。

module

SQL文に関連付ける、オプションのビジネス・アプリケーション・モジュール。

action

SQL文に関連付ける、オプションのアプリケーション・アクション。

cpu_time

SQL文によって消費される秒単位での合計CPU時間。

elapsed_time

SQL文によって消費される秒単位での合計経過時間。

disk_reads

SQL文によって消費される合計ディスク読取り処理時間。

buffer_gets

SQL文によって消費される合計バッファ読取り処理時間。

rows_processed

SQL文によって処理される平均行数。

optimizer_cost

オプティマイザによって計算されたコスト値。

executions

SQL文の合計実行数。この値は0(ゼロ)より大きい必要があります。

priority

SQL文の相対優先度。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

last_execution_date

SQL文が最後に実行する日付と時刻。値がNULLの場合は、現在の日時が使用されます。

stat_period

文の統計情報が計算されてからの秒単位での時間。

username

SQL文を実行したデータベース・ユーザー。ユーザー名はOracle識別子であるため、username値はサーバーに保存されているとおりに正確に入力する必要があります。たとえば、ユーザーSCOTTが実行中のユーザーである場合、ユーザー識別子SCOTTはすべて大文字で指定する必要があります。ユーザーscottまたはScottは、SCOTTと同じものとして認識されません。

sql_text

完全なSQL文。リコメンデーションの品質を向上させるため、SQL文にはバインド変数を含めないでください。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定する手順については、「RESET_TASKプロシージャ」を参照してください。

ADD_SQLWKLD_STATEMENTプロシージャは、コール元によって無視される可能性があるいくつかのパラメータを受け入れます。実際の分析時には、データベースはdisk_readsbuffer_getsおよびoptimizer_costパラメータのみを使用してワークロード・データをソートします。このため、実際の値は、order_listタスク・パラメータが特定の統計を参照する場合にのみ必要となります。

新しいSQL文をワークロードに追加する場合にどの統計を提供するかを決定するには、タスク・パラメータorder_listを調べるか、設定します。order_listパラメータは、次のキーの任意の組合せを受け入れます。

  • cpu_time

  • elapsed_time

  • buffer_gets

  • optimizer_cost

  • disk_reads

  • executions

  • priority

priorityの一般的な設定であるoptimizer_costキーは、SQLアクセス・アドバイザによってpriorityおよびoptimizer_costでワークロード・データがソートされ、最も高いコストの文が最初に処理されることを示します。ワークロードに追加する文には、適切なpriorityおよびoptimizer_costの値を含める必要があります。他のすべての統計は、デフォルト値または0 (ゼロ)に設定できます。

order_listタスク・パラメータによって参照される統計キーの場合、実際のパラメータ値はワークロードの他の文と比較されるため、適切に指定する必要があります。コール元で値を推定できない場合は、ワークロードの他の文と比較して重要度を決定できる値を選択します。たとえば、現行の文が業務で最も重要な問合せであるとみなされる場合、適切な値は、ワークロード内の同じ統計の他のすべての値より大きい値になります。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold) FROM sh.sales');
END;
/

17.3.3 ADD_STS_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。

このリンクを使用すると、分析を実行するためにアドバイザ・タスクでデータにアクセスできます。さらに、このリンクからデータの安定したビューも得られます。SQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクが確立されると、STSは削除や変更から保護されます。

STSベースのアドバイザの実行に対して、ADD_STS_REFを使用してください。パラメータIS_STS=1が指定されたADD_SQLWKLD_REFを使用する古いメソッドは、下位互換性を維持する目的でのみサポートされています。また、ADD_STS_REFファンクションはSQLチューニング・セットの所有者名を受け入れますが、ADD_SQLWKLD_REFは受け入れません。

構文

DBMS_ADVISOR.ADD_STS_REF(
  task_name       IN VARCHAR2 NOT NULL,
  sts_owner       IN VARCHAR2,
  workload_name   IN VARCHAR2 NOT NULL);

パラメータ

表17-4 ADD_STS_REFプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

sts_owner

SQLチューニング・セットの所有者。このパラメータの値はNULLの場合があり、この場合、アドバイザでは、現在ログインしているユーザーがSQLチューニング・セットを所有しているとみなされます。

workload_name

リンクするワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。

ワークロードをタスクにリンクすると、読取り専用になり、削除できません。

ワークロードへのリンク数の制限はありません。

ワークロードへのリンクを削除するには、プロシージャDBMS_ADVISOR.DELETE_STS_REFを使用します。

DBMS_ADVISOR.ADD_STS_REF ('My Task', 'SCOTT', 'My Workload');

17.3.4 CANCEL_TASKプロシージャ

このプロシージャは、現在実行中の処理を終了します。

このコールはソフト割込みを実行します。Ctrl-Cなどのハード割込みのように、低レベル・データベース・アクセス・コールには割り込みません。SQLアクセス・アドバイザは定期的にソフト割込みをチェックし、それに応じて適切に動作します。結果として、この処理ではコールに応答するまで数秒かかることがあります。

構文

DBMS_ADVISOR.CANCEL_TASK (
   task_name      IN  VARCHAR2);

パラメータ

表17-5 CANCEL_TASKプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

使用上のノート

取消しコマンドは、取り消した操作の開始前の状態にタスクを復元します。そのため、取り消したタスクまたはデータ・オブジェクトは再開できません。

すべてのアドバイザ・タスクのプロシージャは同期操作であるため、操作を取り消すには、別のデータベース・セッションを使用する必要があります。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CANCEL_TASK('My Task');
END;
/

17.3.5 COPY_SQLWKLD_TO_STSプロシージャ

このプロシージャは、SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。

構文

コール元は、このプロシージャを使用する場合、SQLチューニング・セットを作成および変更する権限を持っている必要があります。

DBMS_ADVISOR.COPY_SQLWKLD_TO_STS (
   workload_name         IN VARCHAR2,
   sts_name              IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW');

パラメータ

表17-6 COPY_SQLWKLD_TO_STSプロシージャのパラメータ

パラメータ 説明

workload_name

コピーするSQLワークロード・オブジェクトの名前。

sts_name

SQLワークロード・オブジェクトをコピーするSQLチューニング・セットの名前。

import_mode

ターゲットSQLチューニング・セットの処理を指定します。使用可能な値は次のとおりです。

  • APPEND

    SQLワークロード・データをターゲットSQLチューニング・セットに追加します。

  • NEW

    コピーされた内容のみをSQLチューニング・セットに含めることができることを示します。SQLチューニング・セットが存在し、そのSQLチューニング・セットにデータが含まれている場合は、エラーがレポートされます。

  • REPLACE

    ターゲットSQLチューニング・セットの既存のデータをワークロードのコピーの前にパージします。

指定したSQLチューニング・セットが存在しない場合は、常に作成されます。

使用上のノート

コール元は、このプロシージャを使用する場合、SQLチューニング・セットを作成および変更する権限を持っている必要があります。

BEGIN
   DBMS_ADVISOR.COPY_SQLWKLD_TO_STS('MY_OLD_WORKLOAD', 'MY_NEW_STS', 'NEW');
END;
/

17.3.6 CREATE_FILEプロシージャ

このプロシージャは、PL/SQL CLOB変数から外部ファイルを作成し、スクリプトやレポートの作成に使用できます。

構文

DBMS_ADVISOR.CREATE_FILE (
   buffer       IN  CLOB,
   location     IN  VARCHAR2,
   filename     IN  VARCHAR2);

パラメータ

表17-7 CREATE_FILEプロシージャのパラメータ

パラメータ 説明

buffer

レポートまたはスクリプト情報を格納するCLOBバッファ。

location

出力ファイルが格納されるディレクトリの名前。

CREATE DIRECTORY文で定義したとおりに、別名を使用する必要があります。アドバイザは別名を実際のディレクトリの場所に変換します。

filename

出力ファイルの名前。

ファイル名には、形式filename.filetypeの名前とオプションのファイル・タイプのみを含めることができます。

使用上のノート

すべての書式設定をCLOBに埋め込む必要があります。

データベースでは、ファイル・アクセスをストアド・プロシージャ内に限定しています。このため、ファイルの場所と名前は、サーバーの既知のファイル・アクセス権を厳守する必要があります。

CREATE DIRECTORY MY_DIR as '/homedir/user4/gssmith';
GRANT READ,WRITE ON DIRECTORY MY_DIR TO PUBLIC;

DECLARE
  v_task_id NUMBER;
  v_task_name VARCHAR2(30);
  v_workload_name VARCHAR2(30);
BEGIN
  v_task_name := 'My Task';
  v_workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(
      advisor_name => DBMS_ADVISOR.SQLACCESS_ADVISOR
  ,   task_id      => v_task_id
  ,   task_name    => v_task_name );
  DBMS_ADVISOR.CREATE_SQLWKLD(
      workload_name => v_workload_name
  ,   description   => 'My Workload' );
  DBMS_ADVISOR.ADD_SQLWKLD_REF(
      task_name     => v_task_name
  ,   workload_name => v_workload_name);
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(
      workload_name       => v_workload_name
  ,   module              => 'MONTHLY'
  ,   action              => 'ROLLUP'
  ,   cpu_time            => 100
  ,   elapsed_time        => 400
  ,   disk_reads          => 5041
  ,   buffer_gets         => 103
  ,   rows_processed      => 640445
  ,   optimizer_cost      => 680000
  ,   executions          => 2
  ,   priority            => 1
  ,   last_execution_date => SYSDATE
  ,   stat_period         => 1
  ,   username            => 'SH'
  ,   sql_text            => 'SELECT AVG(amount_sold) FROM sh.sales' );
  DBMS_ADVISOR.EXECUTE_TASK(v_task_name);
  DBMS_ADVISOR.CREATE_FILE(
      buffer   => DBMS_ADVISOR.GET_TASK_SCRIPT(v_task_name)
  ,   location => 'MY_DIR'
  ,   filename => 'script.sql' );
END;
/

17.3.7 CREATE_OBJECTプロシージャ

このプロシージャは、新しいタスク・オブジェクトを作成します。

構文

DBMS_ADVISOR.CREATE_OBJECT (
   task_name         IN VARCHAR2,
   object_type       IN VARCHAR2,
   attr1             IN VARCHAR2 :=  NULL,
   attr2             IN VARCHAR2 :=  NULL,
   attr3             IN VARCHAR2 :=  NULL,
   attr4             IN CLOB     :=  NULL,
   attr5             IN VARCHAR2 :=  NULL,
   object_id         OUT NUMBER,
   attr6             IN VARCHAR2 :=  NULL,
   attr7             IN VARCHAR2 :=  NULL,
   attr8             IN VARCHAR2 :=  NULL,
   attr9             IN VARCHAR2 :=  NULL,
   attr10            IN VARCHAR2 :=  NULL);

パラメータ

表17-8 CREATE_OBJECTプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

object_type

外部オブジェクト・タイプを指定します。

attr1

アドバイザ固有のデータ。

attr2

アドバイザ固有のデータ。

attr3

アドバイザ固有のデータ。

attr4

アドバイザ固有のデータ。

attr5

アドバイザ固有のデータ。

object_id

アドバイザが割り当てたオブジェクト識別子。

attr6

アドバイザ固有のデータ。

attr7

アドバイザ固有のデータ。

attr8

アドバイザ固有のデータ。

attr9

アドバイザ固有のデータ。

attr10

アドバイザ固有のデータ。

属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『Oracle Database管理者ガイド』を参照してください。

戻り値

新しいオブジェクト識別子を戻します。

使用上のノート

タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。オブジェクト・レベルの場合、アドバイスはオブジェクトのすべてのパーティションに関して生成されます(オブジェクトがパーティション化されている場合)。アドバイスは依存オブジェクトに伝達されません。セグメント・レベルの場合、アドバイスは表のパーティションまたはサブパーティション、索引、LOB列などの単一のセグメントに関して取得できます。表領域レベルの場合、表領域内のすべてのセグメントに対するターゲット・アドバイスが生成されます。

セグメント・アドバイザの詳細は、『Oracle Database管理者ガイド』を参照してください。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  obj_id NUMBER;
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_OBJECT (task_name,'SQL',NULL,NULL,NULL, 'SELECT * FROM TEST_TAB',NULL,obj_id,NULL,NULL,NULL,NULL,NULL);
END;
/

17.3.8 CREATE_SQLWKLDプロシージャ

このプロシージャは、ユーザーの新しいプライベートSQLワークロード・オブジェクトを作成します。

SQLワークロード・オブジェクトは、SQLアクセス・アドバイザにかわってSQLワークロードを管理します。SQLワークロード・オブジェクトは、SQL文のインポートや更新などの他のSQLワークロード操作を実行する前に存在している必要があります。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.CREATE_SQLWKLD (
   workload_name            IN OUT VARCHAR2,
   description              IN VARCHAR2 := NULL,
   template                 IN VARCHAR2 := NULL,
   is_template              IN VARCHAR2 := 'FALSE');

パラメータ

表17-9 CREATE_SQLWKLDプロシージャのパラメータ

パラメータ 説明

workload_name

作成したワークロードを一意に識別する名前。指定しない場合は、システムによって一意の名前が生成されます。名前の長さは30文字までです。

description

オプションのワークロードの説明を指定します。説明の長さは256文字までです。

template

既存のワークロード・データ・オブジェクトまたはデータ・オブジェクト・テンプレートの、オプションのSQLワークロード名

is_template

新しく作成したワークロードをテンプレートとして設定できるオプションの値。有効な値はTRUEおよびFALSEです。

戻り値

SQLアクセス・アドバイザは、新しいSQLワークロード・オブジェクト内の後続のアクティビティで使用する必要がある、一意のワークロード・オブジェクト識別子番号を戻します。

使用上のノート

デフォルトでは、組込みのデフォルト設定を使用してワークロード・オブジェクトが作成されます。既存のワークロードのパラメータ設定またはワークロード・テンプレートを使用してワークロードを作成するには、既存のワークロード名を指定します。

SQLワークロード・オブジェクトが存在している場合、ADD_SQLWKLD_REFプロシージャを使用して、1つ以上のSQLアクセス・アドバイザのタスクから参照できます。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
END;
/

17.3.9 CREATE_TASKプロシージャ

このプロシージャは、リポジトリ内に新しいアドバイザ・タスクを作成します。

構文

DBMS_ADVISOR.CREATE_TASK (
   advisor_name          IN VARCHAR2,
   task_id               OUT NUMBER,
   task_name             IN OUT VARCHAR2,
   task_desc             IN VARCHAR2 := NULL,
   template              IN VARCHAR2 := NULL,
   is_template           IN VARCHAR2 := 'FALSE',
   how_created           IN VARCHAR2 := NULL);

DBMS_ADVISOR.CREATE_TASK (
   advisor_name          IN VARCHAR2,
   task_name             IN VARCHAR2,
   task_desc             IN VARCHAR2 := NULL,
   template              IN VARCHAR2 := NULL,
   is_template           IN VARCHAR2 := 'FALSE',
   how_created           IN VARCHAR2 := NULL);

DBMS_ADVISOR.CREATE_TASK (
   parent_task_name      IN VARCHAR2,
   rec_id                IN NUMBER,
   task_id               OUT NUMBER,
   task_name             IN OUT VARCHAR2,
   task_desc             IN VARCHAR2,
   template              IN VARCHAR2);

パラメータ

表17-10 CREATE_TASKプロシージャのパラメータ

パラメータ 説明

advisor_name

DBA_ADVISOR_DEFINITIONSビューに定義されているとおりに、一意のアドバイザ名を指定します。

task_id

作成したタスクを一意に識別する番号。番号はプロシージャによって作成され、ユーザーに戻されます。

task_name

新しいタスク名を指定します。名前は、すべてのタスクの中でユーザーに一意である必要があります。

前述のCREATE_TASK構文(OUT付き)の2番目の形式を使用すると、一意の名前を生成できます。名前の長さは30文字までです。

task_desc

オプションのタスクの説明を指定します。説明の長さは256文字までです。

template

既存のタスクまたはタスク・テンプレートの、オプションのタスク名。組込みのSQLアクセス・アドバイザのテンプレートを指定するには、前述のようにテンプレート名を使用します。

is_template

ユーザーが新しく作成したタスクをテンプレートとして設定できるようにするオプションの値。有効な値はTRUEおよびFALSEです。

how_created

ソースが作成された方法を識別するオプションの値。

戻り値

パラメータが指定されていない場合は、一意のタスクID番号および一意のタスク名を戻します。

使用上のノート

タスクはアドバイザに関連付ける必要があり、タスクを作成すると、元のアドバイザに永久に関連付けられます。デフォルトでは、組込みのデフォルト設定を使用してタスクが作成されます。既存のタスクのパラメータ設定またはタスク・テンプレートを使用してワークロードを作成するには、既存のタスク名を指定します。

SQLアクセス・アドバイザの場合、advisor_nameとして識別子DBMS_ADVISOR.SQLACCESS_ADVISORを使用します。

SQLアクセス・アドバイザは、次の定数を使用して、3つの組込みのタスク・テンプレートを提供します。

  • DBMS_ADVISOR.SQLACCESS_OLTP

    パラメータはOLTPアプリケーション環境向けにプリセットされます。

  • DBMS_ADVISOR.SQLACCESS_WAREHOUSE

    パラメータはデータ・ウェアハウス・アプリケーション環境向けにプリセットされます。

  • DBMS_ADVISOR.SQLACCESS_GENERAL

    パラメータは、OLTPとデータ・ウェアハウスの両方の操作が行われる可能性のあるハイブリッド・アプリケーション環境向けにプリセットされます。SQLアクセス・アドバイザの場合、これがデフォルトのテンプレートです。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
END;
/

17.3.10 DELETE_SQLWKLDプロシージャ

このプロシージャは、リポジトリから既存のSQLワークロードを削除します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.DELETE_SQLWKLD (
   workload_name        IN VARCHAR2);

パラメータ

表17-11 DELETE_SQLWKLDプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。WORKLOAD_NAMEとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、現行のユーザーのすべてのタスクを削除するには、WORKLOAD_NAMEとして、ワイルドカード%を使用します。ワイルドカードを指定すると、DELETE_SQLWKLDの操作ではREAD_ONLYまたはTEMPLATEとマークされたすべてのワークロードが削除されません。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.DELETE_SQLWKLD(workload_name);
END;
/

17.3.11 DELETE_SQLWKLD_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザのタスクとSQLワークロード・データ・オブジェクト間のリンクを削除します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

すべてのSQLチューニング・セットベースのアドバイザの実行に対して、DELETE_SQLWKLD_REFではなくDELETE_STS_REFを使用してください。このファンクションは、下位互換性を維持する目的でのみ提供されています。

構文

DBMS_ADVISOR.DELETE_SQLWKLD_REF (
   task_name              IN VARCHAR2,
   workload_name          IN VARCHAR2,
   is_sts                 IN NUMBER :=0);

パラメータ

表17-12 DELETE_SQLWKLD_REFプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

workload_name

リンクを解除するワークロード・オブジェクトの名前。workload_nameとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、ワークロード・オブジェクトへのすべてのリンクを削除するには、workload_nameとしてワイルドカード%を使用します。

is_sts

ワークロード・ソースのタイプを示します。使用可能な値は次のとおりです。

  • 0 - SQLワークロード・オブジェクト

  • 1 - SQLチューニング・セット

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.DELETE_SQLWKLD_REF(task_name, workload_name);
END;
/

17.3.12 DELETE_SQLWKLD_STATEMENTプロシージャ

このプロシージャは、ワークロードから1つ以上の文を削除します。

ノート:

このプロシージャは非推奨となっています。

構文

DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT (
   workload_name        IN VARCHAR2,
   sql_id               IN NUMBER);

DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT (
   workload_name        IN VARCHAR2,
   search               IN VARCHAR2,
   deleted              OUT NUMBER);

パラメータ

表17-13 DELETE_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

sql_id

文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数ADVISOR_ALLを使用します。

search

無効になっています。

deleted

削除された操作の検索によって削除された文の数を戻します。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  deleted NUMBER;
  id NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'YEARLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales');

   SELECT sql_id INTO id FROM USER_ADVISOR_SQLW_STMTS
   WHERE workload_name = 'My Workload';

  DBMS_ADVISOR.DELETE_SQLWKLD_STATEMENT(workload_name, id);
END;
/

17.3.13 DELETE_STS_REFプロシージャ

このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを削除します。

STSベースのアドバイザの実行に対して、DELETE_STS_REFを使用してください。パラメータIS_STS=1が指定されたDELETE_SQLWKLD_REFを使用する古いメソッドは、下位互換性を維持する目的でのみサポートされています。また、DELETE_STS_REFファンクションはSTSの所有者名を受け入れますが、DELETE_SQLWKLD_REFは受け入れません。

構文

DBMS_ADVISOR.DELETE_STS_REF (
  task_name      IN VARCHAR2 NOT NULL,
  sts_owner      IN VARCHAR2,
  workload_name  IN VARCHAR2 NOT NULL);

パラメータ

表17-14 DELETE_STS_REFプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。

sts_owner

SQLチューニング・セットの所有者。このパラメータの値はNULLの場合があり、この場合、アドバイザでは、現在ログインしているユーザーがSQLチューニング・セットを所有しているとみなされます。

workload_name

リンクを解除するワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。

ワークロード名として、ワイルドカード%がサポートされます。使用規則はSQLのLIKE演算子と同一です。たとえば、SQLチューニング・セット・オブジェクトへのすべてのリンクを削除するには、STS_NAMEとしてワイルドカード%を使用します。

DBMS_ADVISOR.DELETE_STS_REF ('My task', 'SCOTT', 'My workload');

17.3.14 DELETE_TASKプロシージャ

このプロシージャは、リポジトリから既存のタスクを削除します。

構文

DBMS_ADVISOR.DELETE_TASK (
   task_name          IN VARCHAR2);

パラメータ

表17-15 DELETE_TASKプロシージャのパラメータ

パラメータ 説明

task_name

リポジトリから削除する単一のアドバイザ・タスク名。

TASK_NAMEとして、ワイルドカード%がサポートされます。使用規則はLIKE演算子と同一です。たとえば、現行のユーザーのすべてのタスクを削除するには、TASK_NAMEとして、ワイルドカード%を使用します。

ワイルドカードを指定すると、DELETE_TASK操作ではREAD_ONLYまたはTEMPLATEとマークされたすべてのワークロードが削除されません。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.DELETE_TASK(task_name);
END;
/

17.3.15 EXECUTE_TASKプロシージャ

このプロシージャは、アドバイザ分析、または指定したタスクの評価を行います。このプロシージャはオーバーロードされています。

実行に関連する引数はオプションです。タスクを複数回実行できないアドバイザに設定する必要はありません。

アドバイザでは、タスクを複数回実行し、得られた結果をそれ以降の処理および分析に使用することができます。

構文

DBMS_ADVISOR.EXECUTE_TASK (
   task_name          IN VARCHAR2);

DBMS_ADVISOR.EXECUTE_TASK (
   task_name         IN VARCHAR2,
   execution_type    IN VARCHAR2             := NULL,
   execution_name    IN VARCHAR2             := NULL,
   execution_params  IN dbms_advisor.argList := NULL,
   execution_desc    IN VARCHAR2             := NULL,
RETURN VARCHAR2;

パラメータ

表17-16 EXECUTE_TASKプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するタスク名。

execution_type

ファンクションによって実行されるアクションのタイプ。NULLの場合、デフォルト値はDEFAULT_EXECUTION_TYPEパラメータの値に設定されます。

たとえば、SQLパフォーマンス・アナライザは、次の値を受け入れます。

  • EXPLAIN PLAN: SQL文のEXPLAIN PLANを生成します。これは、EXPLAIN PLANコマンドに類似しています。生成される計画は、タスクに関連付けられているアドバイザ・フレームワークに格納されます。

  • TEST EXECUTE: SQL文をテスト実行し、実行計画および統計情報を収集します。生成される計画および統計情報は、アドバイザ・フレームワークに格納されます。

  • ANALYZE PERFORMANCE: 2つのバージョンのSQLパフォーマンス・データを分析および比較します。パフォーマンス・データを生成するには、SQL文のテスト実行またはそのEXPLAIN PLANの生成を行います。

execution_name

実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。

execution_params

指定した実行のパラメータ(名前、値)のリスト。実行パラメータは実タスク・パラメータですが、指定されている実行に対してのみ影響します。

次の例を考えてみます。

DBMS_ADVISOR.ARGLIST('time_limit', 12, 'username', 'hr')

execution_desc

実行について説明する256文字の長さの文字列。

使用上のノート

タスクの実行は同期処理です。処理が完了するか、またはユーザーの割込みが検出されるまで、コントロールはコール元に返されません。

コントロールが返されると、DBA_ADVISOR_LOG表で実行状態をチェックできます。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.EXECUTE_TASK(task_name);
END;
/

17.3.16 GET_REC_ATTRIBUTESプロシージャ

このプロシージャは、アドバイザ分析による推奨のとおりに、新しいオブジェクトの指定した属性を取得します。

構文

DBMS_ADVISOR.GET_REC_ATTRIBUTES (
   workload_name         IN VARCHAR2,
   rec_id                IN NUMBER,
   action_id             IN NUMBER,
   attribute_name        IN VARCHAR2,
   value                 OUT VARCHAR2,
   owner_name            IN VARCHAR2 := NULL);

パラメータ

表17-17 GET_REC_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するタスク名。

rec_id

リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。

action_id

特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。

attribute_name

変更する属性を指定します。

value

要求された属性値を受け取るバッファ。

owner_name

ターゲット・タスクのオプションの所有者名。これによって、現行のユーザーが所有していないタスク・データへのアクセスを許可します。

戻り値

要求された属性値はVALUE引数に戻されます。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
  attribute VARCHAR2(100);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';
  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');
  DBMS_ADVISOR.EXECUTE_TASK(task_name);
  DBMS_ADVISOR.GET_REC_ATTRIBUTES(task_name, 1, 1, 'NAME', attribute);
END;
/

17.3.17 GET_TASK_REPORTファンクション

このファンクションは、指定したタスクのレポートを作成して戻します。

構文

DBMS_ADVISOR.GET_TASK_REPORT (
   task_name      IN VARCHAR2,
   type           IN VARCHAR2 := 'TEXT',
   level          IN VARCHAR2 := 'TYPICAL',
   section        IN VARCHAR2 := 'ALL',
   owner_name     IN VARCHAR2 := NULL,
   execution_name IN VARCHAR2 := NULL,
   object_id      IN NUMBER   := NULL)
RETURN CLOB;

パラメータ

表17-18 GET_TASK_REPORTファンクションのパラメータ

パラメータ 説明

task_name

スクリプトを作成するタスクの名前。

type

有効な値は、TEXTのみです。

level

設定可能な値は、BASICTYPICALおよびALLです。

section

アドバイザ固有のレポート・セクション。

owner_name

タスクの所有者。指定すると、現行のユーザーがタスクのデータに対する読取り権限を持つかどうかがチェックされます。

execution_name

特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。

object_id

スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。

戻り値

スクリプトを受け取るバッファを戻します。

17.3.18 GET_TASK_SCRIPTファンクション

このファンクションは、SQL*Plus互換SQLスクリプトを作成し、ファイルに出力します。

出力スクリプトには、指定したタスクから受け入れるすべてのリコメンデーションを格納します。

構文

DBMS_ADVISOR.GET_TASK_SCRIPT (
   task_name          IN VARCHAR2
   type               IN VARCHAR2 := 'IMPLEMENTATION',
   rec_id             IN NUMBER   := NULL,
   act_id             IN NUMBER   := NULL,
   owner_name         IN VARCHAR2 := NULL,
   execution_name     IN VARCHAR2 := NULL,
   object_id          IN NUMBER   := NULL)
RETURN CLOB;

パラメータ

表17-19 GET_TASK_SCRIPTファンクションのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するタスク名。

type

生成するスクリプトのタイプを指定します。設定可能な値はIMPLEMENTATIONおよびUNDOです。

rec_id

実装スクリプトのサブセットの取出しに使用できる、オプションのリコメンデーション識別子番号。

0または値DBMS_ADVISOR.ADVISOR_ALLは、受け入れるすべてのリコメンデーションを含めることを示します。デフォルトは、受け入れるすべてのタスクのリコメンデーションを含めることです。

act_id

DDLコマンドとして単一のアクションの取出しに使用できる、オプションのアクション識別子番号。

0または値DBMS_ADVISOR.ADVISOR_ALLは、すべてのリコメンデーションのアクションを含めることを示します。デフォルトは、すべてのリコメンデーションのアクションを含めることです。

owner_name

オプションのタスク所有者名。

execution_name

特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。

object_id

スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。

戻り値

CLOBバッファとしてスクリプトを戻します。

使用上のノート

スクリプトは実行する準備ができていますが、新しいマテリアライズド・ビューおよび索引の受入れ可能な場所についてスクリプトを確認することをお薦めします。

生成されたスクリプトに含まれるリコメンデーションは、受入れ済としてマークする必要があります。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
  buf CLOB;
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales');
  DBMS_ADVISOR.EXECUTE_TASK(task_name);
    buf := DBMS_ADVISOR.GET_TASK_SCRIPT(task_name);
END;
/

17.3.19 IMPLEMENT_TASKプロシージャ

このプロシージャは、指定したアドバイザ・タスクのリコメンデーションを実装します。

構文

DBMS_ADVISOR.IMPLEMENT_TASK (
   task_name          IN VARCHAR2,
   rec_id             IN NUMBER := NULL,
   exit_on_error      IN BOOLEAN := NULL);

パラメータ

表17-20 IMPLEMENT_TASKプロシージャのパラメータ

パラメータ 説明

task_name

タスクの名前。

rec_id

オプションのリコメンデーションID。

exit_on_error

最初のエラー時に終了するオプションのブール。

17.3.20 IMPORT_SQLWKLD_SCHEMAプロシージャ

このプロシージャは、スキーマに基づいたSQLワークロードを構築し、ロードします。このワークロードは仮定ワークロードとも呼ばれます。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA (
   workload_name         IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   priority              IN NUMBER := 2,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);

パラメータ

表17-21 IMPORT_SQLWKLD_SCHEMAプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。

  • APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

  • NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

  • REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

saved_rows

リポジトリに実際に保存された行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上のノート

仮定ワークロードを正しくインポートするには、ターゲット・スキーマにディメンションが格納されている必要があります。

VALID_TABLE_LISTパラメータを設定しない場合、検索領域が著しく大きくなり、実行に長い時間を要することがあります。検索領域を特定の一連の表に制限することをお薦めします。

タスクに以前の実行からの有効なリコメンデーションが含まれる場合に、タスクを追加または変更すると、そのタスクが無効としてマークされ、価値の高いリコメンデーション・データの表示とレポートが妨げられることがあります。

DECLARE
  workload_name VARCHAR2(30);
  saved NUMBER;
  failed NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
  DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA(workload_name, 'REPLACE', 1, saved,
     failed);
END;
/

17.3.21 IMPORT_SQLWKLD_SQLCACHEプロシージャ

このプロシージャは、サーバーのSQLキャッシュの現行の内容からSQLワークロードを作成します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE (
   workload_name         IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   priority              IN NUMBER := 2,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);

パラメータ

表17-22 IMPORT_SQLWKLD_SQLCACHEプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。

  • APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

  • NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

  • REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

saved_rows

保存された行の数を出力パラメータとして戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  saved NUMBER;
  failed NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
  DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE(workload_name, 'REPLACE', 1, saved,
     failed);
END;
/

17.3.22 IMPORT_SQLWKLD_STSプロシージャ

このプロシージャは、既存のSQLチューニング・セットからSQLワークロードをロードします。SQLチューニング・セットは、一般に、様々な時刻と日付フィルタを使用してサーバー・ワークロード・リポジトリから作成されます。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_STS (
   workload_name         IN VARCHAR2,
   sts_name              IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   priority              IN NUMBER := 2,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);
DBMS_ADVISOR.IMPORT_SQLWKLD_STS (
   workload_name         IN VARCHAR2,
   sts_owner             IN VARCHAR2,
   sts_name              IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   priority              IN NUMBER := 2,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);

パラメータ

表17-23 IMPORT_SQLWKLD_STSプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

sts_owner

SQLチューニング・セットのオプションの所有者。

sts_name

データのインポート元となる、既存のSQLチューニング・セット・ワークロードの名前。sts_owner値を指定しない場合、デフォルトで所有者が現行のユーザーに設定されます。

import_mode

ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。

  • APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

  • NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

  • REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。デフォルト値は2です。

saved_rows

リポジトリに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  saved NUMBER;
  failed NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
  DBMS_ADVISOR.IMPORT_SQLWKLD_STS(workload_name, 'MY_SQLSET', 'REPLACE', 1,
     saved, failed);
END;
/

17.3.23 IMPORT_SQLWKLD_SUMADVプロシージャ

このプロシージャは、サマリー・アドバイザ・ワークロードからSQLワークロードを収集します。

このプロシージャの目的は、SQLアクセス・アドバイザへのOracle9i データベースのサマリー・アドバイザ・ユーザーの移行を支援することです。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_SUMADV (
   workload_name         IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   priority              IN NUMBER := 2,
   sumadv_id             IN NUMBER,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);

パラメータ

表17-24 IMPORT_SQLWKLD_SUMADVプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。

  • APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

  • NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

  • REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

priority

ワークロード・オブジェクトに保存する、各文のデフォルトのアプリケーション優先度を指定します。サマリー・アドバイザのワークロード文に0の優先度が含まれている場合は、デフォルトの優先度が適用されます。ワークロード文に有効な優先度が含まれる場合は、サマリー・アドバイザの優先度がSQLアクセス・アドバイザで相当する優先度に変換されます。値は次のいずれかになります。

1-HIGH、2 - MEDIUMまたは3 - LOW

sumadv_id

サマリー・アドバイザ・ワークロード識別子番号を指定します。

saved_rows

リポジトリに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  saved NUMBER;
  failed NUMBER;
  sumadv_id NUMBER;
BEGIN
  workload_name := 'My Workload';
  sumadv_id := 394;

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
  DBMS_ADVISOR.IMPORT_SQLWKLD_SUMADV(workload_name, 'REPLACE', 1, sumadv_id,
    saved, failed);
END;
/

17.3.24 IMPORT_SQLWKLD_USERプロシージャ

このプロシージャは、指定したユーザー表からSQLワークロードを収集します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.IMPORT_SQLWKLD_USER (
   workload_name         IN VARCHAR2,
   import_mode           IN VARCHAR2 := 'NEW',
   owner_name            IN VARCHAR2,
   table_name            IN VARCHAR2,
   saved_rows            OUT NUMBER,
   failed_rows           OUT NUMBER);

パラメータ

表17-25 IMPORT_SQLWKLD_USERプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

import_mode

ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。

  • APPEND 収集したワークロードがタスク内の既存のワークロードに追加されることを示しています。

  • NEW 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、例外がスローされます。

  • REPLACE 収集したワークロードがタスクの排他的ワークロードになることを示しています。既存のワークロードが見つかった場合は、それが削除された後に新しいワークロードが保存されます。

デフォルト値はNEWです。

owner_name

ワークロードを収集する表またはビューの所有者名を指定します。

table_name

ワークロード・データを収集する表またはビューの名前を指定します。

saved_rows

ワークロード・オブジェクトに実際に保存された行数を戻します。

failed_rows

構文または検証エラーのために保存されなかった行数を戻します。

戻り値

このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  saved NUMBER;
  failed NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name,'VALID_TABLE_LIST','SH.%');
  DBMS_ADVISOR.IMPORT_SQLWKLD_USER(workload_name, 'REPLACE', 'SH', 
    'USER_WORKLOAD', saved, failed);
END;
/

17.3.25 INTERRUPT_TASKプロシージャ

このプロシージャは、現在実行中のタスクを停止します。

タスクは、正常終了時と同じように処理を停止します。ユーザーは、この時点までに存在するすべてのリコメンデーションにアクセスできます。

構文

DBMS_ADVISOR.INTERRUPT_TASK (
   task_name          IN VARCHAR2);

パラメータ

表17-26 INTERRUPT_TASKプロシージャのパラメータ

パラメータ 説明

task_name

中断する単一のアドバイザ・タスク名。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.EXECUTE_TASK(task_name);
END;
/

このセッションがタスクを実行中に、次の文を使用して2番目のセッションからタスクを中断できます。

BEGIN
  DBMS_ADVISOR.INTERRUPT_TASK('My Task');
END;
/

17.3.26 MARK_RECOMMENDATIONプロシージャ

このプロシージャは、インポートまたは実装用にリコメンデーションをマークします。

構文

DBMS_ADVISOR.MARK_RECOMMENDATION (
   task_name          IN VARCHAR2
   id                 IN NUMBER,
   action             IN VARCHAR2);

パラメータ

表17-27 MARK_RECOMMENDATIONプロシージャのパラメータ

パラメータ 説明

task_name

タスクの名前。

id

アドバイザによって割り当てられたリコメンデーション識別子番号。

action

リコメンデーション・アクション設定。次の操作を指定できます。

  • ACCEPT: リコメンデーションを受入れ済としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されます。

  • IGNORE: リコメンデーションを無視としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されません。

  • REJECT: リコメンデーションを拒否としてマークします。この設定では、リコメンデーションが実装スクリプトおよびUNDOスクリプトに表示されません。

使用上のノート

リコメンデーションを実装する場合は、受入れ済としてマークされている必要があります。デフォルトでは、すべてのリコメンデーションが受入れ済としてみなされ、生成されるすべてのスクリプトに表示されます。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
  attribute VARCHAR2(100);
  rec_id NUMBER;
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');
  DBMS_ADVISOR.EXECUTE_TASK(task_name);

  rec_id := 1;
  DBMS_ADVISOR.MARK_RECOMMENDATION(task_name, rec_id, 'REJECT');
END;
/

17.3.27 QUICK_TUNEプロシージャ

このプロシージャは、分析を実行し、単一のSQL文のリコメンデーションを生成します。

これにより、指定したSQL文の分析に必要なすべての処理を短縮できます。この操作によって、指定したタスク名を使用したタスクが作成されます。このタスクは、指定したアドバイザ・タスク・テンプレートを使用して作成されます。最終的に、タスクが実行され、結果がリポジトリに保存されます。

構文

DBMS_ADVISOR.QUICK_TUNE (
   advisor_name           IN VARCHAR2,
   task_name              IN VARCHAR2,
   attr1                  IN CLOB,
   attr2                  IN VARCHAR2 := NULL,
   attr3                  IN NUMBER := NULL,
   template               IN VARCHAR2 := NULL,
   implement              IN BOOLEAN := FALSE,
   description            IN VARCHAR2 := NULL);

パラメータ

表17-28 QUICK_TUNEプロシージャのパラメータ

パラメータ 説明

advisor_name

分析を実行するアドバイザの名前。

task_name

タスクの名前。

attr1

CLOB変数の形式でのアドバイザ固有の属性。

attr2

VARCHAR2変数の形式でのアドバイザ固有の属性。

attr3

NUMBERの形式でのアドバイザ固有の属性。

template

初期設定のコピー元にする必要がある既存のタスクまたはテンプレートの名前。

implement

タスクを実装するかどうかを指定するフラグ。

description

タスクの説明。

使用上のノート

ユーザーが指定する場合は、最終的なリコメンデーションをプロシージャによって実装できます。

タスクは指定したSQLアクセス・アドバイザのタスク・テンプレートまたは組込みのデフォルトのSQLACCESS_GENERALテンプレートのいずれかを使用して作成されます。ワークロードには指定した文のみが格納され、すべてのタスク・パラメータはデフォルトに設定されます。

attr1はチューニングする単一のSQL文にする必要があります。SQLアクセス・アドバイザの場合、attr2は単一の文を実行するユーザーになります。省略した場合は現行のユーザーが使用されます。

DECLARE
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_name,
                  'SELECT AVG(amount_sold) FROM sh.sales WHERE promo_id=10');
END;
/

17.3.28 RESET_SQLWKLDプロシージャ

このプロシージャは、ワークロードを初期開始ポイントにリセットします。

ワークロードをリセットすると、すべてのジャーナルおよびログ・メッセージが削除され、必要な変動および利用統計情報が再計算されます。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.RESET_SQLWKLD (
   workload_name        IN VARCHAR2);

パラメータ

表17-29 RESET_SQLWKLDプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

使用上のノート

RESET_SQLWKLDは、SQL文の追加や削除などのワークロードを調整してから実行する必要があります。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');

  DBMS_ADVISOR.RESET_SQLWKLD(workload_name);
END;
/

17.3.29 RESET_TASKプロシージャ

このプロシージャは、指定したタスクのメタデータを再初期化します。タスクの状態はINITIALに設定されます。

構文

DBMS_ADVISOR.RESET_TASK (
   task_name          IN VARCHAR2);

パラメータ

表17-30 RESET_TASKプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するタスク名。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.EXECUTE_TASK(task_name);
  DBMS_ADVISOR.RESET_TASK(task_name);
END;
/

17.3.30 SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

このプロシージャは、SQLワークロード・オブジェクトまたはSQLワークロード・オブジェクト・テンプレート内のユーザー・パラメータのデフォルト値を変更します。

ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。パラメータのデフォルト値を変更すると、ワークロード・オブジェクトの作成時に新しい値が継承されます。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER (
   parameter            IN VARCHAR2,
   value                IN VARCHAR2);

DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER (
   parameter            IN VARCHAR2,
   value                IN NUMBER);

パラメータ

表17-31 SET_DEFAULT_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ 説明

parameter

変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、ワークロード・オブジェクト・タイプに一意ですが、すべてのワークロード・オブジェクト・タイプに一意である必要はありません。様々なオブジェクト・タイプで、様々な目的において同一のパラメータ名を使用できます。

value

指定したパラメータの値。値は文字列または数値で指定できます。値がDBMS_ADVISOR.DEFAULTの場合、デフォルト値にリセットされます。

使用上のノート

パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しいSQL文をワークロードにインポートまたは追加する前にパラメータを設定する必要があります。データをワークロードに配置した後にパラメータを設定しても、既存のデータに影響を与えません。

BEGIN
  DBMS_ADVISOR.SET_DEFAULT_SQLWKLD_PARAMETER('VALID_TABLE_LIST','SH.%');
END;
/

17.3.31 SET_DEFAULT_TASK_PARAMETERプロシージャ

このプロシージャは、タスクまたはテンプレート内のユーザー・パラメータのデフォルト値を変更します。

ユーザー・パラメータは、アドバイザの操作に様々な影響を与える、様々な属性を格納する単一の変数です。パラメータのデフォルト値を変更すると、タスクの作成時に新しい値が継承されます。

デフォルトのタスクは、通常のタスクとは異なります。デフォルト値は、新しく作成したタスクに挿入される初期値ですが、SET_TASK_PARAMETERを指定してタスク・パラメータを設定すると、ローカル値のみが設定されます。したがって、SET_DEFAULT_TASK_PARAMETERは、既存のタスクに影響を与えません。

構文

DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER (
   advisor_name        IN VARCHAR2
   parameter           IN VARCHAR2,
   value               IN VARCHAR2);

DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER (
   advisor_name        IN VARCHAR2
   parameter           IN VARCHAR2,
   value               IN NUMBER);

パラメータ

表17-32 SET_DEFAULT_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

advisor_name

DBA_ADVISOR_DEFINITIONSビューに定義されているとおりに、一意のアドバイザ名を指定します。

parameter

変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。

value

指定したタスク・パラメータの値。値は文字列または数値で指定できます。

BEGIN
  DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER(DBMS_ADVISOR.SQLACCESS_ADVISOR,
   'VALID_TABLE_LIST', 'SH.%');
END;
/

17.3.32 SET_SQLWKLD_PARAMETERプロシージャ

このプロシージャは、SQLワークロード・オブジェクトまたはSQLワークロード・オブジェクト・テンプレート内のユーザー・パラメータを変更します。

ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.SET_SQLWKLD_PARAMETER (
   workload_name        IN VARCHAR2,
   parameter            IN VARCHAR2,
   value                IN VARCHAR2);

DBMS_ADVISOR.SET_SQLWKLD_PARAMETER (
   workload_name        IN VARCHAR2,
   parameter            IN VARCHAR2,
   value                IN NUMBER);

パラメータ

表17-33 SET_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

parameter

変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。

value

指定したパラメータの値。値は文字列または数値で指定できます。値がDBMS_ADVISOR.DEFAULTの場合、デフォルト値にリセットされます。

使用上のノート

パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しいSQL文をワークロードにインポートまたは追加する前にパラメータを設定する必要があります。データをワークロードに配置した後にパラメータを設定しても、既存のデータに影響を与えません。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(workload_name, 'VALID_TABLE_LIST','SH.%');
END;
/

17.3.33 SET_TASK_PARAMETERプロシージャ

このプロシージャは、アドバイザ・タスクまたはテンプレート内のユーザー・パラメータを変更します。ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。

構文

DBMS_ADVISOR.SET_TASK_PARAMETER (
   task_name           IN VARCHAR2
   parameter           IN VARCHAR2,
   value               IN VARCHAR2);

DBMS_ADVISOR.SET_TASK_PARAMETER (
   task_name           IN VARCHAR2
   parameter           IN VARCHAR2,
   value               IN NUMBER);

パラメータ

表17-34 SET_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するアドバイザ・タスク名。

parameter

変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。

value

指定したタスク・パラメータの値。値は文字列または数値で指定できます。値がDEFAULTの場合、デフォルト値にリセットされます。

使用上のノート

タスクは、初期状態にある場合を除いて変更できません。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。このプロシージャの使用方法の詳細は、アドバイザ固有のマニュアルを参照してください。

SQLアクセス・アドバイザのタスク・パラメータ

表17-35に、SQLアクセス・アドバイザのタスク・パラメータを示します。

表17-35 SQLアクセス・アドバイザのタスク・パラメータ

パラメータ 説明

ANALYSIS_SCOPE

分析時に考慮するチューニング結果を指定するカンマ区切りリスト。

有効な値は、次のとおりです。

  • ALLINDEXMVIEWTABLEおよびPARTITIONを指定するための短縮名。

  • EVALUATION。指定したワークロードの読取り専用の評価を実行します。新しいリコメンデーションは作成されません。単独でのみ指定できます。

  • INDEX。SQLアクセス・アドバイザで索引構成の変更を推奨できます。

  • MVIEW。SQLアクセス・アドバイザでマテリアライズド・ビューおよびログの変更を推奨できます。

  • PARTITION。SQLアクセス・アドバイザでパーティションのオプションを推奨できます。これは、INDEXMVIEWおよびTABLEオプションと組み合せて使用します。

  • TABLE。SQLアクセス・アドバイザで元表のリコメンデーションを作成できます。このリリースでは、元表のリコメンデーションはパーティションのみです。

新しいキーワードを使用すると、次の組合せが有効となります。

  • INDEX

  • MVIEW

  • INDEXPARTITION

  • INDEXMVIEWPARTITION

  • INDEXTABLEPARTITION

  • MVIEWPARTITION

  • MIVEWTABLEPARTITION

  • INDEXMVIEWTABLEPARTITION

  • TABLEPARTITION

  • EVALUATION

デフォルト値はINDEXです。データ型はSTRINGLIST型です。

CREATION_COST

TRUE(デフォルト)に設定すると、SQLアクセス・アドバイザはアクセス構造(索引またはマテリアライズド・ビュー)の作成のコストを、問合せの頻度および問合せ実行時間の向上の可能性に照らして比較検討します。FALSEに設定すると、作成のコストは無視されます。データ型はSTRING型です。

DAYS_TO_EXPIRE

現行のSQLアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。タスクの期限が切れると、自動パージ操作による削除の候補となります。

現行のアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。データ型はNUMBER型です。

タスクの期限が切れると、自動パージ操作による削除の候補となります。

有効な値は、次のとおりです。

  • 0から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値は30です。

DEF_EM_TEMPLATE

Enterprise ManagerのSQLアクセス・アドバイザ・ウィザードによって初期値が読み取られるデフォルトのタスクまたはテンプレート名を格納します。

デフォルト値はSQLACCESS_EMTASKです。データ型はSTRING型です。

DEF_INDEX_OWNER

新しい索引リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値が索引名の修飾に使用されます。

使用可能な値は次のとおりです。

  • 既存のスキーマ名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DEF_INDEX_TABLESPACE

新しい索引リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

使用可能な値は次のとおりです。

  • 既存の表領域名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED。スクリプトに索引の表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DEF_MVIEW_OWNER

新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値がマテリアライズド・ビュー名の修飾に使用されます。

使用可能な値は次のとおりです。

  • 既存のスキーマ名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DEF_MVIEW_TABLESPACE

新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

有効な値は、次のとおりです。

  • 既存の表領域名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED。スクリプトにマテリアライズド・ビュー・ログの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DEF_MVLOG_TABLSPACE

新しいマテリアライズド・ビュー・ログ・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

使用可能な値は次のとおりです。

  • 既存の表領域名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED。スクリプトにマテリアライズド・ビュー・ログの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DEF_PARTITION_TABLESPACE

新しいパーティション・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。

使用可能な値は次のとおりです。

  • 既存の表領域名。引用された識別子がサポートされます。

  • ADVISOR_UNUSED。スクリプトにマテリアライズド・ビューの表領域句は存在しません。

デフォルト値はADVISOR_UNUSEDです。データ型はSTRING型です。

DML_VOLATILITY

TRUEに設定すると、SQLアクセス・アドバイザは、リコメンデーションの判断において索引メンテナンスとマテリアライズド・ビューのリフレッシュの影響を考慮します。これにより、頻繁に更新される列や表を含むアクセス構造リコメンデーションが制限されます。たとえば、列に大量のDML文がある場合、その列にはビットマップ索引よりもBツリー索引が好ましいと考えられます。このプロセスの効率を高めるため、ワークロードにはアプリケーションの更新動作を表すDML (insert/update/delete/merge/direct path inserts)文を含める必要があります。データ型はSTRING型です。

関連パラメータrefresh_modeを参照してください。

END_TIME

SQL文の選択の終了時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。

各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

  • HHは24時間形式での時間です。

  • MIは分です。

  • SSは秒です。

データ型はSTRING型です。

EVALUATION_ONLY

このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、ANALYSIS_SCOPEタスク・パラメータに格納されます。

TRUEに設定すると、SQLアクセス・アドバイザはワークロードを分析しますが、現行の構成がそれをどの程度サポートしているかについてコメントするだけです。チューニング・リコメンデーションは作成されません。

使用可能な値は次のとおりです。

  • FALSE

  • TRUE

デフォルト値はFALSEです。データ型はSTRING型です。

EXECUTION_TYPE

このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、ANALYSIS_SCOPEタスク・パラメータに格納されます。

変換される値は、次のとおりです。

  • FULLFULL

  • INDEX_ONLYINDEX

  • MVIEW_ONLYMVIEW

  • MVIEW_LOG_ONLYMVIEW_LOG_ONLY

望ましいリコメンデーションの種類。有効な値は、次のとおりです。

  • FULL。サポートされるすべてのリコメンデーションの種類が考慮されます。

  • INDEX_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、索引ソリューションのみを考慮します。

  • MVIEW_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、マテリアライズド・ビューおよびマテリアライズド・ビュー・ログのソリューションを考慮します。

  • MVIEW_LOG_ONLY。SQLアクセス・アドバイザはリコメンデーションとして、マテリアライズド・ビュー・ログ・ソリューションのみを考慮します。

デフォルト値はFULLです。データ型はSTRINGLIST型です。

IMPLEMENT_EXIT_ON_ERROR

IMPLEMENT_TASK操作の実行時、このパラメータによって、アクションの実装に失敗した場合の動作が制御されます。TRUEに設定すると、IMPLEMENT_TASKは、最初の予期しないエラーの発生時に停止します。

有効な値は、次のとおりです。

  • TRUE

  • FALSE

デフォルト値はTRUEです。データ型はSTRING型です。

INDEX_NAME_TEMPLATE

新しい索引名を構成する方法を指定します。

テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。構成した名前の最大長は30文字です。

有効なキーワードは、次のとおりです。

  • 22文字までの任意のリテラル値。

  • TABLE。親の表の名前を索引名に代入します。名前が長すぎる場合、収まるように切り詰められます。

  • TASK_ID。現行のタスク識別子番号を16進形式で挿入します。

  • SEQ。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、table_IDX$$_task_idsequenceです。データ型はSTRING型です。

INVALID_ACTION_LIST

SQLワークロード・オブジェクトを処理できないアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。

タスクの実行中にSQL文のアクションがアクション・リストの名前と一致する場合、そのアクションは実行中のタスクでは処理されません。アクション名は大/小文字が区別されます。

有効な値は、次のとおりです。

  • 単一のアクション

  • カンマ区切りアクション・リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

INVALID_MODULE_LIST

SQLワークロード・オブジェクトを処理できないモジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。

タスクの実行中にSQL文のモジュールがモジュール・リストの名前と一致する場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。

有効な値は、次のとおりです。

  • 単一のアプリケーション

  • カンマ区切りモジュール・リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

INVALID_SQLSTRING_LIST

SQLワークロード・オブジェクトを処理できないテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた値をサポートしています。

SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。

タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれている場合、そのSQL文は実行中のタスクでは処理されません。

有効な値は、次のとおりです。

  • 単一の文字列

  • カンマ区切り文字列リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

INVALID_USERNAME_LIST

SQLワークロード・オブジェクトを処理できないユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致する場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

有効な値は、次のとおりです。

  • 単一のユーザー名

  • カンマ区切りのユーザー名リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

JOURNALING

ジャーナル(DBA_ADVISOR_JOURNALおよびUSER_ADVISOR_JOURNALビュー)へのメッセージのロギングを制御します。設定の値を大きくするほど、ジャーナルにロギングされる情報量が増えます。

使用可能な値は次のとおりです。

  • UNUSED: ジャーナル・メッセージなし

  • FATAL: 致命的な状況の説明

  • ERROR: エラーの説明

  • WARNING: 警告の説明

  • INFORMATION: 情報メッセージ

  • INFORMATION2: 共通の情報

  • INFORMATION3: 共通の情報

  • INFORMATION4: 共通の情報

  • INFORMATION5: 共通の情報

  • INFORMATION6: 共通の情報

各ジャーナル値は、該当するレベル以下のレベルの記録されたすべてのメッセージを表します。たとえば、WARNINGを選択すると、ERRORおよびFATALとともにWARNINGとマークされたメッセージもリポジトリに記録されます。

INFORMATION6は最大限のメッセージの記録を表し、UNUSEDは最小限の記録を表します。

デフォルト値はINFORMATIONです。データ型はNUMBER型です。

LIMITED_PARTITION_SCHEMES

ユーザーは、調査するパーティション・スキームの数をパーティション・エキスパートが削減するように推奨できます。これによって、アドバイザのランタイムを短縮することができます。

使用可能な値は次のとおりです。

  • 1から10の範囲の整数

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はNUMBER型です。

MAX_NUMBER_PARTITIONS

アドバイザによって元表、索引またはマテリアライズド・ビューに対して推奨されるパーティションの数を制限します。

使用可能な値は次のとおりです。

  • 1から4294967295の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNLIMITEDです。データ型はNUMBER型です。

MODE

アクセス・アドバイザが分析時に実行するモードを指定します。

有効な値は、次のとおりです。

  • LIMITED: アドバイザに候補のリコメンデーションの検索領域を制限することによって高速処理を試みるように指示しますが、それに応じて結果の品質が低下することがあります。

  • COMPREHENSIVE: アドバイザに大量の候補のプールを検索するように指示します。実行に長時間かかる可能性がありますが、結果のリコメンデーションの品質は最高になります。

デフォルト値はCOMPREHENSIVEです。データ型はSTRING型です。

MVIEW_NAME_TEMPLATE

新しいマテリアライズド・ビュー名を構成する方法を指定します。

テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。

形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。

有効なトークンは、次のとおりです。

  • 22文字までの任意のリテラル値。

  • TASK_ID。現行のタスク識別子番号を16進形式で挿入します。

  • SEQ。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、 MV$$_task_idsequenceです。データ型はSTRING型です。

ORDER_LIST

このパラメータは現在非推奨になっています。

分析処理時に、アクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。絶対自然順序を決定するため、アクセス・アドバイザはORDER_LIST値を使用して、ワークロードをソートします。複数の順序キーはカンマで区切る必要があります。

使用可能な値は次のとおりです。

  • BUFFER_GETS。SQL文のバッファ読取りカウント値を使用して順序を設定します。

  • CPU_TIME。SQL文のCPU時間値を使用して順序を設定します。

  • DISK_READS。SQL文のdisk-readカウント値を使用して順序を設定します。

  • ELAPSED_TIME。SQL文の経過時間値を使用して順序を設定します。

  • EXECUTIONS。SQL文の実行頻度値を使用して順序を設定します。

  • OPTIMIZER_COST。SQL文のオプティマイザ・コスト値を使用して順序を設定します。

  • I/O。SQL文の入出力カウント値を使用して順序を設定します。

  • PRIORITY。ユーザー指定のビジネス優先順位値を使用して順序を設定します。

すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。

デフォルト値はPRIORITYOPTIMIZER_COSTです。データ型はSTRINGLIST型です。

PARTITION_NAME_TEMPLATE

新しいパーティション名を構成する方法を指定します。形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。

有効なトークンは、次のとおりです。

  • 22文字までの任意のリテラル値。

  • table。親の表の名前をパーティション名に代入します。名前が長すぎる場合、収まるように切り詰められます。

  • task_id。現行のタスク識別子番号を16進形式で挿入します。

  • sequence。順序番号を16進形式で挿入します。この数値は一意性を確保するために使用されるため、必須トークンです。

デフォルトのテンプレートは、PTN$$_table_task_idsequenceです。データ型はSTRING型です。

PARTITIONING_GOAL

パーティション・リコメンデーションの作成に使用する方法を指定します。有効な値の1つに、PERFORMANCEがあり、これはデフォルトです。データ型はSTRING型です。

PARTITIONING_TYPES

使用されるパーティションのタイプを指定します。有効な値はRANGEおよびHASHです。データ型はSTRING型です。

RANKING_MEASURE

分析処理時に、SQLアクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。SQLアクセス・アドバイザは、絶対自然順序を決定するために、RANKING_MEASURE値を使用してワークロードをソートします。複数の順序キーはカンマで区切る必要があります。

使用可能な値は次のとおりです。

  • BUFFER_GETS。SQL文のバッファ読取りカウント値を使用して順序を設定します。

  • CPU_TIME。SQL文のCPU時間値を使用して順序を設定します。

  • DISK_READS。SQL文のdisk-readカウント値を使用して順序を設定します。

  • ELAPSED_TIME。SQL文の経過時間値を使用して順序を設定します。

  • EXECUTIONS。SQL文の経過時間値を使用して順序を設定します。

  • OPTIMIZER_COST。SQL文のオプティマイザ・コスト値を使用して順序を設定します。

  • PRIORITY。ユーザー指定のビジネス優先順位値を使用して順序を設定します。

すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。

デフォルト値はPRIORITYOPTIMIZER_COSTです。データ型はSTRINGLIST型です。

RECOMMEND_MV_EXACT_TEXT_MATCH

候補のマテリアライズド・ビューについて考慮する際は、このパラメータにTRUEが含まれている場合にのみ完全なテキスト一致ソリューションが含まれます。

有効な値は、次のとおりです。

  • TRUE

  • FALSE

デフォルト値はTRUEです。データ型はSTRING型です。

RECOMMENDED_TABLESPACES

SQLアクセス・アドバイザでパーティション・スキームに対する最適な表領域を推奨できます。これを設定しなかった場合、SQLアクセス・アドバイザではパーティション・メソッドのみの推奨が行われ、物理的な表領域についての推奨は行われません。

使用可能な値は次のとおりです。

  • TRUE

  • FALSE (デフォルト)

データ型はSTRING型です。

REFRESH_MODE

マテリアライズド・ビューをON_DEMANDでリフレッシュするか、ON_COMMITでリフレッシュするかを指定します。これは、パラメータdml_volatilityTRUEに設定した場合に、マテリアライズド・ビューのリフレッシュの影響を評価するために使用します。

使用可能な値は次のとおりです。

  • ON_DEMAND

  • ON_COMMIT

デフォルト値はON_DEMANDです。データ型はSTRING型です。

REPORT_DATE_FORMAT

これはデフォルトの日付および時刻の書式テンプレートです。デフォルトの書式はDD/MM/YYYYHH24:MIです。データ型はSTRING型です。

SHOW_RETAINS

実装スクリプトおよびSQLアクセス・アドバイザ・ウィザード内のRETAINアクションの表示を制御します。

有効な値は、次のとおりです。

  • TRUE

  • FALSE

デフォルト値はTRUEです。データ型はSTRING型です。

SQL_LIMIT

分析するSQL文の数を指定します。他のすべてのフィルタが適用された後に、SQL_LIMITフィルタが適用されます。たとえば、表hr.employeesを参照する文のみを受け入れる場合、これらの文にはSQL_LIMIT値のみが適用されます。

パラメータORDER_LISTと一緒に使用すると、SQLアクセス・アドバイザは指定されたソート・キーに従って文を順序付けすることによって、最も優先度が高いSQL文を処理します。

有効な値は、次のとおりです。

  • 1から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はNUMBER型です。

START_TIME

SQL文の選択の開始時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。

各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

  • HHは24時間形式での時間です。

  • MIは分です。

  • SSは秒です。

データ型はSTRING型です。

STORAGE_CHANGE

SQLアクセス・アドバイザのリコメンデーションによって消費可能な領域調整の量を格納します。ワークロードの有効範囲がFULLとしてマークされている場合にのみ、0(ゼロ)または負の値を指定できます。

SQLアクセス・アドバイザが一連のリコメンデーションを生成した際に、結果の物理構造が配分された領域に収まる必要があります。領域の配分は、現在既存のアクセス構造によって使用されている領域に、STORAGE_CHANGE値を加算して計算されます。負のSTORAGE_CHANGE値によって、SQLアクセス・アドバイザは領域縮小要求のため、既存の構造を削除することがあります。

有効な値は、次のとおりです。

  • 負の値、0、正の値を含むすべての有効な整数

デフォルト値はADVISOR_UNLIMITEDです。データ型はNUMBER型です。

TIME_LIMIT

SQLアクセス・アドバイザで分析処理の実行に使用される時間を分単位で指定します。指定したリコメンデーションの品質にSQLアクセス・アドバイザが達した場合、またはすべての入力データが分析された場合、残りの時間に関係なく処理は終了します。

有効な値は、次のとおりです。

  • 1から10,000の範囲の整数

  • ADVISOR_UNLIMITED

デフォルト値は、720(12時間)です。データ型はNUMBER型です。

ADVISOR_UNLIMITEDを指定すると、パラメータを最大値の10,000(約1週間)に設定した場合と同じ効果があります。SQLアクセス・アドバイザは、10,000分を超えて稼働することはありません。

VALID_ACTION_LIST

SQLワークロード・オブジェクトを処理できるアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。

タスクの実行中にSQL文のアクションがアクション・リストの名前と一致しない場合、そのアクションはタスクで実行されません。アクション名は大/小文字が区別されます。

有効な値は、次のとおりです。

  • 単一のアクション

  • カンマ区切りアクション・リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

VALID_MODULE_LIST

SQLワークロード・オブジェクトを処理できるアプリケーション・モジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。

タスクの実行中に、SQL文のモジュールがモジュール・リストの名前と一致しない場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。

有効な値は、次のとおりです。

  • 単一のアプリケーション

  • カンマ区切りモジュール・リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

VALID_SQLSTRING_LIST

SQLワークロード・オブジェクトを処理できるテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。

タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれない場合、そのSQL文は実行中のタスクでは処理されません。

有効な値は、次のとおりです。

  • 単一の文字列

  • カンマ区切り文字列リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

VALID_TABLE_LIST

チューニング可能な表の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用された識別子をサポートしています。表にはワイルドカード仕様がサポートされています。デフォルト値はユーザーの範囲内のすべての表がチューニング可能です。サポートされるワイルドカード文字は%です。%ワイルドカードは、連続する任意の文字に一致します。

SQL文の処理時に、有効な表のリストに少なくとも1つの参照される表が指定されていないと受け入れられません。リストを使用しない場合、SQL文のすべての表の参照が有効であるとみなされます。

表の参照の有効な構文は、次のとおりです。

  • schema.table

  • schema

  • schema.%(schemaと同じ)

  • カンマ区切りアクション・リスト

  • ADVISOR_UNUSED

有効な値は、次のとおりです。

  • 単一の表参照

  • カンマ区切り参照リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はTABLELIST型です。

VALID_USERNAME_LIST

SQLワークロード・オブジェクトを処理できるユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。

タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致しない場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

有効な値は、次のとおりです。

  • 単一のユーザー名

  • カンマ区切りのユーザー名リスト

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。データ型はSTRINGLIST型です。

WORKLOAD_SCOPE

ワークロードが表すアプリケーションの適用範囲のレベルを指定します。設定可能な値はFULLおよびPARTIALです。

FULL ワークロードに、目的の表に関連するすべてのアプリケーションSQL文を格納する場合に使用する必要があります。

PARTIAL(デフォルト)ワークロードに、目的の表に関連するアプリケーションSQL文の完全な表現に満たないものを格納する場合に使用する必要があります。

データ型はSTRING型です。

セグメント・アドバイザのパラメータ

表17-36に、セグメント・アドバイザでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。

表17-36 セグメント・アドバイザのタスク・パラメータ

パラメータ 説明

MODE

分析に使用するデータ。デフォルト値はCOMPREHENSIVEで、有効な値は次のとおりです。

  • LIMITED: 自動ワークロード・リポジトリで使用可能な統計情報に限定される分析。

  • COMPREHENSIVE: サンプリングと自動ワークロード・リポジトリ統計情報に基づく分析。

TIME_LIST

アドバイザが実行する必要がある時間制限。秒単位で指定し、有効な値はUNLIMITED (デフォルト)です。

RECOMMEND_ALL

すべてのセグメントに対するリコメンデーションを生成するかどうかを指定します。

デフォルト値はTRUEです。TRUEに設定すると、ユーザーによって指定されたすべてのセグメントに関するリコメンデーションを生成します。FALSEに設定すると、縮小可能なオブジェクトのみに関するリコメンデーションを生成します。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';

   DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
   DBMS_ADVISOR.SET_TASK_PARAMETER(task_name, 'VALID_TABLELIST',
      'SH.%,SCOTT.EMP');
END;
/

UNDOアドバイザのタスク・パラメータ

表17-37に、UNDOアドバイザでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。

表17-37 UNDOアドバイザのタスク・パラメータ

パラメータ 説明

TARGET_OBJECTS

システムのUNDO表領域。デフォルト値はなく、有効な値はUNDO_TBSです。

START_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

END_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

BEGIN_TIME_SEC

開始時間から現在までの秒数。システムが分析を実行する時間を示します。BEGIN_TIME_SECは、END_TIME_SECより大きい必要があります。デフォルト値はなく、有効な値は正の整数です。

END_TIME_SEC

終了時間から現在までの秒数。END_TIME_SECは、BEGIN_TIME_SECより大きい必要があります。デフォルト値はなく、有効な値は正の整数です。

DECLARE
   tname  VARCHAR2(30);
   oid    NUMBER;
   BEGIN
     DBMS_ADVISOR.CREATE_TASK('Undo Advisor', tid, tname, 'Undo Advisor Task');
     DBMS_ADVISOR.CREATE_OBJECT(tname, 'UNDO_TBS', null, null, null, 'null', oid);
     DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'TARGET_OBJECTS', oid);
     DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', 1);
     DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', 2);
     DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'INSTANCE', 1);
     DBMS_ADVISOR.EXECUTE_TASK(tname);
   END;
/

自動データベース診断モニター(ADDM)のタスク・パラメータ

表17-38に、ADDMでSET_TASK_PARAMETERプロシージャを使用して設定できる入力タスク・パラメータを示します。

表17-38 ADDMのタスク・パラメータ

パラメータ 説明

START_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

END_SNAPSHOT

AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。

DB_ID

START_SNAPSHOTおよびEND_SNAPSHOTのデータベース。デフォルト値は現行のデータベースIDです。

INSTANCE

START_SNAPSHOTおよびEND_SNAPSHOTのインスタンス。デフォルト値は0またはUNUSEDで、有効な値はすべての正の整数です。デフォルトでは、すべてのインスタンスが分析されます。

INSTANCES

INSTANCEパラメータが設定されている場合、INSTANCESは無視されます。デフォルト値はUNUSEDで、有効な値は、インスタンス番号のカンマ区切りリスト(1, 3, 5など)です。デフォルトでは、すべてのインスタンスが分析されます。

DBIO_EXPECTED

データベース・ブロックの平均読込み時間(マイクロ秒単位)。デフォルト値は10ミリ秒で、有効な値はシステムによって異なります。

次の例では、現行のデータベースおよび19から26の範囲のAWRスナップショットに対してADDMタスクを作成して実行します。この例では、1つのみのデータベースを所有しているか、Oracle RACデータベースを所有しているかに関係なく、すべてのインスタンスを分析します。

DECLARE
   tid     NUMBER;
   tname VARCHAR2(30) := 'ADDM_TEST';
BEGIN
   DBMS_ADVISOR.CREATE_TASK('ADDM', tid, tname, 'my test');
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', '19');
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', '26');
   DBMS_ADVISOR.EXECUTE_TASK(tname);
END;
/

参照:

SQLチューニング・アドバイザのタスク・パラメータ

詳細は、DBMS_SQLTUNEパッケージおよび『Oracle Database SQLチューニング・ガイド』を参照してください。

17.3.34 TUNE_MVIEWプロシージャ

このプロシージャは、マテリアライズド・ビューを複数のビューに分解する方法と、リフレッシュおよびクエリー・リライトの高速化を最適化してマテリアライズド・ビューを更新する方法を示します。さらに、マテリアライズド・ビュー・ログを修正する方法やクエリー・リライトを有効にする方法も示します。

構文

DBMS_ADVISOR.TUNE_MVIEW (
   task_name        IN OUT VARCHAR2, 
   mv_create_stmt   IN     [CLOB | VARCHAR2]);

パラメータ

表17-39 TUNE_MVIEWプロシージャのパラメータ

パラメータ 説明

task_name

カタログ・ビューで結果を問い合せるためのタスク名。指定しない場合は、データベースによってタスク名が生成され、戻されます。

mv_create_stmt

元のマテリアライズド・ビュー作成文。

使用上のノート

TUNE_MVIEWを実行すると、2つの出力結果が生成されます。一方は実装に対するもので、もう一方は実装の取消しに対するものです。出力は、USER_TUNE_MVIEWビューおよびDBA_TUNE_MVIEWビューからアクセスできます。さらに、DBMS_ADVISOR.GET_TASK_SCRIPTおよびDBMS_ADVISOR.CREATE_FILEを使用して、TUNE_MVIEW結果をスクリプト・ファイルに出力し、後で実行できます。

表17-40 USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー

列名 列の説明

OWNER

マテリアライズド・ビューの所有者の名前。

TASK_NAME

タスクの名前。この名前は、一連のリコメンデーションにアクセスするキーとして使用できます。

SCRIPT_TYPE

行がIMPLEMENTATIONスクリプトとUNDOスクリプトのいずれの行であるかを示すリコメンデーションID。

ACTION_ID

コマンド順序番号として使用するアクションID。

STATEMENT

TUNE_MVIEW出力の場合、この列は次の文を表し、REFRESHオプションおよびREWRITEオプションなどの文のプロパティが含まれます。

  • CREATEMATERIALIZEDVIEWLOG

  • ALTER MATERIALIZED VIEW LOG FORCE

  • [CREATE | DROP] MATERIALIZED VIEW

次の例は、TUNE_MVIEWを使用して、CREATE MATERIALIZED VIEW文を最適化する方法を示しています。

DECLARE
  v_tname VARCHAR2(30);
BEGIN
  v_tname := 'mview_task';
  DBMS_ADVISOR.TUNE_MVIEW(
      task_name      => v_tname
  ,   mv_create_stmt => 
       'CREATE MATERIALIZED VIEW omv REFRESH WITH ROWID AS SELECT * FROM orders');
END;

次の例のように、USER_TUNE_MVIEWまたはDBA_TUNE_MVIEWを問い合せて結果を表示できます(出力例も示します)。

SET LINESIZE 120
COL TASK_NAME FORMAT a20
COL STATEMENT FORMAT a40

SELECT * 
FROM   USER_TUNE_MVIEW 
WHERE  TASK_NAME='mview_task' 
AND    SCRIPT_TYPE='IMPLEMENTATION';

TASK_NAME             ACTION_ID SCRIPT_TYPE    STATEMENT
-------------------- ---------- -------------- ----------------------------------------
mview_task                    1 IMPLEMENTATION CREATE MATERIALIZED VIEW LOG ON "OE"."OR
                                               DERS" WITH ROWID

mview_task                    2 IMPLEMENTATION ALTER MATERIALIZED VIEW LOG FORCE ON "OE
                                               "."ORDERS" ADD ROWID

mview_task                    3 IMPLEMENTATION CREATE MATERIALIZED VIEW OE.OMV REFRESH
                                               FAST WITH ROWID DISABLE QUERY REWRITE

または、次の例のように、出力結果を外部スクリプト・ファイルに保存することもできます。

CREATE DIRECTORY TUNE_RESULTS_DIR AS  '/tmp'; 
GRANT READ, WRITE ON DIRECTORY TUNE_RESULTS_DIR TO PUBLIC; 
BEGIN 
  DBMS_ADVISOR.CREATE_FILE(
      buffer     => DBMS_ADVISOR.GET_TASK_SCRIPT( task_name => 'mview_task')
  ,   location   => 'TUNE_RESULTS_DIR'
  ,   filename   => 'mview_create.sql' );
END;

前の文によって、結果が/tmp/mview_create.sqlに保存されます。

参照:

TUNE_MVIEWプロシージャの使用方法の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。

17.3.35 UPDATE_OBJECTプロシージャ

このプロシージャは、既存のタスク・オブジェクトを更新します。

タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。

構文

DBMS_ADVISOR.UPDATE_OBJECT (
   task_name       IN VARCHAR2
   object_id       IN NUMBER,
   attr1           IN VARCHAR2 := NULL,
   attr2           IN VARCHAR2 := NULL,
   attr3           IN VARCHAR2 := NULL,
   attr4           IN CLOB := NULL,
   attr5           IN VARCHAR2 := NULL);

パラメータ

表17-41 UPDATE_OBJECTプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別する有効なアドバイザ・タスク名。

object_id

アドバイザが割り当てたオブジェクト識別子。

attr1

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr2

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr3

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr4

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

attr5

アドバイザ固有のデータ。NULLに設定すると、目的のオブジェクトに影響を与えません。

属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『Oracle Database管理者ガイド』を参照してください。

使用上のノート

オブジェクト・レベルの場合、アドバイスはオブジェクトのすべてのパーティションに関して生成されます(オブジェクトがパーティション化されている場合)。アドバイスは依存オブジェクトに伝達されません。セグメント・レベルの場合、アドバイスは表のパーティションまたはサブパーティション、索引、LOB列などの単一のセグメントに関して取得できます。表領域レベルの場合、表領域内のすべてのセグメントに対するターゲット・アドバイスが生成されます。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  obj_id NUMBER;
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_OBJECT (task_name,'SQL',NULL,NULL,NULL,
                              'SELECT * FROM SH.SALES',obj_id);
  DBMS_ADVISOR.UPDATE_OBJECT (task_name, obj_id,NULL,NULL,NULL,
                              'SELECT count(*) FROM SH.SALES');
END;
/

参照:

セグメント・アドバイザの詳細は、Oracle Database管理者ガイドを参照してください。

17.3.36 UPDATE_REC_ATTRIBUTESプロシージャ

このプロシージャは、リコメンデーションの所有者、名前および表領域を更新します。

構文

DBMS_ADVISOR.UPDATE_REC_ATTRIBUTES (
   task_name            IN VARCHAR2
   rec_id               IN NUMBER,
   action_id            IN NUMBER,
   attribute_name       IN VARCHAR2,
   value                IN VARCHAR2);

パラメータ

表17-42 UPDATE_REC_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するタスク名。

rec_id

リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。

action_id

特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。

attribute_name

変更する属性の名前。有効な値は次のとおりです。

  • owner: オブジェクトの新しい所有者。

  • name: オブジェクトの新しい名前。

  • tablespace: オブジェクトの新しい表領域。

value

リコメンデーション属性の新しい値を指定します。

使用上のノート

タスクが正しく実行されないかぎり、リコメンデーション属性は変更できません。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
  workload_name VARCHAR2(30);
  attribute VARCHAR2(100);
BEGIN
  task_name := 'My Task';
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');
  DBMS_ADVISOR.EXECUTE_TASK(task_name);

attribute := 'SH';

  DBMS_ADVISOR.UPDATE_REC_ATTRIBUTES(task_name, 1, 3, 'OWNER', attribute);
END;
/

17.3.37 UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

このプロシージャは、SQLワークロード・オブジェクトまたはテンプレートの様々な属性を変更します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.UPDATE_SQLWKLD_ATTRIBUTES (
   workload_name        IN VARCHAR2,
   new_name             IN VARCHAR2 := NULL,
   description          IN VARCHAR2 := NULL,
   read_only            IN VARCHAR2 := NULL,
   is_template          IN VARCHAR2 := NULL,
   how_created          IN VARCHAR2 := NULL);

パラメータ

表17-43 UPDATE_SQLWKLD_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別するワークロード・オブジェクト名。

new_name

新しいワークロード・オブジェクト名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ワークロードの名前は変更されません。タスク名の長さは30文字までです。

description

新しいワークロードの説明。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、説明は変更されません。名前の長さは256文字までです。

read_only

TRUEに設定すると、変更できません。

is_template

ワークロードをテンプレートとして使用する場合はTRUEに設定します。

how_created

ワークロードの作成を開始したソース・アプリケーション名を示します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ソースは変更されません。

DECLARE
  workload_name VARCHAR2(30);
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');
  DBMS_ADVISOR.UPDATE_SQLWKLD_ATTRIBUTES(workload_name,'New workload name');
END;
/

17.3.38 UPDATE_SQLWKLD_STATEMENTプロシージャ

このプロシージャは、指定したSQLワークロード内の既存のSQL文を更新します。

ノート:

Oracle Database 11gリリース1 (11.1)から、このプロシージャは非推奨になっています。

構文

DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT (
   workload_name     IN VARCHAR2,
   sql_id            IN NUMBER,
   application       IN VARCHAR2 := NULL,
   action            IN VARCHAR2 := NULL,
   priority          IN NUMBER := NULL,
   username          IN VARCHAR2 := NULL);

DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT (
   workload_name     IN VARCHAR2,
   search            IN VARCHAR2,
   updated           OUT NUMBER,
   application       IN VARCHAR2 := NULL,
   action            IN VARCHAR2 := NULL,
   priority          IN NUMBER := NULL,
   username          IN VARCHAR2 := NULL);

パラメータ

表17-44 UPDATE_SQLWKLD_STATEMENTプロシージャのパラメータ

パラメータ 説明

workload_name

既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。

sql_id

文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数DBMS_ADVISOR.ADVISOR_ALLを使用します。

updated

検索された更新によって変更された文の数を戻します。

application

SQL文に関連付けるビジネス・アプリケーション名を指定します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

action

文のアプリケーション・アクションを指定します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

priority

SQL文の相対優先度。値は、1 - HIGH、2 - MEDIUMまたは3 - LOWのいずれかにする必要があります。

値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

username

SQL文を実行したOracleユーザー名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、リポジトリ内の列は更新されません。

ユーザー名はOracle識別子であるため、username値はデータベースに保存されているとおりに正確に入力する必要があります。たとえば、ユーザーSCOTTが実行中のユーザーである場合、ユーザー識別子SCOTTはすべて大文字で指定する必要があります。データベースでは、ユーザーscottSCOTTと同じものとして認識されません。

search

無効になっています。

使用上のノート

ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。

DECLARE
  workload_name VARCHAR2(30);
  updated NUMBER;
  id NUMBER;
BEGIN
  workload_name := 'My Workload';

  DBMS_ADVISOR.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT(workload_name, 'MONTHLY', 'ROLLUP',
                                     100,400,5041,103,640445,680000,2,
                                     1,SYSDATE,1,'SH','SELECT AVG(amount_sold)
                                     FROM sh.sales WHERE promo_id = 10');

   SELECT sql_id INTO id FROM USER_ADVISOR_SQLW_STMTS
   WHERE workload_name = 'My Workload';

  DBMS_ADVISOR.UPDATE_SQLWKLD_STATEMENT(workload_name, id);
END;
/

17.3.39 UPDATE_TASK_ATTRIBUTESプロシージャ

このプロシージャは、タスクまたはタスク・テンプレートの様々な属性を変更します。

構文

DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES (
   task_name          IN VARCHAR2
   new_name           IN VARCHAR2 := NULL,
   description        IN VARCHAR2 := NULL,
   read_only          IN VARCHAR2 := NULL,
   is_template        IN VARCHAR2 := NULL,
   how_created        IN VARCHAR2 := NULL);

パラメータ

表17-45 UPDATE_TASK_ATTRIBUTESプロシージャのパラメータ

パラメータ 説明

task_name

既存のタスクを一意に識別するアドバイザ・タスク名。

new_name

新しいアドバイザ・タスク名。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ワークロードの名前は変更されません。タスク名の長さは30文字までです。

description

新しいタスクの説明。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、説明は変更されません。名前の長さは256文字までです。

read_only

タスクを読取り専用に設定します。設定可能な値はTRUEおよびFALSEです。

値がNULLか、またはADVISOR_UNUSEDが格納されている場合、設定は変更されません。

is_template

タスクをテンプレートとしてマークします。物理的にタスクとテンプレートの違いはありませんが、テンプレートは実行できません。設定可能な値はTRUEおよびFALSEです。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、設定は変更されません。

how_created

タスクの作成を開始したソース・アプリケーション名を示します。値がNULLか、またはADVISOR_UNUSEDが格納されている場合、ソースは変更されません。

DECLARE
  task_id NUMBER;
  task_name VARCHAR2(30);
BEGIN
  task_name := 'My Task';

  DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_id, task_name);
  DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES(task_name,'New Task Name');
  DBMS_ADVISOR.UPDATE_TASK_ATTRIBUTES('New Task Name',NULL,'New description');
END;
/