ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

12 DBMS_ADVISOR

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


関連項目:

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

  • SQLチューニング・アドバイザおよびSQLアクセス・アドバイザについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

  • UNDOアドバイザについては、『Oracle Database 2日でデータベース管理者』および『Oracle Database管理者ガイド』を参照してください。


この章では、次の項目について説明します。


DBMS_ADVISORの使用方法

この項では、DBMS_ADVISORパッケージの使用に関連する項目について説明します。


セキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与することで制御できます。 このパッケージの先頭部分に、使用するアラート名を制限するためのカバー・パッケージを記述することもできます。 この場合は、パッケージではなく、このカバー・パッケージのEXECUTE権限を付与できます。 さらに、DBMS_ADVISORプロシージャに必要なADVISOR権限もあります。


DBMS_ADVISORサブプログラムの要約

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

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

ADD_SQLWKLD_REFプロシージャ


SQLアクセス・アドバイザ・タスクにワークロード参照を追加します。

SQLアクセス・アドバイザのみ

ADD_SQLWKLD_STATEMENTプロシージャ


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

SQLアクセス・アドバイザのみ

CANCEL_TASKプロシージャ


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

すべてのアドバイザ

CREATE_FILEプロシージャ


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

すべてのアドバイザ

CREATE_OBJECTプロシージャ


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

すべてのアドバイザ

CREATE_SQLWKLDプロシージャ


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

SQLアクセス・アドバイザのみ

CREATE_TASKプロシージャ


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

すべてのアドバイザ

DELETE_SQLWKLDプロシージャ


ワークロード・オブジェクト全体を削除します。

SQLアクセス・アドバイザのみ

DELETE_SQLWKLD_REFプロシージャ


ワークロード・オブジェクト全体を削除します。

SQLアクセス・アドバイザのみ

DELETE_SQLWKLD_STATEMENTプロシージャ


ワークロードから1つ以上の文を削除します。

SQLアクセス・アドバイザのみ

DELETE_TASKプロシージャ


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

すべてのアドバイザ

EXECUTE_TASKプロシージャ


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

すべてのアドバイザ

GET_REC_ATTRIBUTESプロシージャ


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

すべてのアドバイザ

GET_TASK_REPORTファンクション


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

すべてのアドバイザ

GET_TASK_SCRIPTファンクション


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

すべてのアドバイザ

IMPLEMENT_TASKプロシージャ


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

すべてのアドバイザ

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プロシージャ


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

すべてのアドバイザ

MARK_RECOMMENDATIONプロシージャ


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

すべてのアドバイザ

QUICK_TUNEプロシージャ


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

すべてのアドバイザ

RESET_TASKプロシージャ


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

すべてのアドバイザ

SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ


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

SQLアクセス・アドバイザのみ

SET_DEFAULT_TASK_PARAMETERプロシージャ


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

すべてのアドバイザ

SET_SQLWKLD_PARAMETERプロシージャ


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

SQLアクセス・アドバイザのみ

SET_TASK_PARAMETERプロシージャ


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

すべてのアドバイザ

TUNE_MVIEWプロシージャ


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

SQLアクセス・アドバイザのみ

UPDATE_OBJECTプロシージャ


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

すべてのアドバイザ

UPDATE_REC_ATTRIBUTESプロシージャ


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

すべてのアドバイザ

UPDATE_SQLWKLD_ATTRIBUTESプロシージャ


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

SQLアクセス・アドバイザのみ

UPDATE_SQLWKLD_STATEMENTプロシージャ


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

SQLアクセス・アドバイザのみ

UPDATE_TASK_ATTRIBUTESプロシージャ


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

すべてのアドバイザ



ADD_SQLWKLD_REFプロシージャ

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

構文

DBMS_ADVISOR.ADD_SQLWKLD_REF (
   task_name              IN VARCHAR2,
   workload_name          IN VARCHAR2);

パラメータ

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

パラメータ 説明

task_name

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

