DBMS_ADVANCED_REWRITE
には、上級のクエリー・リライト・ユーザー用のインタフェースが格納されます。このパッケージを使用すると、クエリー・リライトに機能上等しい宣言を作成、削除および保守できます。
関連項目: クエリー・リライトの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。 |
この章では、次の項目について説明します。
この項では、DBMS_ADVANCED_REWRITE
パッケージの使用に関連する項目について説明します。
デフォルトでは、これらのプロシージャにアクセスする権限は存在しません。これらのプロシージャにアクセスするには、SYSDBA
として接続し、目的のデータベース管理者に実行アクセス許可を明示的に付与する必要があります。
選択したデータベース管理者またはロールにEXECUTE
権限を付与することによって、このパッケージのセキュリティを制御できます。たとえば、SYSDBA
として実行される次の文で、ユーザーer
にこのパッケージを使用するアクセス許可を付与することができます。
GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO er;
このパッケージの先頭部分に、使用するアラート名を制限する個別のカバー・パッケージを記述することもできます。 DBMS_ADVANCED_REWRITE
パッケージに直接EXECUTE
権限を付与するかわりに、カバー・パッケージにその権限を付与することができます。
また、標準のマテリアライズド・ビューに必要な権限と同様に、等価宣言の作成権限をユーザーに付与する必要があります。たとえば、次の文をSYSDBA
として実行すると、この権限をユーザーer
に付与できます。
GRANT CREATE MATERIALIZED VIEW TO er;
次の表に、このパッケージのすべてのサブプログラムをアルファベット順に示します。
表16-1 DBMS_ADVANCED_REWRITEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ALTER_REWRITE_EQUIVALENCEプロシージャ |
リライト等価宣言のモードを指定したモードに変更します。 |
BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャ |
サブマテリアライズド・ビューを使用してトップレベルのマテリアライズド・ビューのリライトを有効にします。このプロシージャは、直接使用しないことをお薦めします。 |
DECLARE_REWRITE_EQUIVALENCEプロシージャ |
等価宣言が有効であるかぎり、 |
DROP_REWRITE_EQUIVALENCEプロシージャ |
指定したリライト等価宣言を削除します。 |
VALIDATE_REWRITE_EQUIVALENCEプロシージャ |
|
このプロシージャは、リライト等価宣言のモードを指定したモードに変更します。
構文
DBMS_ADVANCED_REWRITE.ALTER_REWRITE_EQUIVALENCE ( name VARCHAR2, rewrite_mode VARCHAR2);
パラメータ
表16-2 ALTER_REWRITE_EQUIVALENCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更する等価宣言の名前。名前は |
|
以下のモードがサポートされます。強度順に並べています。
パフォーマンス上の問題を起こさない最低限のモードを使用することをお薦めします。 |
このプロシージャは、サブマテリアライズド・ビューを使用してトップレベルのマテリアライズド・ビューのリライトおよびリフレッシュを有効にします。 このプロシージャは、DBMS_ADVISOR.TUNE_MVIEW
プロシージャによって生成されたスクリプトでの排他使用のために提供されます。 DBMS_ADVISOR.TUNE_MVIEW
によってマテリアライズド・ビューを1つのトップレベルのマテリアライズド・ビューと1つ以上のサブマテリアライズド・ビューに分解する際に、クエリー・リライトおよび高速リフレッシュを有効にする場合に必要です。
BUILD_SAFE_REWRITE_EQUIVALENCE
プロシージャは、直接使用しないことをお薦めします。 必要に応じて、DBMS_ADVISOR.TUNE_MVIEW
プロシージャまたはDBMS_ADVANCED_REWRITE.CREATE_REWRITE_EQUIVALENCE
プロシージャのいずれかを使用してください。
このプロシージャは、等価宣言が有効であるかぎり、source_stmt
がdestination_stmt
と機能上等しいこと、およびパフォーマンスの点から、destination_stmt
が好ましいことを示す宣言を作成します。宣言の範囲はシステム全体です。 クエリー・リライト・エンジンは、それらの宣言を使用して、QUERY_REWRITE_INTEGRITY = trusted
モードおよびstale_tolerated
モードで、リライト変換を実行します。
ソース文と宛先文の基礎となる等価宣言はクエリー・リライト・エンジンで施行できないため、問合せはtrusted
およびstale_tolerated
のIntegrityモードでのみリライトされます。
構文
DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( name VARCHAR2, source_stmt VARCHAR2, destination_stmt VARCHAR2, validate BOOLEAN := TRUE, rewrite_mode VARCHAR2 := 'TEXT_MATCH'); DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE ( name VARCHAR2, source_stmt CLOB, destination_stmt CLOB, validate BOOLEAN := TRUE, rewrite_mode VARCHAR2 := 'TEXT_MATCH');
パラメータ
表16-3 DECLARE_REWRITE_EQUIVALENCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
等価宣言の名前。名前は または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価宣言は、現在のスキーマに作成されます。等価宣言を変更するには、実行者が適切な |
|
|
|
|
|
指定した |
|
以下のモードがサポートされます。強度順に並べています。
パフォーマンス上の問題を起こさない最低限のモードを使用することをお薦めします。 |
例外
表16-4 DECLARE_REWRITE_EQUIVALENCEプロシージャの例外
例外 | 説明 |
---|---|
|
リライト同値化の名前が指定されていません。 |
|
指定したリライト同値化が存在しません。 |
|
リライト同値化のチェックサム分析に失敗しました。 |
|
文内の問合せブロックはリライトされていません。 |
|
リライト同値化プロシージャで、 |
使用上の注意
等価宣言を使用したクエリー・リライトは、同時にマテリアライズド・ビューを使用したクエリー・リライトと一緒に行われます。どちらのリライトにも同じクエリー・リライト・エンジンが使用されます。クエリー・リライト・エンジンは、等価宣言とマテリアライズド・ビューを使用したクエリーのリライトに同じリライト・ルールを使用します。リライト等価宣言は上級ユーザーによって作成された特定のリライトを表すため、マテリアライズド・ビューによるリライトまたはリライト等価宣言によるリライトが実行可能な場合に、クエリー・リライト・エンジンは、マテリアライズド・ビューより、リライト等価宣言を優先します。このため、コストベースのオプティマイザ(特に、コストベースのリライト)は、リライトしないクエリー・プランのコストの方が好ましいと考えられる場合でも、リライトしないクエリー・プランを選択せず、リライトするクエリー・プランで、リライト等価宣言を使用します。 クエリー・リライトは受信リクエスト・クエリーのプロパティを等価宣言のsource_stmt
またはマテリアライズド・ビューの定義文とそれぞれ照らし合わせて、等価宣言のdestination_stmt
またはマテリアライズド・ビューのコンテナ表それぞれに関する同等の関係式を取得します。
このプロシージャは指定したリライト等価宣言を削除します。
構文
DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE ( name VARCHAR2);
パラメータ
表16-5 DROP_REWRITE_EQUIVALENCEプロシージャ
パラメータ | 説明 |
---|---|
|
削除する等価宣言の名前。名前は |
このプロシージャは、「VALIDATE_REWRITE_EQUIVALENCEプロシージャ」のVALIDATE
パラメータで説明した検証方法と同じ方法を使用して、指定したリライト等価宣言を検証します。
構文
DBMS_ADVANCED_REWRITE.VALIDATE_REWRITE_EQUIVALENCE ( name VARCHAR2);
パラメータ