プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
12cリリース1 (12.1)
B71278-13
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

ALTER MATERIALIZED VIEW

用途

マテリアライズド・ビューは、問合せ結果を含むデータベース・オブジェクトです。問合せのFROM句には、表、ビューおよびその他のマテリアライズド・ビューを指定できます。これらをあわせて、マスター表(レプリケーション用語)またはディテール表(データ・ウェアハウス用語)といいます。このマニュアルでは、マスター表という用語を使用します。マスター表が格納されているデータベースをマスター・データベースといいます。

ALTER MATERIALIZED VIEW文を使用すると、既存のマテリアライズド・ビューを次の方法で変更できます。

  • 記憶特性を変更します。

  • リフレッシュ方法、モードまたは時間を変更します。

  • 別のタイプのマテリアライズド・ビューになるように構造を変更します。

  • クエリー・リライトを使用可能または使用禁止にします。


注意:

下位互換性を保つために、MATERIALIZED VIEWのかわりにキーワードSNAPSHOTもサポートされています。


関連項目:

  • マテリアライズド・ビューの作成の詳細は、「CREATE MATERIALIZED VIEW」を参照してください。

  • レプリケーション環境でのマテリアライズド・ビューの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

  • データ・ウェアハウス環境でのマテリアライズド・ビューの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。


前提条件

マテリアライズド・ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY MATERIALIZED VIEWシステム権限が必要です。

クエリー・リライトでマテリアライズド・ビューを使用可能にする場合、次の条件が必要です。

  • マテリアライズド・ビュー内のすべてのマスター表が自分のスキーマ内にある場合、QUERY REWRITE権限が必要です。

  • いずれかのマスター表が別のスキーマ内にある場合、GLOBAL QUERY REWRITE権限が必要です。

  • マテリアライズド・ビューが別のユーザーのスキーマ内にある場合、ユーザーおよびそのスキーマ所有者の両方に、前述の適切なQUERY REWRITE権限が必要です。また、マテリアライズド・ビューの所有者は、マテリアライズド・ビュー所有者が所有しないすべてのマスター表へのSELECT権限を持っている必要があります。

evaluation_edition_clauseまたはunusable_editions_clauseでエディションを指定するには、そのエディションに対するUSE権限が必要になります。

構文

alter_materialized_view::=

alter_materialized_view.gifの説明が続きます。
「図alter_materialized_view.gif」の説明

(physical_attributes_clause::=modify_mv_column_clause::=table_compression::=inmemory_alter_table_clause::=LOB_storage_clause::=modify_LOB_storage_clause::=alter_table_partitioning ::= (ALTER TABLEの一部)、parallel_clause::=logging_clause::=allocate_extent_clause::=deallocate_unused_clause::=shrink_clause::=alter_iot_clauses::=scoped_table_ref_constraint::=alter_mv_refresh::=evaluation_edition_clause::=alter_query_rewrite_clause::=を参照)

physical_attributes_clause::=

physical_attributes_clause.gifの説明が続きます。
「図physical_attributes_clause.gif」の説明

(storage_clause::=を参照)

modify_mv_column_clause::=

modify_mv_column_clause.gifの説明が続きます。
「図modify_mv_column_clause.gif」の説明

table_compression::=

table_compression.gifの説明が続きます。
「図table_compression.gif」の説明

inmemory_alter_table_clause::=

inmemory_alter_table_clause.gifの説明が続きます。
「図inmemory_alter_table_clause.gif」の説明

(inmemory_parameters::=inmemory_column_clause::=)

inmemory_parameters::=

inmemory_parameters.gifの説明が続きます。
「図inmemory_parameters.gif」の説明

(inmemory_memcompress::=inmemory_priority::=inmemory_distribute::=inmemory_duplicate::=)

inmemory_memcompress::=

inmemory_memcompress.gifの説明が続きます。
「図inmemory_memcompress.gif」の説明

inmemory_priority::=

inmemory_priority.gifの説明が続きます。
「図inmemory_priority.gif」の説明

inmemory_distribute::=

inmemory_distribute.gifの説明が続きます。
「図inmemory_distribute.gif」の説明

inmemory_duplicate::=

inmemory_duplicate.gifの説明が続きます。
「図inmemory_duplicate.gif」の説明

inmemory_column_clause::=