workload_name

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


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.CREATE_SQLWKLD(workload_name, 'My Workload');
  DBMS_ADVISOR.ADD_SQLWKLD_REF(task_name, workload_name);
END;
/

ADD_SQLWKLD_STATEMENTプロシージャ

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

構文

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);

パラメータ

表12-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はOracle識別子であるため、username値はサーバーに保存されているとおりに正確に入力する必要があります。 たとえば、ユーザーSCOTTが実行中のユーザーである場合、ユーザー識別子SCOTTはすべて大文字で指定する必要があります。 ユーザーscottSCOTTと同じものとして認識されません。

sql_text

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


使用上の注意

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

ADD_SQLWKLD_STATEMENTプロシージャは、コール元によって無視される可能性があるパラメータを複数受け入れます。実際の分析時には、cpu_timeelapsed_timedisk_readsbuffer_getsおよびoptimizer_costのみがワークロード・データのソートに使用されます。このため、実際の値は、タスク・パラメータorder_listによって特定の統計が参照される場合にのみ必要となります。新しいSQL文をワークロードに追加する場合に提供される統計を判別するには、タスク・パラメータorder_listを調べるか、または設定します。 order_listパラメータは、buffer_getsoptimizer_costcpu_timedisk_readselapsed_timeexecutionsおよびpriorityキーの任意の組合せを受け入れます。 priorityoptimizer_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;
/

CANCEL_TASKプロシージャ

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

構文

DBMS_ADVISOR.CANCEL_TASK (
   task_name      IN  VARCHAR2);

パラメータ

表12-4 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;
/

CREATE_FILEプロシージャ

このプロシージャは、PL/SQL CLOB変数から外部ファイルを作成し、スクリプトやレポートの作成に使用できます。 CREATE_FILECLOB入力パラメータを受け入れ、指定されたファイルに文字列の内容を書き込みます。

構文

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

パラメータ

表12-5 CREATE_FILEプロシージャのパラメータ

パラメータ 説明

buffer

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

location

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

filename

スクリプト・コマンドを受け取る出力ファイルを指定します。 ファイル名には、形式filename.filetypeの名前とオプションのファイル・タイプのみを含めることができます。


使用上の注意

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

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

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

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.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);
  DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT(task_name),
    'MY_DIR','script.sql');

END;
/

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,
   object_id         OUT NUMBER);

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);

パラメータ

表12-6 CREATE_OBJECTプロシージャのパラメータ

パラメータ 説明

task_name

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

object_type

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

attr1

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

attr2

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

attr3

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

attr4

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

attr5

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

object_id

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


属性パラメータは、オブジェクト・タイプによって値が異なります。 これらのパラメータおよびオブジェクト・タイプの詳細は、『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 SH.SALES',obj_id);
END;
/

CREATE_SQLWKLDプロシージャ

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

構文

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

パラメータ

表12-7 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;
/

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);

パラメータ

表12-8 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つの組込みのタスク・テンプレートを提供します。

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;
/

DELETE_SQLWKLDプロシージャ

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

構文

DBMS_ADVISOR.DELETE_SQLWKLD (
   workload_name        IN VARCHAR2);

パラメータ

表12-9 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;
/

DELETE_SQLWKLD_REFプロシージャ

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

構文

DBMS_ADVISOR.DELETE_SQLWKLD_REF (
   task_name              IN VARCHAR2,
   workload_name          IN NUMBER);

パラメータ

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

パラメータ 説明

task_name

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

workload_name

リンクを解除するワークロード・オブジェクトの名前。 workload_nameとして、ワイルドカード%がサポートされます。 使用規則はLIKE演算子と同一です。 たとえば、ワークロード・オブジェクトへのすべてのリンクを削除するには、workload_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.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.DELETE_SQLWKLD_REF(task_name, workload_name);
END;
/

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);

パラメータ

表12-11 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;
/

DELETE_TASKプロシージャ

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

構文

DBMS_ADVISOR.DELETE_TASK (
   task_name          IN VARCHAR2);

