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;
次の表に、このパッケージのすべてのサブプログラムをアルファベット順に示します。
表18-1 DBMS_ADVANCED_REWRITEパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
ALTER_REWRITE_EQUIVALENCEプロシージャ |
リライト等価宣言のモードを指定したモードに変更します。 |
|
BUILD_SAFE_REWRITE_EQUIVALENCEプロシージャ |
サブマテリアライズド・ビューを使用してトップレベルのマテリアライズド・ビューのリライトを有効にします。このプロシージャは、直接使用しないことをお薦めします。 |
|
DECLARE_REWRITE_EQUIVALENCEプロシージャ |
等価宣言が有効であるかぎり、 |
|
DROP_REWRITE_EQUIVALENCEプロシージャ |
指定したリライト等価宣言を削除します。 |
|
VALIDATE_REWRITE_EQUIVALENCEプロシージャ |
|
このプロシージャは、リライト等価宣言のモードを指定したモードに変更します。
パラメータ
表18-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');
パラメータ
表18-3 DECLARE_REWRITE_EQUIVALENCEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
等価宣言の名前。名前は または、表名のルールに従った単一の名前を指定できます。この場合、リライト等価宣言は、現在のスキーマに作成されます。等価宣言を変更するには、実行者が適切な |
|
|
|
|
|
|
|
|
指定した |
|
|
以下のモードがサポートされます。強度順に並べています。
パフォーマンス上の問題を起こさない最低限のモードを使用することをお薦めします。 |
使用上の注意
等価宣言を使用したクエリー・リライトは、同時にマテリアライズド・ビューを使用したクエリー・リライトと一緒に行われます。どちらのリライトにも同じクエリー・リライト・エンジンが使用されます。クエリー・リライト・エンジンは、等価宣言とマテリアライズド・ビューを使用したクエリーのリライトに同じリライト・ルールを使用します。リライト等価宣言は上級ユーザーによって作成された特定のリライトを表すため、マテリアライズド・ビューによるリライトまたはリライト等価宣言によるリライトが実行可能な場合に、クエリー・リライト・エンジンは、マテリアライズド・ビューより、リライト等価宣言を優先します。このため、コストベースのオプティマイザ(特に、コストベースのリライト)は、リライトしないクエリー・プランのコストの方が好ましいと考えられる場合でも、リライトしないクエリー・プランを選択せず、リライトするクエリー・プランで、リライト等価宣言を使用します。クエリー・リライトは受信リクエスト・クエリーのプロパティを等価宣言のsource_stmtまたはマテリアライズド・ビューの定義文とそれぞれ照らし合わせて、等価宣言のdestination_stmtまたはマテリアライズド・ビューのコンテナ表それぞれに関する同等の関係式を取得します。
このプロシージャは、「VALIDATE_REWRITE_EQUIVALENCEプロシージャ」のVALIDATEパラメータで説明した検証方法と同じ方法を使用して、指定したリライト等価宣言を検証します。