inmemory_column_clause.gifの説明が続きます。
「図inmemory_column_clause.gif」の説明

(inmemory_memcompress::=)

LOB_storage_clause::=

lob_storage_clause.gifの説明が続きます。
「図lob_storage_clause.gif」の説明

(LOB_storage_parameters::=を参照)

LOB_storage_parameters::=

lob_storage_parameters.gifの説明が続きます。
「図lob_storage_parameters.gif」の説明

(LOB_parameters::=storage_clause::=を参照)

LOB_parameters::=

lob_parameters.gifの説明が続きます。
「図lob_parameters.gif」の説明

(storage_clause::=logging_clause::=を参照)

modify_LOB_storage_clause::=

modify_lob_storage_clause.gifの説明が続きます。
「図modify_lob_storage_clause.gif」の説明

(modify_LOB_parameters::=を参照)

modify_LOB_parameters::=

modify_lob_parameters.gifの説明が続きます。
「図modify_lob_parameters.gif」の説明

(storage_clause::=LOB_retention_clause::=LOB_compression_clause::=logging_clause::=allocate_extent_clause::=shrink_clause::=deallocate_unused_clause::=を参照)

parallel_clause::=

parallel_clause.gifの説明が続きます。
「図parallel_clause.gif」の説明

logging_clause::=

logging_clause.gifの説明が続きます。
「図logging_clause.gif」の説明

allocate_extent_clause::=

allocate_extent_clause.gifの説明が続きます。
「図allocate_extent_clause.gif」の説明

(size_clause::=を参照)

deallocate_unused_clause::=

deallocate_unused_clause.gifの説明が続きます。
「図deallocate_unused_clause.gif」の説明

(size_clause::=を参照)

shrink_clause::=

shrink_clause.gifの説明が続きます。
「図shrink_clause.gif」の説明

alter_iot_clauses::=

alter_iot_clauses.gifの説明が続きます。
「図alter_iot_clauses.gif」の説明

(index_org_table_clause::=alter_overflow_clause::=を参照。alter_mapping_table_clausesは、マテリアライズド・ビューではサポートされていません。)

index_org_table_clause::=

index_org_table_clause.gifの説明が続きます。
「図index_org_table_clause.gif」の説明

(mapping_table_clauseは、マテリアライズド・ビューではサポートされていません。prefix_compressionは、マテリアライズド・ビューの変更でサポートされていません。index_org_overflow_clause::=を参照)

index_org_overflow_clause::=

index_org_overflow_clause.gifの説明が続きます。
「図index_org_overflow_clause.gif」の説明

(segment_attributes_clause::=(「ALTER TABLE」の項)を参照)

alter_overflow_clause::=

alter_overflow_clause.gifの説明が続きます。
「図alter_overflow_clause.gif」の説明

(allocate_extent_clause::=shrink_clause::=deallocate_unused_clause::=を参照)

add_overflow_clause::=

add_overflow_clause.gifの説明が続きます。
「図add_overflow_clause.gif」の説明

(segment_attributes_clause::=(「ALTER TABLE」の項)を参照)

scoped_table_ref_constraint::=

scoped_table_ref_constraint.gifの説明が続きます。
「図scoped_table_ref_constraint.gif」の説明

alter_mv_refresh::=

alter_mv_refresh.gifの説明が続きます。
「図alter_mv_refresh.gif」の説明

evaluation_edition_clause::=

evaluation_edition_clause.gifの説明が続きます。
「図evaluation_edition_clause.gif」の説明

alter_query_rewrite_clause::=

alter_query_rewrite_clause.gifの説明が続きます。
「図alter_query_rewrite_clause.gif」の説明


注意:

QUERY REWRITEのみを指定することはできません。ENABLEまたはDISABLEのどちらかを指定するか、副次句のunusable_editions_clauseを指定する必要があります。

unusable_editions_clause::=

unusable_editions_clause.gifの説明が続きます。
「図unusable_editions_clause.gif」の説明

セマンティクス

schema

マテリアライズド・ビューが含まれているスキーマを指定します。schemaを指定しない場合、このマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。

materialized_view

変更するマテリアライズド・ビューの名前を指定します。

physical_attributes_clause