パラメータ

表12-12 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;
/

EXECUTE_TASKプロシージャ

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

構文

DBMS_ADVISOR.EXECUTE_TASK (
   task_name          IN VARCHAR2);

パラメータ

表12-13 EXECUTE_TASKプロシージャのパラメータ

パラメータ 説明

task_name

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


使用上の注意

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

コントロールが返されると、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.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);
END;
/

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);

パラメータ

表12-14 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;
/

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)
RETURN CLOB;

パラメータ

表12-15 GET_TASK_REPORTファンクションのパラメータ

パラメータ 説明

task_name

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

type

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

level

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

section

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

owner_name

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


戻り値

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


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)
RETURN CLOB;

パラメータ

表12-16 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

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


戻り値

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;
/

IMPLEMENT_TASKプロシージャ

指定したタスクのリコメンデーションを実装します。

構文

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

パラメータ

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

パラメータ 説明

task_name

タスクの名前。

rec_id

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

exit_on_error

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



IMPORT_SQLWKLD_SCHEMAプロシージャ

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

構文

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);

パラメータ

表12-18 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;
/

IMPORT_SQLWKLD_SQLCACHEプロシージャ

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

構文

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);

パラメータ

表12-19 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;
/

IMPORT_SQLWKLD_STSプロシージャ

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

構文

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);

パラメータ

表12-20 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;
/

IMPORT_SQLWKLD_SUMADVプロシージャ

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

構文

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);

パラメータ

表12-21 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;
/

IMPORT_SQLWKLD_USERプロシージャ

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

構文

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);

パラメータ

表12-22 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;
/

INTERRUPT_TASKプロシージャ

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

構文

DBMS_ADVISOR.INTERRUPT_TASK (
   task_name          IN VARCHAR2);

パラメータ

表12-23 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;
/

MARK_RECOMMENDATIONプロシージャ

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

構文

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

パラメータ

表12-24 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;
/

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,
   task_or_template       IN VARCHAR2 := NULL);

パラメータ

表12-25 QUICK_TUNEプロシージャのパラメータ

パラメータ 説明

advisor_name

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

task_name

タスクの名前。

attr1

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

attr2

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

attr3

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

task_or_template

既存のタスクまたはタスク・テンプレートの、オプションのタスク名。


使用上の注意

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

タスクは指定した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;
/

RESET_SQLWKLDプロシージャ

このプロシージャは、ワークロードを初期開始ポイントにリセットします。 これにより、すべてのジャーナル・メッセージ、ログ・メッセージが削除され、必要な変動および利用統計情報が再計算されます。

構文

DBMS_ADVISOR.RESET_SQLWKLD (
   workload_name        IN VARCHAR2);

パラメータ

表12-26 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;
/

RESET_TASKプロシージャ

このプロシージャは、タスクを初期状態にリセットします。 タスクから、すべての中間データおよびリコメンデーション・データが削除されます。 タスクの状態はINITIALに設定されます。

構文

DBMS_ADVISOR.RESET_TASK (
   task_name          IN VARCHAR2);

パラメータ

表12-27 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.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.RESET_TASK(task_name);
END;
/

SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ

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

構文

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

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

パラメータ

表12-28 SET_DEFAULT_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ 説明

parameter

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

value

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


使用上の注意

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

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

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);

パラメータ

表12-29 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;
/

SET_SQLWKLD_PARAMETERプロシージャ

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

構文

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);

パラメータ

表12-30 SET_SQLWKLD_PARAMETERプロシージャのパラメータ

パラメータ 説明

workload_name

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

parameter

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

value

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


使用上の注意

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

SQLワークロード・オブジェクトのパラメータ

表12-31に、SQLアクセス・アドバイザのオブジェクト・パラメータを示します。

表12-31 SQLワークロード・オブジェクトのパラメータ

名前 データ型 説明

ACTION_LIST

STRINGLIST

かわりに、VALID_ACTION_LISTを使用します。

