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
サブプログラムをサポートしていません。
この章のトピックは、次のとおりです:
参照:
-
セグメント・アドバイザについて学習するには、『Oracle Database管理者ガイド』を参照してください。
-
Enterprise ManagerでSQLアクセス・アドバイザを使用する方法の説明は、『Oracle Databaseパフォーマンス・チューニング・スタート・ガイド』を参照してください。
-
SQLアクセス・アドバイザについてさらに学習するには、『Oracle Database SQLチューニング・ガイド』を参照してください。
17.1 DBMS_ADVISORの推奨されないサブプログラム
この項では、Oracle Database 11gで推奨されないプログラムについて説明しています。
ノート:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
次のサブプログラムは推奨されていません。
17.3 DBMS_ADVISORサブプログラムの要約
このトピックでは、DBMS_ADVISORパッケージのサブプログラムとその説明を示します。
次の表では、「使用されているプログラム」
列は各サブプログラムに関連するアドバイザのリストですが、ADDM、SQLパフォーマンス・アナライザ、SQL修復アドバイザおよびSQLチューニング・アドバイザには独自のパッケージが含まれるため、これらのアドバイザは除外されています。
表17-1 DBMS_ADVISORパッケージのサブプログラム
サブプログラム | 説明 | 使用されているプログラム |
---|---|---|
アドバイザ・タスクにワークロード参照を追加します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
単一の文をワークロードに追加します。 |
SQLアクセス・アドバイザ |
|
現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。 |
SQLアクセス・アドバイザ |
|
現在実行中のタスク操作を取り消します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。 |
SQLアクセス・アドバイザ |
|
PL/SQL CLOB変数から外部ファイルを作成します。スクリプトやレポートの作成に役立ちます。 |
SQLアクセス・アドバイザ |
|
新しいタスク・オブジェクトを作成します。 |
セグメント・アドバイザ |
|
新しいワークロード・オブジェクトを作成します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
リポジトリ内に新しいアドバイザ・タスクを作成します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
ワークロードから1つ以上の文を削除します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット・オブジェクト間のリンクを削除します。 |
SQLアクセス・アドバイザ |
|
リポジトリから指定したタスクを削除します。 |
SQLアクセス・アドバイザ |
|
指定したタスクを実行します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
タスクから特定のリコメンデーション属性を取り出します。 |
SQLアクセス・アドバイザ |
|
指定したタスクのレポートを作成して戻します。 |
||
バッファ内にアドバイザ・タスクのリコメンデーションの実行可能なSQLスクリプトを作成して、戻します。 |
SQLアクセス・アドバイザ |
|
タスクに対してリコメンデーションを実装します。 |
SQLアクセス・アドバイザ |
|
データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
データをSQLチューニング・セットからSQLワークロード・データ・オブジェクトにインポートします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
データを現行のSQLキャッシュからワークロードにインポートします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
現在実行中のタスクを停止し、通常の終了時と同じように操作を終了します。これによって、リコメンデーションが表示可能になります。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
特定のリコメンデーションに |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
単一のSQL文の分析を行います。 |
SQLアクセス・アドバイザ |
|
ワークロードを初期開始ポイントにリセットします。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
タスクを初期状態にリセットします。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
データをスキーマからワークロードにインポートします。 |
SQLアクセス・アドバイザ |
|
デフォルトのタスク・パラメータを変更します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
ワークロード・パラメータの値を設定します。 |
SQLアクセス・アドバイザ |
|
指定したタスク・パラメータ値を設定します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。 |
SQLアクセス・アドバイザ |
|
タスク・オブジェクトを更新します。 |
セグメント・アドバイザ |
|
指定したタスクの既存のリコメンデーションを更新します。 |
SQLアクセス・アドバイザ |
|
ワークロード・オブジェクトを更新します。 |
SQLアクセス・アドバイザ |
|
ワークロードの1つ以上のSQL文を更新します。 |
SQLアクセス・アドバイザ |
|
タスクの属性を更新します。 |
セグメント・アドバイザ、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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード名。 |
|
SQL文に関連付ける、オプションのビジネス・アプリケーション・モジュール。 |
|
SQL文に関連付ける、オプションのアプリケーション・アクション。 |
|
SQL文によって消費される秒単位での合計CPU時間。 |
|
SQL文によって消費される秒単位での合計経過時間。 |
|
SQL文によって消費される合計ディスク読取り処理時間。 |
|
SQL文によって消費される合計バッファ読取り処理時間。 |
|
SQL文によって処理される平均行数。 |
|
オプティマイザによって計算されたコスト値。 |
|
SQL文の合計実行数。この値は0(ゼロ)より大きい必要があります。 |
|
SQL文の相対優先度。値は、1 - |
|
SQL文が最後に実行する日付と時刻。値が |
|
文の統計情報が計算されてからの秒単位での時間。 |
|
SQL文を実行したデータベース・ユーザー。ユーザー名はOracle識別子であるため、 |
|
完全なSQL文。リコメンデーションの品質を向上させるため、SQL文にはバインド変数を含めないでください。 |
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定する手順については、「RESET_TASKプロシージャ」を参照してください。
ADD_SQLWKLD_STATEMENT
プロシージャは、コール元によって無視される可能性があるいくつかのパラメータを受け入れます。実際の分析時には、データベースはdisk_reads
、buffer_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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。 |
|
SQLチューニング・セットの所有者。このパラメータの値は |
|
リンクするワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。 ワークロードをタスクにリンクすると、読取り専用になり、削除できません。 ワークロードへのリンク数の制限はありません。 ワークロードへのリンクを削除するには、プロシージャ |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する有効なアドバイザ・タスク名。 |
使用上のノート
取消しコマンドは、取り消した操作の開始前の状態にタスクを復元します。そのため、取り消したタスクまたはデータ・オブジェクトは再開できません。
すべてのアドバイザ・タスクのプロシージャは同期操作であるため、操作を取り消すには、別のデータベース・セッションを使用する必要があります。
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コピーするSQLワークロード・オブジェクトの名前。 |
|
SQLワークロード・オブジェクトをコピーするSQLチューニング・セットの名前。 |
|
ターゲット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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
レポートまたはスクリプト情報を格納する |
|
出力ファイルが格納されるディレクトリの名前。
|
|
出力ファイルの名前。 ファイル名には、形式 |
使用上のノート
すべての書式設定を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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する有効なアドバイザ・タスク名。 |
|
外部オブジェクト・タイプを指定します。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザが割り当てたオブジェクト識別子。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成したワークロードを一意に識別する名前。指定しない場合は、システムによって一意の名前が生成されます。名前の長さは30文字までです。 |
|
オプションのワークロードの説明を指定します。説明の長さは256文字までです。 |
|
既存のワークロード・データ・オブジェクトまたはデータ・オブジェクト・テンプレートの、オプションのSQLワークロード名 |
|
新しく作成したワークロードをテンプレートとして設定できるオプションの値。有効な値は |
戻り値
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
作成したタスクを一意に識別する番号。番号はプロシージャによって作成され、ユーザーに戻されます。 |
|
新しいタスク名を指定します。名前は、すべてのタスクの中でユーザーに一意である必要があります。 前述の |
|
オプションのタスクの説明を指定します。説明の長さは256文字までです。 |
|
既存のタスクまたはタスク・テンプレートの、オプションのタスク名。組込みのSQLアクセス・アドバイザのテンプレートを指定するには、前述のようにテンプレート名を使用します。 |
|
ユーザーが新しく作成したタスクをテンプレートとして設定できるようにするオプションの値。有効な値は |
|
ソースが作成された方法を識別するオプションの値。 |
戻り値
パラメータが指定されていない場合は、一意のタスク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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数 |
|
無効になっています。 |
|
削除された操作の検索によって削除された文の数を戻します。 |
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。 |
|
SQLチューニング・セットの所有者。このパラメータの値は |
|
リンクを解除するワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。 ワークロード名として、ワイルドカード |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リポジトリから削除する単一のアドバイザ・タスク名。
ワイルドカードを指定すると、 |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
ファンクションによって実行されるアクションのタイプ。 たとえば、SQLパフォーマンス・アナライザは、次の値を受け入れます。
|
|
実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。 |
|
指定した実行のパラメータ(名前、値)のリスト。実行パラメータは実タスク・パラメータですが、指定されている実行に対してのみ影響します。 次の例を考えてみます。
|
|
実行について説明する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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。 |
|
特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。 |
|
変更する属性を指定します。 |
|
要求された属性値を受け取るバッファ。 |
|
ターゲット・タスクのオプションの所有者名。これによって、現行のユーザーが所有していないタスク・データへのアクセスを許可します。 |
戻り値
要求された属性値は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ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
スクリプトを作成するタスクの名前。 |
|
有効な値は、 |
|
設定可能な値は、 |
|
アドバイザ固有のレポート・セクション。 |
|
タスクの所有者。指定すると、現行のユーザーがタスクのデータに対する読取り権限を持つかどうかがチェックされます。 |
|
特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。 |
|
スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。 |
戻り値
スクリプトを受け取るバッファを戻します。
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ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
生成するスクリプトのタイプを指定します。設定可能な値は |
|
実装スクリプトのサブセットの取出しに使用できる、オプションのリコメンデーション識別子番号。 0または値 |
|
DDLコマンドとして単一のアクションの取出しに使用できる、オプションのアクション識別子番号。 0または値 |
|
オプションのタスク所有者名。 |
|
特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。 |
|
スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。 |
戻り値
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
タスクの名前。 |
|
オプションのリコメンデーションID。 |
|
最初のエラー時に終了するオプションのブール。 |
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。
デフォルト値は |
|
ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - |
|
構文または検証エラーのために保存されなかった行数を戻します。 |
|
リポジトリに実際に保存された行数を戻します。 |
戻り値
このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。
使用上のノート
仮定ワークロードを正しくインポートするには、ターゲット・スキーマにディメンションが格納されている必要があります。
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。
デフォルト値は |
|
ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - |
|
保存された行の数を出力パラメータとして戻します。 |
|
構文または検証エラーのために保存されなかった行数を戻します。 |
戻り値
このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
SQLチューニング・セットのオプションの所有者。 |
|
データのインポート元となる、既存のSQLチューニング・セット・ワークロードの名前。 |
|
ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。
デフォルト値は |
|
ワークロード・オブジェクトに保存する、各文のアプリケーション優先度を指定します。値は、1 - |
|
リポジトリに実際に保存された行数を戻します。 |
|
構文または検証エラーのために保存されなかった行数を戻します。 |
戻り値
このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。
デフォルト値は |
|
ワークロード・オブジェクトに保存する、各文のデフォルトのアプリケーション優先度を指定します。サマリー・アドバイザのワークロード文に0の優先度が含まれている場合は、デフォルトの優先度が適用されます。ワークロード文に有効な優先度が含まれる場合は、サマリー・アドバイザの優先度がSQLアクセス・アドバイザで相当する優先度に変換されます。値は次のいずれかになります。 1- |
|
サマリー・アドバイザ・ワークロード識別子番号を指定します。 |
|
リポジトリに実際に保存された行数を戻します。 |
|
構文または検証エラーのために保存されなかった行数を戻します。 |
戻り値
このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
ワークロードの格納時に実行するアクションを指定します。使用可能な値は次のとおりです。
デフォルト値は |
|
ワークロードを収集する表またはビューの所有者名を指定します。 |
|
ワークロード・データを収集する表またはビューの名前を指定します。 |
|
ワークロード・オブジェクトに実際に保存された行数を戻します。 |
|
構文または検証エラーのために保存されなかった行数を戻します。 |
戻り値
このコールでは、保存された行数と失敗した行数が出力パラメータとして戻されます。
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
中断する単一のアドバイザ・タスク名。 |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
タスクの名前。 |
|
アドバイザによって割り当てられたリコメンデーション識別子番号。 |
|
リコメンデーション・アクション設定。次の操作を指定できます。
|
使用上のノート
リコメンデーションを実装する場合は、受入れ済としてマークされている必要があります。デフォルトでは、すべてのリコメンデーションが受入れ済としてみなされ、生成されるすべてのスクリプトに表示されます。
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析を実行するアドバイザの名前。 |
|
タスクの名前。 |
|
|
|
|
|
|
|
初期設定のコピー元にする必要がある既存のタスクまたはテンプレートの名前。 |
|
タスクを実装するかどうかを指定するフラグ。 |
|
タスクの説明。 |
使用上のノート
ユーザーが指定する場合は、最終的なリコメンデーションをプロシージャによって実装できます。
タスクは指定した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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別する、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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、ワークロード・オブジェクト・タイプに一意ですが、すべてのワークロード・オブジェクト・タイプに一意である必要はありません。様々なオブジェクト・タイプで、様々な目的において同一のパラメータ名を使用できます。 |
|
指定したパラメータの値。値は文字列または数値で指定できます。値が |
使用上のノート
パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しい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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。 |
|
指定したタスク・パラメータの値。値は文字列または数値で指定できます。 |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。 |
|
変更するデータ・パラメータの名前。パラメータ名は大/小文字が区別されません。 |
|
指定したパラメータの値。値は文字列または数値で指定できます。値が |
使用上のノート
パラメータが影響を及ぼすのは、ワークロード・コレクションを変更する操作に限られます。そのため、新しい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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するアドバイザ・タスク名。 |
|
変更するタスク・パラメータの名前。パラメータ名は大/小文字が区別されません。パラメータ名は、タスク・タイプに一意ですが、すべてのタスク・タイプに一意である必要はありません。様々なタスク・タイプで、同一のパラメータ名を様々な目的に使用できます。 |
|
指定したタスク・パラメータの値。値は文字列または数値で指定できます。値が |
使用上のノート
タスクは、初期状態にある場合を除いて変更できません。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。このプロシージャの使用方法の詳細は、アドバイザ固有のマニュアルを参照してください。
SQLアクセス・アドバイザのタスク・パラメータ
表17-35に、SQLアクセス・アドバイザのタスク・パラメータを示します。
表17-35 SQLアクセス・アドバイザのタスク・パラメータ
パラメータ | 説明 |
---|---|
|
分析時に考慮するチューニング結果を指定するカンマ区切りリスト。 有効な値は、次のとおりです。
新しいキーワードを使用すると、次の組合せが有効となります。
デフォルト値は |
|
|
|
現行のSQLアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。タスクの期限が切れると、自動パージ操作による削除の候補となります。 現行のアクセス・アドバイザのタスクの有効期限を日単位で指定します。この値は最終更新日付に関連します。データ型は タスクの期限が切れると、自動パージ操作による削除の候補となります。 有効な値は、次のとおりです。
デフォルト値は30です。 |
|
Enterprise ManagerのSQLアクセス・アドバイザ・ウィザードによって初期値が読み取られるデフォルトのタスクまたはテンプレート名を格納します。 デフォルト値は |
|
新しい索引リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値が索引名の修飾に使用されます。 使用可能な値は次のとおりです。
デフォルト値は |
|
新しい索引リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。 使用可能な値は次のとおりです。
デフォルト値は |
|
新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの所有者を指定します。スクリプトの作成時に、この値がマテリアライズド・ビュー名の修飾に使用されます。 使用可能な値は次のとおりです。
デフォルト値は |
|
新しいマテリアライズド・ビュー・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。 有効な値は、次のとおりです。
デフォルト値は |
|
新しいマテリアライズド・ビュー・ログ・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。 使用可能な値は次のとおりです。
デフォルト値は |
|
新しいパーティション・リコメンデーションのデフォルトの表領域を指定します。スクリプトの作成時に、この値が表領域句の指定に使用されます。 使用可能な値は次のとおりです。
デフォルト値は |
|
関連パラメータ |
|
SQL文の選択の終了時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。 各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、
データ型は |
|
このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、
使用可能な値は次のとおりです。
デフォルト値は |
|
このパラメータは、下位互換性を維持する目的で保持されています。すべての値が変換され、 変換される値は、次のとおりです。
望ましいリコメンデーションの種類。有効な値は、次のとおりです。
デフォルト値は |
|
有効な値は、次のとおりです。
デフォルト値は |
|
新しい索引名を構成する方法を指定します。 テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。構成した名前の最大長は30文字です。 有効なキーワードは、次のとおりです。
デフォルトのテンプレートは、 |
|
SQLワークロード・オブジェクトを処理できないアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。 タスクの実行中にSQL文のアクションがアクション・リストの名前と一致する場合、そのアクションは実行中のタスクでは処理されません。アクション名は大/小文字が区別されます。 有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できないモジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。 タスクの実行中にSQL文のモジュールがモジュール・リストの名前と一致する場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。 有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できないテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた値をサポートしています。 SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。 タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれている場合、そのSQL文は実行中のタスクでは処理されません。 有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できないユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致する場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。 有効な値は、次のとおりです。
デフォルト値は |
|
ジャーナル( 使用可能な値は次のとおりです。
各ジャーナル値は、該当するレベル以下のレベルの記録されたすべてのメッセージを表します。たとえば、
デフォルト値は |
|
ユーザーは、調査するパーティション・スキームの数をパーティション・エキスパートが削減するように推奨できます。これによって、アドバイザのランタイムを短縮することができます。 使用可能な値は次のとおりです。
デフォルト値は |
|
アドバイザによって元表、索引またはマテリアライズド・ビューに対して推奨されるパーティションの数を制限します。 使用可能な値は次のとおりです。
デフォルト値は |
|
アクセス・アドバイザが分析時に実行するモードを指定します。 有効な値は、次のとおりです。
デフォルト値は |
|
新しいマテリアライズド・ビュー名を構成する方法を指定します。 テンプレートからTASK_IDを省略すると、同時実行の2つのSQLアクセス・アドバイザのタスクによって生成される名前が競合し、好ましくない影響を及ぼすことがあります。そのため、テンプレートにはTASK_IDを含めることをお薦めします。 形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。 有効なトークンは、次のとおりです。
デフォルトのテンプレートは、 |
|
このパラメータは現在非推奨になっています。 分析処理時に、アクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。絶対自然順序を決定するため、アクセス・アドバイザは 使用可能な値は次のとおりです。
すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。 デフォルト値は |
|
新しいパーティション名を構成する方法を指定します。形式はキーワード・トークンとリテラルの任意の組合せです。ただし、構成した名前の最大長は30文字です。 有効なトークンは、次のとおりです。
デフォルトのテンプレートは、 |
|
パーティション・リコメンデーションの作成に使用する方法を指定します。有効な値の1つに、 |
|
使用されるパーティションのタイプを指定します。有効な値は |
|
分析処理時に、SQLアクセス・アドバイザがワークロード要素を処理する主な自然順序を格納します。SQLアクセス・アドバイザは、絶対自然順序を決定するために、 使用可能な値は次のとおりです。
すべての値は降順でアクセスされ、値が大きいほど、優先度が高いものとみなされます。 デフォルト値は |
|
候補のマテリアライズド・ビューについて考慮する際は、このパラメータに 有効な値は、次のとおりです。
デフォルト値は |
|
SQLアクセス・アドバイザでパーティション・スキームに対する最適な表領域を推奨できます。これを設定しなかった場合、SQLアクセス・アドバイザではパーティション・メソッドのみの推奨が行われ、物理的な表領域についての推奨は行われません。 使用可能な値は次のとおりです。
データ型は |
|
マテリアライズド・ビューを 使用可能な値は次のとおりです。
デフォルト値は |
|
これはデフォルトの日付および時刻の書式テンプレートです。デフォルトの書式は |
|
実装スクリプトおよびSQLアクセス・アドバイザ・ウィザード内の 有効な値は、次のとおりです。
デフォルト値は |
|
分析するSQL文の数を指定します。他のすべてのフィルタが適用された後に、 パラメータ 有効な値は、次のとおりです。
デフォルト値は |
|
SQL文の選択の開始時刻を指定します。文が指定された時刻までに実行されなかった場合、処理されません。 各日付は、MM-DD-YYYY HH24:MI:SSの標準Oracle形式である必要があります。ここで、
データ型は |
|
SQLアクセス・アドバイザのリコメンデーションによって消費可能な領域調整の量を格納します。ワークロードの有効範囲が SQLアクセス・アドバイザが一連のリコメンデーションを生成した際に、結果の物理構造が配分された領域に収まる必要があります。領域の配分は、現在既存のアクセス構造によって使用されている領域に、 有効な値は、次のとおりです。
デフォルト値は |
|
SQLアクセス・アドバイザで分析処理の実行に使用される時間を分単位で指定します。指定したリコメンデーションの品質にSQLアクセス・アドバイザが達した場合、またはすべての入力データが分析された場合、残りの時間に関係なく処理は終了します。 有効な値は、次のとおりです。
デフォルト値は、720(12時間)です。データ型は
|
|
SQLワークロード・オブジェクトを処理できるアクションの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 アクションは任意の文字列です。アクションを引用符で囲まない場合、大文字に変更され、先頭と末尾のスペースが取り除かれます。アクション文字列の正確性については調査されません。 タスクの実行中にSQL文のアクションがアクション・リストの名前と一致しない場合、そのアクションはタスクで実行されません。アクション名は大/小文字が区別されます。 有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できるアプリケーション・モジュールの完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 モジュールは任意の文字列です。モジュールを引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。モジュール文字列の正確性については調査されません。 タスクの実行中に、SQL文のモジュールがモジュール・リストの名前と一致しない場合、そのモジュールは実行中のタスクでは処理されません。モジュール名は大/小文字が区別されます。 有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できるテキスト文字列の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 SQL文字列は任意の文字列です。文字列を引用符で囲まないと、大文字に変更され、先頭と末尾のスペースが取り除かれます。SQL文字列の正確性については調査されません。 タスクの実行中に、SQL文にSQL文字列リストの文字列が含まれない場合、そのSQL文は実行中のタスクでは処理されません。 有効な値は、次のとおりです。
デフォルト値は |
|
チューニング可能な表の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用された識別子をサポートしています。表にはワイルドカード仕様がサポートされています。デフォルト値はユーザーの範囲内のすべての表がチューニング可能です。サポートされるワイルドカード文字は SQL文の処理時に、有効な表のリストに少なくとも1つの参照される表が指定されていないと受け入れられません。リストを使用しない場合、SQL文のすべての表の参照が有効であるとみなされます。 表の参照の有効な構文は、次のとおりです。
有効な値は、次のとおりです。
デフォルト値は |
|
SQLワークロード・オブジェクトを処理できるユーザー名の完全修飾リストを格納します。このリストの要素はカンマ区切りで、引用符で囲まれた名前をサポートしています。 タスクの実行中にSQL文のユーザー名がユーザー名リストの名前と一致しない場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。 有効な値は、次のとおりです。
デフォルト値は |
|
ワークロードが表すアプリケーションの適用範囲のレベルを指定します。設定可能な値は
データ型は |
セグメント・アドバイザのパラメータ
表17-36に、セグメント・アドバイザでSET_TASK_PARAMETER
プロシージャを使用して設定できる入力タスク・パラメータを示します。
表17-36 セグメント・アドバイザのタスク・パラメータ
パラメータ | 説明 |
---|---|
|
分析に使用するデータ。デフォルト値は
|
|
アドバイザが実行する必要がある時間制限。秒単位で指定し、有効な値は |
|
すべてのセグメントに対するリコメンデーションを生成するかどうかを指定します。 デフォルト値は |
例
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アドバイザのタスク・パラメータ
パラメータ | 説明 |
---|---|
|
システムのUNDO表領域。デフォルト値はなく、有効な値は |
|
AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。 |
|
AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。 |
|
開始時間から現在までの秒数。システムが分析を実行する時間を示します。 |
|
終了時間から現在までの秒数。 |
例
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のタスク・パラメータ
パラメータ | 説明 |
---|---|
|
AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を開始する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。 |
|
AWRリポジトリのスナップショット番号を使用してシステムが分析の実行を終了する時間。デフォルト値はなく、有効な値はAWRリポジトリの有効なスナップショット番号です。 |
|
|
|
|
|
|
|
データベース・ブロックの平均読込み時間(マイクロ秒単位)。デフォルト値は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;
/
参照:
-
ADDMの使用方法についてさらに学習するには、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
-
ADDMタスクを作成して実行する方法の詳細は、DBMS_ADDMパッケージの説明を参照してください。
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
カタログ・ビューで結果を問い合せるためのタスク名。指定しない場合は、データベースによってタスク名が生成され、戻されます。 |
|
元のマテリアライズド・ビュー作成文。 |
使用上のノート
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ビュー
列名 | 列の説明 |
---|---|
|
マテリアライズド・ビューの所有者の名前。 |
|
タスクの名前。この名前は、一連のリコメンデーションにアクセスするキーとして使用できます。 |
|
行が |
|
コマンド順序番号として使用するアクションID。 |
|
|
例
次の例は、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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する有効なアドバイザ・タスク名。 |
|
アドバイザが割り当てたオブジェクト識別子。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
リコメンデーションに割り当てられる、アドバイザによって生成される識別子番号。 |
|
特定のコマンドに割り当てられる、アドバイザによって生成されたアクション識別子。 |
|
変更する属性の名前。有効な値は次のとおりです。
|
|
リコメンデーション属性の新しい値を指定します。 |
使用上のノート
タスクが正しく実行されないかぎり、リコメンデーション属性は変更できません。
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード・オブジェクト名。 |
|
新しいワークロード・オブジェクト名。値が |
|
新しいワークロードの説明。値が |
|
|
|
ワークロードをテンプレートとして使用する場合は |
|
ワークロードの作成を開始したソース・アプリケーション名を示します。値が |
例
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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。 |
|
文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数 |
|
検索された更新によって変更された文の数を戻します。 |
|
SQL文に関連付けるビジネス・アプリケーション名を指定します。値が |
|
文のアプリケーション・アクションを指定します。値が |
|
SQL文の相対優先度。値は、1 - 値が |
|
SQL文を実行したOracleユーザー名。値が ユーザー名はOracle識別子であるため、 |
|
無効になっています。 |
使用上のノート
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するアドバイザ・タスク名。 |
|
新しいアドバイザ・タスク名。値が |
|
新しいタスクの説明。値が |
|
タスクを読取り専用に設定します。設定可能な値は 値が |
|
タスクをテンプレートとしてマークします。物理的にタスクとテンプレートの違いはありませんが、テンプレートは実行できません。設定可能な値は |
|
タスクの作成を開始したソース・アプリケーション名を示します。値が |
例
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;
/