PCTFREEPCTUSEDINITRANSパラメータの値(USING INDEX句で使用する場合は、INITRANSパラメータ値のみ)、およびマテリアライズド・ビューの記憶特性を指定します。PCTFREEPCTUSEDおよびINITRANSパラメータの詳細は「ALTER TABLE」、記憶特性の詳細はstorage_clauseを参照してください。

modify_mv_column_clause

この句を使用すると、マテリアライズド・ビューのこの列を暗号化または復号化できます。この句の詳細は、「CREATE TABLE」の句encryption_specを参照してください。

table_compression

table_compression句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。この句のセマンティクスの詳細は、「CREATE TABLE」の句table_compressionを参照してください。

inmemory_alter_table_clause

inmemory_alter_table_clauseを使用して、マテリアライズド・ビューのインメモリー列ストアを有効化または無効化します。この句のセマンティクスは、ALTER MATERIALIZED VIEWおよびALTER TABLE文で同じです。ALTER TABLEinmemory_alter_table_clauseを参照してください。

LOB_storage_clause

LOB_storage_clauseを使用すると、新しいLOBの記憶特性を指定できます。マテリアライズド・ビューのLOB記憶域は、表の場合と同様に動作します。LOB記憶域パラメータの詳細は、「CREATE TABLE」のLOB_storage_clauseを参照してください。

modify_LOB_storage_clause

modify_LOB_storage_clauseを使用すると、LOB属性LOB_itemの物理属性またはLOBオブジェクト属性を変更できます。マテリアライズド・ビューのLOB記憶域の変更は、表の場合と同様に動作します。


関連項目:

変更可能なLOB記憶域パラメータの詳細は、「ALTER TABLE」のmodify_LOB_storage_clauseを参照してください。

alter_table_partitioning

マテリアライズド・ビューのパーティション化の句の構文および一般的な機能は、パーティション表と同じです。「ALTER TABLE」のalter_table_partitioningを参照してください。

マテリアライズド・ビューのパーティション変更の制限事項: partitioning_clausesでは、LOB_storage_clauseまたはmodify_LOB_storage_clauseを指定できません。


注意:

マテリアライズド・ビューの内容をマスター表の内容と同期させて保持するには、表パーティションを削除または切り捨てた後、表に依存しているすべてのマテリアライズド・ビューを手動で完全リフレッシュすることをお薦めします。

MODIFY PARTITION UNUSABLE LOCAL INDEXES この句を使用すると、partitionに関連付けられたすべてのローカル索引パーティションに、UNUSABLEのマークが付きます。

MODIFY PARTITION REBUILD UNUSABLE LOCAL INDEXES この句を使用すると、partitionに関連付けられた、使用禁止のローカル索引パーティションを再構築できます。

parallel_clause

parallel_clauseを使用すると、マテリアライズド・ビューのデフォルトの並列度を変更できます。

この句の詳細は、「CREATE TABLE」のparallel_clauseを参照してください。

logging_clause

この句を使用すると、マテリアライズド・ビューのロギング特性を指定または変更できます。この句の詳細は、logging_clauseを参照してください。

allocate_extent_clause

allocate_extent_clauseを使用すると、マテリアライズド・ビューの新しいエクステントを明示的に割り当てることができます。この句の詳細は、allocate_extent_clauseを参照してください。

deallocate_unused_clause

deallocate_unused_clause句を使用すると、マテリアライズド・ビューの末尾にある未使用領域の割当てを明示的に解除でき、解放された領域を他のセグメントに使用できるようになります。この句の詳細は、deallocate_unused_clauseを参照してください。

shrink_clause

この句を使用すると、マテリアライズド・ビューのセグメントを縮小化できます。この句の詳細は、「CREATE TABLE」のshrink_clauseを参照してください。

CACHE | NOCACHE

アクセス頻度の高いデータについて、CACHEは、全表スキャンの実行時にこの表に対して取り出された各ブロックを、バッファ・キャッシュのLRUリストの最高使用頻度側に入れることを指定します。この属性は、小規模な参照表で有効です。NOCACHEは、ブロックをLRUリストの最低使用頻度側に入れることを指定します。この句の詳細は、「CREATE TABLE」の「CACHE | NOCACHE | CACHE READS」を参照してください。

alter_iot_clauses

alter_iot_clausesを使用すると、索引構成マテリアライズド・ビューの特性を変更できます。alter_iot_clausesのコンポーネントのキーワードおよびパラメータのセマンティクスは、ALTER TABLEと同じですが、次の制限事項があります。