ワークロードに保存できるアクションの完全修飾リストを格納します。

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

ワークロードのインポート処理時に、SQL文のアクションがアクション・リストの名前と一致しない場合、ワークロード・オブジェクトに格納されません。 アクション名は大/小文字が区別されます。

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

COMMENTED_FILTER_LIST

NUMBER

かわりに、INVALID_SQLSTRING_LISTを使用します。

カンマで区切られた文字列のリスト。 この値を設定すると、SQLアクセス・アドバイザは、テキストの先頭20文字に指定されたいずれかの文字列を含むSQL文を除外します。

DAYS_TO_EXPIRE

NUMBER

現行のSQLワークロード・オブジェクトの有効期限を日単位で指定します。 この値は最終更新日付に関連します。

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

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

  • 0から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値は30です。

END_TIME

STRING

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

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

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

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

  • MIは分です。

  • SSは秒です。

INVALID_ACTION_LIST

STRINGLIST

ワークロードに保存できないアクションの完全修飾リストを格納します。

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

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

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_MODULE_LIST

STRINGLIST

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

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

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

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

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

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_SQLSTRING_LIST


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

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

ワークロード・コレクションの実行中に、SQL文にSQL文字列リストの文字列が含まれている場合、そのSQL文は実行中の操作では処理されません。

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

  • 単一の文字列

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_TABLE_LIST

TABLELIST

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

SQL文の処理時に、参照先の表が有効な表のリストのエントリに一致しない場合、受け入れられません。

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

  • schema.table

  • schema

  • schema.%schemaと同じ)

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

  • 単一の表参照

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

SQLアクセス・アドバイザは、INVALID_TABLE_LISTパラメータの内容に関係なく、チューニング不可能な表の内部リストを保持しています。 SYSSYSTEM、またはその他のすべての事前定義Oracleスキーマによって所有されている表はチューニングできません。

INVALID_USERNAME_LIST

STRINGLIST

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

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

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

JOURNALING

NUMBER

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

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

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

  • 1: 致命的なエラー・メッセージ

  • 2: 単純なエラー・メッセージ

  • 3: 致命的でない警告メッセージ

  • 4から9: 通知メッセージ(4がデフォルト)

MODULE_LIST

STRINGLIST

かわりに、VALID_MODULE_LISTを使用します。

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

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

ワークロードのインポート処理時に、SQL文のアプリケーション・モジュールがモジュール・リストの名前と一致しない場合、ワークロード・オブジェクトに格納されません。

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

  • 単一のモジュール

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

ORDER_LIST

STRING

インポート処理時に、SQLアクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。

設定可能な値は、BUFFER_GETSOPTIMIZER_COSTCPU_TIMEDISK_READSELAPSED_TIMEEXECUTIONSおよびPRIORITYです。

REPORT_DATE_FORMAT


このパラメータは使用できません。

SQL_LIMIT

NUMBER

ワークロード・インポート処理時に保存されるSQL文の最大数を指定します。 他のすべてのフィルタが適用された後に、SQL_LIMITフィルタが適用されます。 たとえば、表foo.barを参照する文のみを受け入れる場合、これらの文にはSQL_LIMIT値のみが適用されます。

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

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

  • 1から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

START_TIME

STRING

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

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

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

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

  • MIは分です。

  • SSは秒です。

USERNAME_LIST

STRINGLIST

かわりに、VALID_USERNAME_LISTを使用します。

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

ワークロードのインポート処理時に、SQL文のユーザー名がユーザー名リストの名前と一致しない場合、ワークロード・オブジェクトに格納されません。 ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_ACTION_LIST

STRINGLIST

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

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

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

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_MODULE_LIST

STRINGLIST

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

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

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

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

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

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_SQLSTRING_LIST

STRINGLIST

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

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

ワークロード・コレクションの実行中に、SQL文にSQL文字列リストの文字列が含まれていない場合、そのSQL文は実行中の操作では処理されません。

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

  • 単一の文字列

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_TABLE_LIST

