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
サブプログラムをサポートしていません。
関連項目:
|
この章では、次の項目について説明します。
推奨されないサブプログラム
セキュリティ・モデル
この項では、DBMS_ADVISOR
パッケージの使用に関連する項目について説明します。
表18-1に、このパッケージのサブプログラムの要約を示します。「使用されているプログラム」
列は各サブプログラムに関連するアドバイザのリストですが、ADDM、SQLパフォーマンス・アナライザ、SQL修復アドバイザおよびSQLチューニング・アドバイザには独自のパッケージが含まれるため、これらのアドバイザは除外されています。
表18-1 DBMS_ADVISORパッケージのサブプログラム
サブプログラム | 説明 | 使用されているプログラム |
---|---|---|
|
アドバイザ・タスクにワークロード参照を追加します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
単一の文をワークロードに追加します。 |
SQLアクセス・アドバイザ |
|
現行のSQLアクセス・アドバイザ・タスクとSQLチューニング・セット間のリンクを確立します。 |
SQLアクセス・アドバイザ |
|
現在実行中のタスク操作を取り消します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。 |
SQLアクセス・アドバイザ |
|
PL/SQL CLOB変数から外部ファイルを作成します。スクリプトやレポートの作成に役立ちます。 |
SQLアクセス・アドバイザ |
|
新しいタスク・オブジェクトを作成します。 |
セグメント・アドバイザ |
|
新しいワークロード・オブジェクトを作成します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
リポジトリ内に新しいアドバイザ・タスクを作成します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
|
ワークロード・オブジェクト全体を削除します。(注意: 推奨されないサブプログラム) |
SQLアクセス・アドバイザ |
DELETE_SQLWKLD_STATEMENTプロシージャ |
ワークロードから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アクセス・アドバイザ |
SET_DEFAULT_SQLWKLD_PARAMETERプロシージャ |
データをスキーマからワークロードにインポートします。 |
SQLアクセス・アドバイザ |
SET_DEFAULT_TASK_PARAMETERプロシージャ |
デフォルトのタスク・パラメータを変更します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
ワークロード・パラメータの値を設定します。 |
SQLアクセス・アドバイザ |
|
指定したタスク・パラメータ値を設定します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
|
マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。 |
SQLアクセス・アドバイザ |
|
タスク・オブジェクトを更新します。 |
セグメント・アドバイザ |
|
指定したタスクの既存のリコメンデーションを更新します。 |
SQLアクセス・アドバイザ |
UPDATE_SQLWKLD_ATTRIBUTESプロシージャ |
ワークロード・オブジェクトを更新します。 |
SQLアクセス・アドバイザ |
UPDATE_SQLWKLD_STATEMENTプロシージャ |
ワークロードの1つ以上のSQL文を更新します。 |
SQLアクセス・アドバイザ |
|
タスクの属性を更新します。 |
セグメント・アドバイザ、SQLアクセス・アドバイザ |
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、現行のSQLアクセス・アドバイザ・タスクとSQLワークロード・オブジェクト間のリンクを確立します。このリンクを使用して、アドバイザ・タスクが分析の実行に関心のあるデータにアクセスできます。さらに、このリンクからデータの安定したビューも得られます。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);
パラメータ
表18-2 ADD_SQLWKLD_REFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。 |
|
リンクするワークロード・オブジェクトの名前。オブジェクトをタスクにリンクすると、読取り専用になり、削除できません。ワークロード・オブジェクトへのリンク数の制限はありません。ワークロード・オブジェクトへのリンクを削除するには、プロシージャ |
|
ワークロード・ソースのタイプを示します。有効な値は、次のとおりです。
|
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、指定したワークロードに単一の文を追加します。
構文
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);
パラメータ
表18-3 ADD_SQLWKLD_STATEMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別するワークロード名。 |
|
SQL文に関連付ける、オプションのビジネス・アプリケーション・モジュール。 |
|
SQL文に関連付ける、オプションのアプリケーション・アクション。 |
|
SQL文によって消費される秒単位での合計CPU時間。 |
|
SQL文によって消費される秒単位での合計経過時間。 |
|
SQL文によって消費される合計ディスク読取り処理時間。 |
|
SQL文によって消費される合計バッファ読取り処理時間。 |
|
SQL文によって処理される平均行数。 |
|
オプティマイザの計算されたコスト値。 |
|
SQL文による実行数の合計。この値は0(ゼロ)より大きい必要があります。 |
|
SQL文の相対優先度。値は、1 - |
|
SQL文が最後に実行する日付と時刻。値が |
|
文の統計情報が計算されてからの秒単位での時間。 |
|
SQL文を実行したOracleユーザー名。usernameはOracle識別子であるため、username値はサーバーに保存されているとおりに正確に入力する必要があります。たとえば、ユーザー |
|
完全なSQL文。リコメンデーションの品質を向上させるため、SQL文にはバインド変数を含めないでください。 |
使用上の注意
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定する手順については、「RESET_TASKプロシージャ」を参照してください。
ADD_SQLWKLD_STATEMENT
プロシージャは、コール元によって無視される可能性があるパラメータを複数受け入れます。実際の分析時には、cpu_time
、elapsed_time
、disk_reads
、buffer_gets
およびoptimizer_cost
のみがワークロード・データのソートに使用されるため、実際の値は、order_list
タスク・パラメータによって特定の統計が参照される場合にのみ必要となります。新しいSQL文をワークロードに追加する場合に提供される統計を判別するには、タスク・パラメータorder_list
を調べるか、設定します。order_list
パラメータは、buffer_gets
、optimizer_cost
、cpu_time
、disk_reads
、elapsed_time
、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; /
このプロシージャは、現行の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);
パラメータ
表18-4 ADD_STS_REFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。 |
|
SQLチューニング・セットの所有者。このパラメータの値は |
|
リンクするワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。 ワークロードをタスクにリンクすると、読取り専用になり、削除できません。 ワークロードへのリンク数の制限はありません。 ワークロードへのリンクを削除するには、プロシージャ |
このプロシージャは、現在実行中の処理を終了します。このコールはソフト割込みを実行します。Ctrl-C
などのハード割込みのように、低レベル・データベース・アクセス・コールには割り込みません。SQLアクセス・アドバイザは定期的にソフト割込みをチェックし、それに応じて適切に動作します。結果として、この処理ではコールに応答するまで数秒かかることがあります。
このプロシージャは、SQLワークロード・オブジェクトの内容をSQLチューニング・セットにコピーします。
構文
コール元は、このプロシージャを使用する場合、SQLチューニング・セットを作成および変更する権限を持っている必要があります。
DBMS_ADVISOR.COPY_SQLWKLD_TO_STS ( workload_name IN VARCHAR2, sts_name IN VARCHAR2, import_mode IN VARCHAR2 := 'NEW');
パラメータ
表18-6 COPY_SQLWKLD_TO_STSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コピーするSQLワークロード・オブジェクトの名前。 |
|
SQLワークロード・オブジェクトをコピーするSQLチューニング・セットの名前。 |
|
ターゲットSQLチューニング・セットの処理を指定します。有効な値は、次のとおりです。
指定したSQLチューニング・セットが存在しない場合は、常に作成されます。 |
このプロシージャは、PL/SQL CLOB
変数から外部ファイルを作成し、スクリプトやレポートの作成に使用できます。CREATE_FILE
はCLOB
入力パラメータを受け入れ、指定されたファイルに文字列の内容を書き込みます。
使用上の注意
すべての書式設定を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; /
このプロシージャは、新しいタスク・オブジェクトを作成します。
構文
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);
パラメータ
表18-8 CREATE_OBJECTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する有効なアドバイザ・タスク名。 |
|
外部オブジェクト・タイプを指定します。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザが割り当てたオブジェクト識別子。 |
属性パラメータは、オブジェクト・タイプによって値が異なります。これらのパラメータおよびオブジェクト・タイプの詳細は、『Oracle Database管理者ガイド』を参照してください。
使用上の注意
タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。オブジェクト・レベルの場合、アドバイスはオブジェクトのすべてのパーティションに関して生成されます(オブジェクトがパーティション化されている場合)。アドバイスは依存オブジェクトに伝達されません。セグメント・レベルの場合、アドバイスは表のパーティションまたはサブパーティション、索引、LOB
列などの単一のセグメントに関して取得できます。表領域レベルの場合、表領域内のすべてのセグメントに対するターゲット・アドバイスが生成されます。
セグメント・アドバイザの詳細は、『Oracle Database管理者ガイド』を参照してください。
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、ユーザーの新しいプライベート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');
パラメータ
表18-9 CREATE_SQLWKLDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
作成したワークロードを一意に識別する名前。指定しない場合は、システムによって一意の名前が生成されます。名前の長さは30文字までです。 |
|
オプションのワークロードの説明を指定します。説明の長さは256文字までです。 |
|
既存のワークロード・データ・オブジェクトまたはデータ・オブジェクト・テンプレートの、オプションのSQLワークロード名 |
|
新しく作成したワークロードをテンプレートとして設定できるオプションの値。有効な値は |
このプロシージャは、リポジトリ内に新しいアドバイザ・タスクを作成します。
構文
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);
パラメータ
表18-10 CREATE_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
作成したタスクを一意に識別する番号。番号はプロシージャによって作成され、ユーザーに戻されます。 |
|
新しいタスク名を指定します。名前は、すべてのタスクの中でユーザーに一意である必要があります。 前述の |
|
オプションのタスクの説明を指定します。説明の長さは256文字までです。 |
|
既存のタスクまたはタスク・テンプレートの、オプションのタスク名。組込みのSQLアクセス・アドバイザのテンプレートを指定するには、前述のようにテンプレート名を使用します。 |
|
ユーザーが新しく作成したタスクをテンプレートとして設定できるようにするオプションの値。有効な値は |
|
ソースが作成された方法を識別するオプションの値。 |
使用上の注意
タスクはアドバイザに関連付ける必要があり、タスクを作成すると、元のアドバイザに永久に関連付けられます。デフォルトでは、組込みのデフォルト設定を使用してタスクが作成されます。既存のタスクのパラメータ設定またはタスク・テンプレートを使用してワークロードを作成するには、既存のタスク名を指定します。
SQLアクセス・アドバイザの場合、advisor_name
として識別子DBMS_ADVISOR.SQLACCESS_ADVISOR
を使用します。
SQLアクセス・アドバイザは、次の定数を使用して、3つの組込みのタスク・テンプレートを提供します。
DBMS_ADVISOR.SQLACCESS_OLTP
パラメータはOLTPアプリケーション環境向けにプリセットされます。
DBMS_ADVISOR.SQLACCESS_WAREHOUSE
パラメータはデータ・ウェアハウス・アプリケーション環境向けにプリセットされます。
DBMS_ADVISOR.SQLACCESS_GENERAL
パラメータは、OLTPとデータ・ウェアハウスの両方の操作が行われる可能性のあるハイブリッド・アプリケーション環境向けにプリセットされます。SQLアクセス・アドバイザの場合、これがデフォルトのテンプレートです。
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、リポジトリから既存のSQLワークロードを削除します。
使用上の注意
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、現行のSQLアクセス・アドバイザのタスクとSQLワークロード・データ・オブジェクト間のリンクを削除します。
ユーザーは、すべての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);
パラメータ
表18-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; /
このプロシージャは非推奨となっています。
このプロシージャは、ワークロードから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);
使用上の注意
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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; /
このプロシージャは、現行の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);
パラメータ
表18-14 DELETE_STS_REFプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するSQLアクセス・アドバイザのタスク名。 |
|
SQLチューニング・セットの所有者。このパラメータの値は |
|
リンクを解除するワークロードの名前。ワークロードは、1つ以上のSQL文と、各文を完全に説明する統計情報および属性で構成されます。ワークロードは、データベースにSQLチューニング・セットとして格納されます。 ワークロード名として、ワイルドカード |
このプロシージャは、アドバイザ分析、または指定したタスクの評価を行います。このプロシージャはオーバーロードされています。
実行に関連する引数はオプションです。タスクを複数回実行できないアドバイザに設定する必要はありません。
アドバイザでは、タスクを複数回実行し、得られた結果をそれ以降の処理および分析に使用することができます。
構文
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;
パラメータ
表18-16 EXECUTE_TASKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
ファンクションによって実行されるアクションのタイプ。 たとえば、SQLパフォーマンス・アナライザは、次の値を受け入れます。
|
|
実行を修飾して識別するための名前。指定されていない場合は、アドバイザによって生成され、ファンクションによって戻されます。 |
|
指定した実行のパラメータ(名前、値)のリスト。実行パラメータは実タスク・パラメータですが、指定されている実行に対してのみ影響します。 次に例を示します。 DBMS_ADVISOR.ARGLIST('time_limit', 12, 'username', 'foo') |
|
実行について説明する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; /
このプロシージャは、アドバイザ分析による推奨のとおりに、新しいオブジェクトの指定した属性を取得します。
構文
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);
パラメータ
表18-17 GET_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); DBMS_ADVISOR.GET_REC_ATTRIBUTES(task_name, 1, 1, 'NAME', attribute); END; /
このファンクションは、指定したタスクのレポートを作成して戻します。
構文
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;
パラメータ
表18-18 GET_TASK_REPORTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
スクリプトを作成するタスクの名前。 |
|
有効な値は、 |
|
設定可能な値は、 |
|
アドバイザ固有のレポート・セクション。 |
|
タスクの所有者。指定すると、現行のユーザーがタスクのデータに対する読取り権限を持つかどうかがチェックされます。 |
|
特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。 |
|
スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。 |
このファンクションは、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;
パラメータ
表18-19 GET_TASK_SCRIPTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別するタスク名。 |
|
生成するスクリプトのタイプを指定します。設定可能な値は |
|
実装スクリプトのサブセットの取出しに使用できる、オプションのリコメンデーション識別子番号。 0または値 |
|
DDLコマンドとして単一のアクションの取出しに使用できる、オプションのアクション識別子番号。 0または値 |
|
オプションのタスク所有者名。 |
|
特定のタスクの実行の識別子。これは、タスクを複数回実行できるアドバイザでのみ必要です。 |
|
スクリプトのターゲットになることが可能なアドバイザ・オブジェクトの識別子。 |
使用上の注意
スクリプトは実行する準備ができていますが、新しいマテリアライズド・ビューおよび索引の受入れ可能な場所についてスクリプトを確認することをお薦めします。
生成されたスクリプトに含まれるリコメンデーションは、受入れ済としてマークする必要があります。
例
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; /
このプロシージャは、指定したタスクのリコメンデーションを実装します。
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、スキーマに基づいた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);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、サーバーの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);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、既存の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);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、サマリー・アドバイザ・ワークロードから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);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、指定したユーザー表から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);
パラメータ
表18-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; /
このプロシージャは、現在実行中のタスクを停止します。タスクは、正常終了時と同じように処理を停止します。ユーザーは、この時点までに存在するすべてのリコメンデーションにアクセスできます。
例
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; /
このプロシージャは、インポートまたは実装用にリコメンデーションをマークします。
パラメータ
表18-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; /
このプロシージャは、分析を実行し、単一の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);
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、ワークロードを初期開始ポイントにリセットします。これにより、すべてのジャーナル・メッセージ、ログ・メッセージが削除され、必要な変動および利用統計情報が再計算されます。
例
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; /
このプロシージャは、タスクを初期状態にリセットします。タスクから、すべての中間データおよびリコメンデーション・データが削除されます。タスクの状態はINITIAL
に設定されます。
例
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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、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);
このプロシージャは、タスクまたはテンプレート内のユーザー・パラメータのデフォルト値を変更します。ユーザー・パラメータは、アドバイザの操作に様々な影響を与える、様々な属性を格納する単一の変数です。パラメータのデフォルト値を変更すると、タスクの作成時に新しい値が継承されます。
デフォルトのタスクは、通常のタスクとは異なります。デフォルト値は、新しく作成したタスクに挿入される初期値ですが、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);
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、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);
このプロシージャは、アドバイザ・タスクまたはテンプレート内のユーザー・パラメータを変更します。ユーザー・パラメータは、ワークロード・コレクション、チューニングの決定およびレポートに影響を及ぼす様々な属性を格納する単一の変数です。
構文
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);
使用上の注意
タスクは、初期状態にある場合を除いて変更できません。タスクを初期状態に設定するには、「RESET_TASKプロシージャ」を参照してください。このプロシージャの使用方法の詳細は、アドバイザ固有のマニュアルを参照してください。
SQLアクセス・アドバイザのタスク・パラメータ
表18-35に、SQLアクセス・アドバイザのタスク・パラメータを示します。
表18-35 SQLアクセス・アドバイザのタスク・パラメータ
パラメータ | 説明 |
---|---|
|
分析時に考慮するチューニング結果を指定するカンマ区切りリスト。 有効な値は、次のとおりです。
新しいキーワードを使用すると、次の組合せが有効となります。
デフォルト値は |
|
|
|
現行の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文のユーザー名がユーザー名リストの名前と一致する場合、そのユーザー名は実行中のタスクでは処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。 有効な値は、次のとおりです。
デフォルト値は |
|
ジャーナル( 有効な値は、次のとおりです。
各ジャーナル値は、該当するレベル以下のレベルの記録されたすべてのメッセージを表します。たとえば、
デフォルト値は |
|
ユーザーは、調査するパーティション・スキームの数をパーティション・エキスパートが削減するように推奨できます。これによって、アドバイザのランタイムを短縮することができます。 有効な値は、次のとおりです。
デフォルト値は |
|
アドバイザによって元表、索引またはマテリアライズド・ビューに対して推奨されるパーティションの数を制限します。 有効な値は、次のとおりです。
デフォルト値は |
|
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文のユーザー名がユーザー名リストの名前と一致しない場合、そのユーザー名はタスクで処理されません。ユーザー名は引用符で囲まない場合、大/小文字が区別されません。 有効な値は、次のとおりです。
デフォルト値は |
|
ワークロードが表すアプリケーションの適用範囲のレベルを指定します。設定可能な値は
データ・タイプは |
セグメント・アドバイザのパラメータ
表18-36に、セグメント・アドバイザでSET_TASK_PARAMETER
プロシージャを使用して設定できる入力タスク・パラメータを示します。
表18-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アドバイザのタスク・パラメータ
表18-37に、UNDOアドバイザでSET_TASK_PARAMETER
プロシージャを使用して設定できる入力タスク・パラメータを示します。
表18-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.EXECUTE_TASK(tname); END; /
自動データベース診断モニター(ADDM)のタスク・パラメータ
表18-38に、ADDMでSET_TASK_PARAMETER
プロシージャを使用して設定できる入力タスク・パラメータを示します。これらのパラメータの使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
表18-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; /
関連項目:
|
このプロシージャは、マテリアライズド・ビューを複数のマテリアライズド・ビューに分解する方法、またはリフレッシュおよびクエリー・リライトの高速化を優先してマテリアライズド・ビューを更新する方法を示します。さらに、マテリアライズド・ビュー・ログを修正する方法やクエリー・リライトを有効にする方法も示します。
パラメータ
表18-39 TUNE_MVIEWプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
カタログ・ビューで結果を検索するためのタスク名。指定しない場合は、システムによって名前が生成され、戻されます。 |
|
元のマテリアライズド・ビュー作成文。 |
関連項目: 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
プロシージャの実行後に結果を取得します。
表18-40 USER_TUNE_MVIEWビューとDBA_TUNE_MVIEWビュー
列名 | 列の説明 |
---|---|
|
マテリアライズド・ビューの所有者の名前。 |
|
キーとして一連のリコメンデーションにアクセスするタスク名。 |
|
|
|
コマンド順序番号として使用するアクションID。 |
|
|
例
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
に保存されます。
このプロシージャは、既存のタスク・オブジェクトを更新します。タスク・オブジェクトは、一般に、特定のアドバイザの入力データとして使用します。セグメント・アドバイスは、オブジェクト、セグメントまたは表領域レベルで生成できます。
構文
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);
パラメータ
表18-41 UPDATE_OBJECTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のタスクを一意に識別する有効なアドバイザ・タスク名。 |
|
アドバイザが割り当てたオブジェクト識別子。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。 |
|
アドバイザ固有のデータ。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; /
このプロシージャは、リコメンデーションの所有者、名前および表領域を更新します。
構文
DBMS_ADVISOR.UPDATE_REC_ATTRIBUTES ( task_name IN VARCHAR2 rec_id IN NUMBER, action_id IN NUMBER, attribute_name IN VARCHAR2, value IN VARCHAR2);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、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);
パラメータ
表18-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; /
注意: リリース11gR1では、このプロシージャの使用は推奨されていません。 |
このプロシージャは、指定した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);
パラメータ
表18-44 UPDATE_SQLWKLD_STATEMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のワークロードを一意に識別する、SQLワークロード・オブジェクト名。 |
|
文に割り当てられるアドバイザによって生成された識別子番号。すべてのワークロード文を指定するには、定数 |
|
検索された更新によって変更された文の数を戻します。 |
|
SQL文に関連付けるビジネス・アプリケーション名を指定します。値が |
|
文のアプリケーション・アクションを指定します。値が |
|
SQL文の相対優先度。値は、1 - 値が |
|
SQL文を実行したOracleユーザー名。値が usernameはOracle識別子であるため、username値はサーバーに保存されているとおりに正確に入力する必要があります。たとえば、ユーザー |
|
無効になっています。 |
使用上の注意
ワークロードが現在アクティブなタスクによって参照されている場合は、変更または削除できません。タスクは初期状態にない場合にアクティブであるとみなされます。タスクを初期状態に設定するには、「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; /
このプロシージャは、タスクまたはタスク・テンプレートの様々な属性を変更します。
構文
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);
パラメータ
表18-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; /