索引構成マテリアライズド・ビューの変更の制限事項: index_org_table_clausemapping_table_clauseまたはprefix_compression句は指定できません。


関連項目:

索引構成マテリアライズド・ビューの作成については、「CREATE MATERIALIZED VIEW」のindex_org_table_clauseを参照してください。

USING INDEX句

この句を使用すると、マテリアライズド・ビューのデータをメンテナンスするために使用される索引のINITRANSパラメータおよびSTORAGEパラメータの値を変更できます。

USING INDEX句の制限事項: この句では、PCTUSEDまたはPCTFREEパラメータは指定できません。

MODIFY scoped_table_ref_constraint

MODIFY scoped_table_ref_constraint句を使用すると、新しい表または新しい列の別名にREF列または属性の有効範囲を再指定できます。

REF列の有効範囲の再指定の制限事項: ALTER MATERIALIZED VIEW文では、1つのREF列または属性の有効範囲のみを再指定することができます。この句は、この文以外では使用できません。

alter_mv_refresh

alter_mv_refresh句を使用すると、自動リフレッシュの方法、モードおよび日時のデフォルト値を変更できます。マテリアライズド・ビューのマスター表の内容が変更された場合、マテリアライズド・ビューのデータを更新し、現在マスター表にあるデータを正確に反映させる必要があります。この句によって、自動的にマテリアライズド・ビューをリフレッシュする日時をスケジューリングし、リフレッシュの方法およびモードを指定できます。


注意:

この句では、デフォルトのリフレッシュ・オプションのみを設定します。リフレッシュを実際に行う手順は、『Oracle Databaseアドバンスト・レプリケーション』および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

FAST句

FASTを指定すると、高速リフレッシュ方法を指定できます。これはマスター表に対して行った変更に従ってリフレッシュを行います。この変更は、マスター表に関連付けられたマテリアライズド・ビュー・ログ(従来型DML変更の場合)またはダイレクト・ローダー・ログ(ダイレクト・パスINSERT操作の場合)に格納されます。

従来型DMLの変更の場合も、ダイレクト・パスINSERT操作の場合も、他の条件によって、高速リフレッシュへのマテリアライズド・ビューの適応性が制限されることがあります。

ALTER MATERIALIZED VIEW文でリフレッシュ方法をFASTに変更した場合、これは検証されていません。マテリアライズド・ビューが高速リフレッシュに適応しない場合、このビューをリフレッシュしようとするとエラーが戻されます。


関連項目:

  • レプリケーション環境における高速リフレッシュの制限については、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

  • データ・ウェアハウス環境における高速リフレッシュの制限については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

  • 「自動リフレッシュの例:」


COMPLETE句

COMPLETEを指定すると、完全リフレッシュ(マテリアライズド・ビューを定義する問合せを実行することによって実装)が実行されます。完全リフレッシュを指定すると、高速リフレッシュが実行可能であっても、完全リフレッシュが実行されます。

FORCE句

FORCEを指定すると、リフレッシュ時に、高速リフレッシュが可能な場合は高速リフレッシュを実行し、そうでない場合は完全リフレッシュを実行できます。

ON COMMIT句

ON COMMITを指定すると、マテリアライズド・ビューのマスター表に対するトランザクションをコミットするときに必ずリフレッシュが実行されます。

ON COMMITおよびON DEMANDの両方を指定することはできません。ON COMMITを指定した場合、START WITHまたはNEXTを指定できません。

ON COMMITの制限事項: この句は、マテリアライズド結合ビューおよび単一表マテリアライズド集計ビューにのみサポートされます。


関連項目:

『Oracle Databaseアドバンスト・レプリケーション』および『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

ON DEMAND句

ON DEMANDを指定すると、マテリアライズド・ビューは、3つのDBMS_MVIEWリフレッシュ・プロシージャのいずれかのコールによる要求でリフレッシュされます。ON COMMITおよびON DEMANDのどちらも指定しなかった場合、ON DEMANDがデフォルトになります。

ON COMMITおよびON DEMANDの両方を指定することはできません。START WITHおよびNEXTは、ON DEMANDより優先されます。このため、START WITHまたはNEXTを指定したときは、ほとんどの場合、ON DEMANDを指定しても意味がありません。