TABLELIST

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

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

IMPORT_SQLWKLD_SCHEMAプロシージャを使用する場合、valid_table_listパラメータには、SCO%SCOTT.EMP%などのワイルドカードを含めることができません。 サポートされるワイルドカードの形式は、特定のスキーマのすべての表を指定するSCOTT.%のみです。

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

  • schema.table

  • schema

  • schema.%(schemaと同じ)

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

  • 単一の表参照

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_USERNAME_LIST

STRINGLIST

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

ワークロード・コレクションの実行中に、SQL文のユーザー名がユーザー名リストの名前と一致しない場合、そのSQL文は実行中の操作では処理されません。 ユーザー名は引用符で囲まない場合、大/小文字が区別されません。

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。


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;
/

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);

パラメータ

表12-32 SET_TASK_PARAMETERプロシージャのパラメータ

パラメータ 説明

task_name

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

parameter

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

value

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


使用上の注意

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

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

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

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

パラメータ データ型 説明

ACTION_LIST

STRINGLIST

かわりに、VALID_ACTION_LISTを使用します。

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

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

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

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

COMMENTED_FILTER_LIST

NUMBER

かわりに、INVALID_SQLSTRING_LISTを使用します。

カンマで区切られた文字列のリスト。 この値を設定すると、SQLアクセス・アドバイザは、テキストの先頭20文字に指定されたいずれかの文字列を含むSQL文を除外します。

CREATION_COST

STRING

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

DAYS_TO_EXPIRE

NUMBER

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

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

  • 0から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値は30です。

DEF_INDEX_OWNER

STRING

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

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

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

  • ADVISOR_UNUSED。

デフォルト値はADVISOR_UNUSEDです。

DEF_INDEX_TABLESPACE

STRING

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

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

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

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

デフォルト値はADVISOR_UNUSEDです。

DEF_MVIEW_OWNER

STRING

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

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

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

  • ADVISOR_UNUSED。

デフォルト値はADVISOR_UNUSEDです。

DEF_MVIEW_TABLESPACE

STRING

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

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

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

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

デフォルト値はADVISOR_UNUSEDです。

DEF_MVLOG_TABLSPACE

STRING

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

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

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

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

デフォルト値はADVISOR_UNUSEDです。

DML_VOLATILITY

STRING

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

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

END_TIME

STRING

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

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

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

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

  • MIは分です。

  • SSは秒です。

EVALUATION_ONLY

STRING

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

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

  • FALSE

  • TRUE

デフォルト値はFALSEです。

EXECUTION_TYPE

STRINGLIST

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

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

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

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

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

デフォルト値はFULLです。

IMPLEMENT_EXIT_ON_ERROR

STRING

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

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

  • TRUE

  • FALSE

デフォルト値はTRUEです。

INDEX_NAME_TEMPLATE

STRING

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

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

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

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

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

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

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

デフォルトのテンプレートは、<TABLE>_IDX$$_<TASK_ID><SEQ>です。

INVALID_ACTION_LIST

STRINGLIST

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

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

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

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_MODULE_LIST

STRINGLIST

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

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

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

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

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

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_SQLSTRING_LIST

STRINGLIST

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

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

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

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

  • 単一の文字列

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

INVALID_USERNAME_LIST

STRINGLIST

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

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

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

JOURNALING

NUMBER

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

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

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

  • 1: 致命的なエラー・メッセージ

  • 2: 単純なエラー・メッセージ

  • 3: 致命的でない警告メッセージ

  • 4から9: 通知メッセージ(4がデフォルト)

MODE

STRING

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

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

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

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

デフォルト値はCOMPREHENSIVEです。

MODULE_LIST

STRINGLIST

かわりに、VALID_MODULE_LISTを使用します。

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

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

ワークロードのインポート処理時に、SQL文のアプリケーション・モジュールがモジュール・リストの名前と一致しない場合、ワークロード・オブジェクトに格納されません。

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

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

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

MVIEW_NAME_TEMPLATE

STRING

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

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

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

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

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

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

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

デフォルトのテンプレートは、MV$$_<TASK_ID><SEQ>です。

ORDER_LIST

STRINGLIST

分析処理時に、SQLアクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。 絶対自然順序を決定するため、SQLアクセス・アドバイザは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です。

RECOMMEND_MV_EXACT_TEXT_MATCH

STRING

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

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

  • TRUE

  • FALSE

デフォルト値はTRUEです。

REFRESH_MODE

STRING

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

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

  • ON_DEMAND

  • ON_COMMIT

デフォルト値はON_DEMANDです。

REPORT_DATE_FORMAT

STRING

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

SHOW_RETAINS

STRING

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

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

  • TRUE

  • FALSE

デフォルト値はTRUEです。

SQL_LIMIT

NUMBER

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

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

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

  • 1から2147483647の範囲の整数

  • ADVISOR_UNLIMITED

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

START_TIME

STRING

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

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

  • DDは数値の日付です。

  • MMは数値の月です。

  • YYYYは数値の年です。

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

  • MIは分です。

  • SSは秒です。

STORAGE_CHANGE

NUMBER

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

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

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

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

デフォルト値はADVISOR_UNLIMITEDです。

USERNAME_LIST

STRINGLIST

かわりに、VALID_USERNAME_LISTを使用します。

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

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

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_ACTION_LIST

STRINGLIST

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

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

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

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

  • 単一のアクション

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_MODULE_LIST

STRINGLIST

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

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

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

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

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

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_SQLSTRING_LIST

STRINGLIST

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

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

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

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

  • 単一の文字列

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_TABLE_LIST

TABLELIST

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

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

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

  • schema.table

  • schema

  • schema.%schemaと同じ)

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

  • ADVISOR_UNUSED

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

  • 単一の表参照

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

VALID_USERNAME_LIST

STRINGLIST

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

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

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

  • 単一のユーザー名

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

  • ADVISOR_UNUSED

デフォルト値はADVISOR_UNUSEDです。

WORKLOAD_SCOPE

STRING

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

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

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


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

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

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

パラメータ デフォルト値 設定可能な値 説明

MODE

COMPREHENSIVE

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

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

分析に使用するデータ。

TIME_LIST

UNLIMITED

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アドバイザのタスク・パラメータ

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

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

パラメータ デフォルト値 設定可能な値 説明

TARGET_OBJECTS

なし

UNDO_TBS

ターゲット・オブジェクトは、システムのUNDO表領域です。

START_SNAPSHOT

なし

AWRリポジトリの有効なスナップショット数

AWRリポジトリのスナップショット数を使用してシステムが分析の実行を開始する時間。

END_SNAPSHOT

なし

AWRリポジトリの有効なスナップショット数

AWRリポジトリのスナップショット数を使用してシステムが分析の実行を終了する時間。

BEGIN_TIME_SEC

なし

正の整数

開始時間から現在までの秒数。 システムが分析を実行する時間を示します。 BEGIN_TIME_SECは、END_TIME_SECより大きい必要があります。

END_TIME_SEC

なし

正の整数

終了時間から現在までの秒数。 BEGIN_TIME_SECは、END_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.EXECUTE_TASK(tname);
   END;
/

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

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

表12-36 ADDMのタスク・パラメータ

パラメータ デフォルト 設定可能な値 説明

START_SNAPSHOT

なし

AWRリポジトリの有効なスナップショット数

AWRリポジトリのスナップショット数を使用してシステムが分析の実行を開始する時間。

END_SNAPSHOT

なし

AWRリポジトリの有効なスナップショット数

AWRリポジトリのスナップショット数を使用してシステムが分析の実行を終了する時間。

DB_ID

現行のデータベースID

なし

START_SNAPSHOTおよびEND_SNAPSHOTのデータベース。

INSTANCE

現行のインスタンスID

なし