関連項目:

  • これらのプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  • REFRESH ON DEMANDを指定することによって作成できるマテリアライズド・ビューのタイプについては、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。


START WITH句

START WITH dateを指定すると、最初の自動リフレッシュ時間を表す日付を指定できます。

NEXT句

NEXTを指定すると、自動リフレッシュの間隔を計算するための日付式を指定できます。

START WITH値およびNEXT値は、将来の時刻に評価される値です。START WITH値を省略した場合、Oracle Databaseはマテリアライズド・ビューの作成時刻に対してNEXT式を評価することによって、最初の自動リフレッシュ時刻を判断します。START WITH値を指定し、NEXT値を指定しない場合、Oracle Databaseは1回のみマテリアライズド・ビューをリフレッシュします。START WITH値およびNEXT値のどちらも指定しない場合、またはalter_mv_refreshを指定しない場合、Oracle Databaseはマテリアライズド・ビューを自動リフレッシュしません。

WITH PRIMARY KEY句

WITH PRIMARY KEYを指定すると、ROWIDマテリアライズド・ビューを主キー・マテリアライズド・ビューに変更できます。主キー・マテリアライズド・ビューを使用すると、高速リフレッシュを継続できるマテリアライズド・ビューの機能に影響せずに、マテリアライズド・ビュー・マスター表を再編成できます。

この句を指定するには、マスター表に、使用可能な主キー制約が定義され、この制約に基づき、主キー情報を記録するマテリアライズド・ビュー・ログが定義されている必要があります。


関連項目:


USING ROLLBACK SEGMENT句

自動UNDOモードではロールバック・セグメントではなくUNDO表領域が使用されるため、データベースが自動UNDOモードの場合、この句は無効です。自動UNDOモードを使用することをお薦めします。この句は、ロールバック・セグメントが使用される以前のバージョンのOracle Databaseが含まれるレプリケーション環境との下位互換性のためにサポートされています。

この句の詳細は、「CREATE MATERIALIZED VIEW」の「USING ROLLBACK SEGMENT句」を参照してください。

USING ... CONSTRAINTS句

この句のセマンティクスは、CREATE MATERIALIZED VIEWおよびALTER MATERIALIZED VIEW文で同じです。詳細は、「CREATE MATERIALIZED VIEW」の「USING ... CONSTRAINTS句」を参照してください。

evaluation_edition_clause

この句を使用すると、マテリアライズド・ビューの評価エディションを変更できます。この句のセマンティクスは、CREATE MATERIALIZED VIEWおよびALTER MATERIALIZED VIEW文で同じです。この句の詳細は、CREATE MATERIALIZED VIEW「evaluation_edition_clause」を参照してください。

マテリアライズド・ビューの評価エディション変更の注意事項: マテリアライズド・ビューの評価エディションを変更するときには、次の注意事項が適用されます。

  • REFRESH ON COMMITモードのマテリアライズド・ビューを変更するきに、CONSIDER FRESHを指定していないと、Oracle Databaseはマテリアライズド・ビューの完全リフレッシュを実行します。

  • REFRESH ON DEMANDモードのマテリアライズド・ビューを変更するきに、CONSIDER FRESHを指定していないと、Oracle Databaseはマテリアライズド・ビューの失効状態をSTALEに設定します。

  • REFRESH ON COMMITモードおよびREFRESH ON DEMANDモードのマテリアライズド・ビューの場合、評価エディションを変更して、CONSIDER FRESHを指定すると、Oracle Databaseはマテリアライズド・ビューの失効状態の更新と、マテリアライズド・ビューの再構築を実行しなくなります。そのため、CONSIDER FRESHを指定することで、評価エディションが変更されていても、subqueryが生成する結果に違いがないことを示せます。マテリアライズド・ビューが失効していて、この文を発行する前に高速リフレッシュまたは完全リフレッシュが必要になる場合、この状態は変更されないため、マテリアライズド・ビューには不適切なデータが含まれる可能性があります。

alter_query_rewrite_clause

この句を使用すると、マテリアライズド・ビューをクエリー・リライトで使用できるかどうかを指定できます。

ENABLE句 ENABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用可能にできます。マテリアライズド・ビューにunusable_editions_clause指定している場合や、以前に指定していた場合、使用禁止のエディションでクエリー・リライトを有効にすることはできません。

マテリアライズド・ビューを使用可能にする場合の制限事項: マテリアライズド・ビューを使用可能にする処理には、次の制限事項があります。

  • マテリアライズド・ビューが無効または使用禁止の場合、ENABLEモードでもクエリー・リライトに適応しません。

  • マテリアライズド・ビューの全体または一部がビューから作成されている場合、クエリー・リライトを使用可能にできません。

  • マテリアライズド・ビューのすべてのユーザー定義ファンクションがDETERMINISTICである場合のみ、クエリー・リライトを使用可能にできます。


    関連項目:

    CREATE FUNCTION

  • 文内の式が反復可能な場合のみ、クエリー・リライトを使用可能にできます。たとえば、CURRENT_TIMEまたはUSERを含めることはできません。


関連項目:

クエリー・リライトの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

DISABLE句 DISABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用禁止にできます。マテリアライズド・ビューが無効な場合、使用禁止であるかどうかにかかわらず、クエリー・リライトの使用には適応しません。ただし、使用禁止にされたマテリアライズド・ビューをリフレッシュすることはできます。

unusable_editions_clause この句を使用すると、クエリー・リライトに適格にならないマテリアライズド・ビューのエディションを指定できます。この句のセマンティクスは、CREATE MATERIALIZED VIEWおよびALTER MATERIALIZED VIEW文で同じです。この句の詳細は、CREATE MATERIALIZED VIEW「unusable_editions_clause」を参照してください。

クエリー・リライトにマテリアライズド・ビューを使用し、使用禁止にされたエディションでコンパイルされたカーソルは無効になります。

COMPILE

COMPILEを指定すると、マテリアライズド・ビューを明示的に再検証できます。マテリアライズド・ビューが依存するオブジェクトを削除または変更した場合、マテリアライズド・ビューはアクセス可能のままですが、クエリー・リライトに対しては無効です。再度、明示的にマテリアライズド・ビューの妥当性チェックを行い、クエリー・リライトの使用に適応させるには、この句を使用します。

マテリアライズド・ビューの再妥当性チェックに失敗すると、リフレッシュできなくなるか、またはクエリー・リライトに使用できなくなります。

CONSIDER FRESH

この句を使用すると、マスター表が変更された後のマテリアライズド・ビューの失効状態を管理することができます。CONSIDER FRESHは、マテリアライズド・ビューが最新であり、TRUSTEDまたはSTALE_TOLERATEDモードでのクエリー・リライトに適応するとみなされるように指定します。


注意:

CONSIDER FRESH句は、CONSIDER FRESH句を発行する前にマテリアライズド・ビュー・ログの行を適用したり、パーティション・チェンジ・トラッキングの変更をマテリアライズド・ビューに適用しないようにデータベースに指示します。つまり、保留中の変更は無視され削除されます。これらはマテリアライズド・ビューに適用されません。これにより、マテリアライズド・ビューに、実表とほぼ同じ量のデータが含まれる可能性があります。

Oracle Databaseは、マテリアライズド・ビューが最新であるかどうかを保証できないため、ENFORCEDモードでのクエリー・リライトはサポートしません。また、この句はマテリアライズド・ビューの失効状態をUNKNOWNに設定します。失効状態は、ALL_MVIEWSDBA_MVIEWSおよびUSER_MVIEWSの各データ・ディクショナリ・ビューのSTALENESS列に表示されます。

いずれかのマスター表の内容が変更された場合、マテリアライズド・ビューは失効します。この句は、Oracle Databaseに対して、マテリアライズド・ビューが最新で、変更されていないものと仮定するように指示します。そのため、リフレッシュが保留されているこれらの表に対する実際の更新内容は、マテリアライズド・ビューから削除されます。


関連項目:

  • クエリー・リライトの詳細、およびマスター表へのパーティション・メンテナンス操作の影響については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

  • 「CONSIDER FRESHの例:」


自動リフレッシュの例: 次の文は、マテリアライズド・ビューsales_by_month_by_state(「マテリアライズド集計ビューの作成例:」で作成)のリフレッシュ方法のデフォルトをFASTに変更します。

ALTER MATERIALIZED VIEW sales_by_month_by_state
   REFRESH FAST; 