START_SNAPSHOTおよびEND_SNAPSHOTのインスタンス。

DBIO_EXPECTED

10ミリ秒

システムによって異なる

データベース・ブロックの読込み平均時間(ミリ秒単位)。


DECLARE
   tid     NUMBER;
BEGIN
   DBMS_ADVISOR.CREATE_TASK('ADDM', tid, 'ADDM_TEST', 'my test');
   DBMS_ADVISOR.SET_TASK_PARAMETER('ADDM_TEST', 'START_SNAPSHOT', '19',
                                             -  'END_SNAPSHOT',   '26',
                                             -  'DB_ID', '155789304',
                                             -  'INSTANCE', '1');
   DBMS_ADVISOR.EXECUTE_TASK('ADDM_TEST');
END;
/

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

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


TUNE_MVIEWプロシージャ

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

構文

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

パラメータ

表12-37 TUNE_MVIEWプロシージャのパラメータ

パラメータ 説明

task_name

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

mv_create_stmt

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



関連項目:

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

使用上の注意

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

USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー

これらのビューは、TUNE_MVIEWプロシージャの実行後に結果を取得します。

表12-38 USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー

列名 列の説明

OWNER

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

TASK_NAME

キーとして一連のリコメンデーションにアクセスするタスク名。

SCRIPT_TYPE

IMPLEMENTATIONまたはUNDOスクリプトの行を示すために使用するリコメンデーションID。

ACTION_ID

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

STATEMENT

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

  • CREATE MATERIALIZED VIEW LOG

  • ALTER MATERIALIZED VIEW LOG FORCE

  • [CREATE | DROP] MATERIALIZED VIEW


name VARCHAR2(30);
DBMS_ADVISOR.TUNE_MVIEW.(name, 'SELECT AVG(C1) FROM my_fact_table WHERE c10 = 7');

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

NAME VARCHAR2(30) := 'my_tune_mview_task';
EXECUTE DBMS_ADVISOR.TUNE_MVIEW (name, 'CREATE MATERIALIZED VIEW MY_MV
REFRESH FAST AS SELECT C2, AVG(C1) FROM MY_FACT_TABLE WHERE C10 = 7
GROUP BY C2');

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

SELECT * FROM USER_TUNE_MVIEW WHERE TASK_NAME='my_tune_mview_task' AND
SCRIPT_TYPE='CREATE';

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

CREATE DIRECTORY TUNE_RESULTS AS  ''/myscript_dir'' ;
GRANT READ, WRITE ON DIRECTORY TUNE_RESULTS TO PUBLIC;
EXECUTE DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT('my_tune_mview_task'), -
'/homes/tune','my_tune_mview_create.sql');

前述の文によって、CREATE出力結果が/myscript_dir/my_tune_mview_create.sqlに保存されます。


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);

パラメータ

表12-39 UPDATE_OBJECTプロシージャのパラメータ

パラメータ 説明

task_name

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

object_id

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

attr1

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

attr2

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

attr3

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

attr4

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

attr5

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


属性パラメータは、オブジェクト・タイプによって値が異なります。 これらのパラメータおよびオブジェクト・タイプの詳細は、『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 SH.SALES',obj_id);
  DBMS_ADVISOR.UPDATE_OBJECT (task_name, obj_id,NULL,NULL,NULL,
                              'SELECT count(*) FROM SH.SALES');
END;
/

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);

パラメータ

表12-40 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;
/

UPDATE_SQLWKLD_ATTRIBUTESプロシージャ

このプロシージャは、SQLワークロード・オブジェクトまたはテンプレートの様々な属性を変更します。

構文

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);

パラメータ

表12-41 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;
/

UPDATE_SQLWKLD_STATEMENTプロシージャ

このプロシージャは、指定したSQLワークロード内の既存のSQL文を更新します。

構文

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);

パラメータ

表12-42 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が格納されている場合、リポジトリ内の列は更新されません。

usernameは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;
/

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);

パラメータ

表12-43 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;
/