これ以降のマテリアライズド・ビューの自動リフレッシュは、高速リフレッシュになります。これは、単純なマテリアライズド・ビューであり、そのマスター表には、マテリアライズド・ビューの作成前または最後のリフレッシュ前に作成されたマテリアライズド・ビュー・ログがあります。

REFRESH句にSTART WITHまたはNEXTの値が指定されていないため、マテリアライズド・ビューsales_by_month_by_stateを作成したとき、または最後に変更したときにREFRESH句で設定されたリフレッシュ間隔がそのまま使用されます。

次の文は、マテリアライズド・ビューsales_by_month_by_stateの新しい自動リフレッシュ間隔を設定します。

ALTER MATERIALIZED VIEW sales_by_month_by_state
   REFRESH NEXT SYSDATE+7;

REFRESH句にSTART WITHの値が指定されていないため、マテリアライズド・ビューsales_by_month_by_stateが作成されたとき、または最後に変更されたときに指定されたSTART WITHNEXTの値によって設定された日時に次の自動リフレッシュが行われます。

次回の自動リフレッシュのときに、このマテリアライズド・ビューがリフレッシュされるとともに、NEXTの式SYSDATE+7が評価されて次回の自動リフレッシュの日時が決定し、それ以降もこのマテリアライズド・ビューのリフレッシュは自動的に週1回行われます。REFRESH句ではリフレッシュ方法が明示的には指定されていないため、CREATE MATERIALIZED VIEW文または最後に実行されたALTER MATERIALIZED VIEW文のREFRESH句で指定されたリフレッシュ方法が引き続き使用されます。

CONSIDER FRESHの例: 次の文は、Oracle Databaseがマテリアライズド・ビューsales_by_month_by_stateを最新であるとみなすように指定します。この文を使用すると、sales_by_month_by_stateのマスター表に対してパーティション・メンテナンス操作を実行した後でも、sales_by_month_by_stateに対してTRUSTEDモードでのクエリー・リライトが可能です。

ALTER MATERIALIZED VIEW sales_by_month_by_state CONSIDER FRESH;

前の文の結果として、マテリアライズド・ビューの最後のリフレッシュ以降に実表に加えられたパーティション管理操作は、マテリアライズド・ビューには適用されません。たとえば、マテリアライズド・ビューの次のリフレッシュの前にCONSIDER FRESHが使用されると、実表内のパーティションの中のデータに対する追加、削除または変更はマテリアライズド・ビューに反映されません。詳細は、「CONSIDER FRESH」を参照してください。


関連項目:

このALTER MATERIALIZED VIEWの例を必要とするパーティション・メンテナンスの例は、「表のパーティションの分割例:」を参照してください。

完全リフレッシュの例: 次の文は、マテリアライズド・ビューemp_data(「マテリアライズド・ビューの定期的リフレッシュ例:」で作成)の新しいリフレッシュ方法、NEXTで示す新しいリフレッシュ日時および新しい自動リフレッシュ間隔を指定します。

ALTER MATERIALIZED VIEW emp_data
   REFRESH COMPLETE   
   START WITH TRUNC(SYSDATE+1) + 9/24  
   NEXT SYSDATE+7;

START WITH句の値によって、このマテリアライズド・ビューの次回の自動リフレッシュは翌日の午前9時に行うように設定されます。この時刻になると、マテリアライズド・ビューの完全リフレッシュが実行されるとともに、NEXTの式が評価されて、それ以降はこのマテリアライズド・ビューのリフレッシュが毎週実行されます。

クエリー・リライトを使用可能にする例: 次の文は、マテリアライズド・ビューemp_dataのクエリー・リライトを使用可能にし、暗黙的に再妥当性チェックを行います。

ALTER MATERIALIZED VIEW emp_data
   ENABLE QUERY REWRITE;

主キー・マテリアライズド・ビューの例: 次の文は、ROWIDマテリアライズド・ビューorder_data(「ROWIDマテリアライズド・ビューの作成例:」で作成)を主キー・マテリアライズド・ビューに変更します。この例では、order_dataに主キーを持つマテリアライズド・ビュー・ログを定義していることが必要です。

ALTER MATERIALIZED VIEW order_data 
   REFRESH WITH PRIMARY KEY; 

マテリアライズド・ビューのコンパイル例: 次の文は、マテリアライズド・ビューstore_mvを再検証します。

ALTER MATERIALIZED VIEW order_data COMPILE;