ALTER MATERIALIZED VIEW
目的
マテリアライズド・ビューは、問合せ結果を含むデータベース・オブジェクトです。問合せのFROM句には、表、ビューおよびその他のマテリアライズド・ビューを指定できます。これらをあわせて、マスター表(レプリケーション用語)またはディテール表(データ・ウェアハウス用語)といいます。このマニュアルでは、マスター表という用語を使用します。マスター表が格納されているデータベースをマスター・データベースといいます。
ALTER MATERIALIZED VIEW文を使用すると、既存のマテリアライズド・ビューを次の方法で変更できます。
-
記憶特性を変更します。
-
リフレッシュ方法、モードまたは時間を変更します。
-
別のタイプのマテリアライズド・ビューになるように構造を変更します。
-
クエリー・リライトを使用可能または使用禁止にします。
ノート:
下位互換性を保つために、MATERIALIZED VIEWのかわりにキーワードSNAPSHOTもサポートされています。
関連項目:
-
マテリアライズド・ビューの作成の詳細は、「CREATE MATERIALIZED VIEW」を参照してください。
-
レプリケーション環境でのマテリアライズド・ビューの詳細は、『Oracle Database管理者ガイド』を参照してください。
-
データ・ウェアハウス環境でのマテリアライズド・ビューの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
前提条件
マテリアライズド・ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、ALTER ANY MATERIALIZED VIEWシステム権限が必要です。
クエリー・リライトでマテリアライズド・ビューを使用可能にするには:
-
マテリアライズド・ビュー内のすべてのマスター表が自分のスキーマ内にある場合、
QUERYREWRITE権限が必要です。 -
いずれかのマスター表が別のスキーマ内にある場合、
GLOBALQUERYREWRITE権限が必要です。 -
マテリアライズド・ビューが別のユーザーのスキーマ内にある場合、ユーザーおよびそのスキーマ所有者の両方に、前述の適切な
QUERYREWRITE権限が必要です。また、マテリアライズド・ビューの所有者は、マテリアライズド・ビュー所有者が所有しないすべてのマスター表へのSELECT権限を持っている必要があります。
evaluation_edition_clauseまたはunusable_editions_clauseでエディションを指定するには、そのエディションに対するUSE権限が必要になります。
構文
alter_materialized_view::=
(physical_attributes_clause::=、modify_mv_column_clause::=、table_compression::=、inmemory_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::=、annotations_clause)
modify_mv_column_clause::=
table_compression::=
inmemory_table_clause::=
inmemory_attributes::=
(inmemory_memcompress::=、inmemory_priority::=、inmemory_distribute::=、inmemory_duplicate::=)
inmemory_memcompress::=
inmemory_priority::=
inmemory_distribute::=
inmemory_duplicate::=
LOB_storage_parameters::=
(TABLESPACE SET: ALTER MATERIALIZED VIEWではサポートされていません、LOB_parameters::=、storage_clause::=)
modify_LOB_parameters::=
(storage_clause::=、LOB_retention_clause::=、LOB_compression_clause::=、logging_clause::=、allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=)
logging_clause::=
shrink_clause::=
alter_iot_clauses::=
(index_org_table_clause::=、alter_overflow_clause::=、alter_mapping_table_clauses: マテリアライズド・ビューではサポートされていません)
index_org_table_clause::=
(mapping_table_clause: マテリアライズド・ビューではサポートされていません、prefix_compression: マテリアライズド・ビューの変更ではサポートされていません、index_org_overflow_clause::=)
index_org_overflow_clause::=
(segment_attributes_clause::= (ALTER TABLEの一部))
alter_overflow_clause::=
(allocate_extent_clause::=、shrink_clause::=、deallocate_unused_clause::=)
evaluation_edition_clause::=
alter_query_rewrite_clause::=
ノート:
QUERY REWRITEのみを指定することはできません。ENABLEまたはDISABLEのどちらかを指定するか、副次句のunusable_editions_clauseを指定する必要があります。
unusable_editions_clause::=
セマンティクス
IF EXISTS
IF EXISTSは、既存のマテリアライズド・ビューを変更する場合に指定します。
schema
マテリアライズド・ビューが含まれているスキーマを指定します。schemaを指定しない場合、このマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。
materialized_view
変更するマテリアライズド・ビューの名前を指定します。
physical_attributes_clause
PCTFREE、PCTUSED、INITRANSパラメータの値(USING INDEX句で使用する場合は、INITRANSパラメータ値のみ)、およびマテリアライズド・ビューの記憶特性を指定します。PCTFREE、PCTUSEDおよびINITRANSパラメータの詳細は「ALTER TABLE」、記憶特性の詳細は「storage_clause」を参照してください。
modify_mv_column_clause
この句を使用すると、マテリアライズド・ビューのこの列を暗号化または復号化できます。この句の詳細は、「CREATE TABLE」の句「encryption_spec」を参照してください。
table_compression
table_compression句を使用すると、ディスクおよびメモリーの使用量を削減するために、データ・セグメントを圧縮するかどうかを指定できます。この句のセマンティクスの詳細は、「CREATE TABLE」の句「table_compression」を参照してください。
inmemory_table_clause
inmemory_table_clauseを使用すると、インメモリー列ストア(IM列ストア)のマテリアライズド・ビューまたはその列を有効または無効にするか、マテリアライズド・ビューまたはその列のインメモリー属性を変更できます。この句のセマンティクスは、ALTER TABLE文のものと同じです。この句のセマンティクスの詳細は、「ALTER TABLE」の「inmemory_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」を参照してください。
annotations_clause
注釈句のセマンティクスの詳細は、「annotations_clause」を参照してください。
ALTER文では、ビュー・レベルの注釈のみを変更できます。列レベルの注釈を削除するには、ビューを削除して再作成する必要があります。
alter_iot_clauses
alter_iot_clausesを使用すると、索引構成マテリアライズド・ビューの特性を変更できます。alter_iot_clausesのコンポーネントのキーワードおよびパラメータのセマンティクスは、ALTER TABLEと同じですが、次の制限事項があります。
索引構成マテリアライズド・ビューの変更の制限事項
index_org_table_clauseのmapping_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データ・ウェアハウス・ガイド』を参照してください。
-
リフレッシュ統計を使用してマテリアライズド・ビューのリフレッシュ操作のパフォーマンスを監視する方法を学習するには、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
FASTを指定すると、高速リフレッシュ方法を指定できます。これはマスター表に対して行った変更に従ってリフレッシュを行います。この変更は、マスター表に関連付けられたマテリアライズド・ビュー・ログ(従来型DML変更の場合)またはダイレクト・ローダー・ログ(ダイレクト・パス・インサート操作の場合)に格納されます。
従来型DMLの変更の場合も、ダイレクト・パス・インサート操作の場合も、他の条件によって、高速リフレッシュへのマテリアライズド・ビューの適応性が制限されることがあります。
ALTER MATERIALIZED VIEW文でリフレッシュ方法をFASTに変更した場合、これは検証されていません。マテリアライズド・ビューが高速リフレッシュに適応しない場合、このビューをリフレッシュしようとするとエラーが戻されます。
関連項目:
-
レプリケーション環境における高速リフレッシュの制限事項は、『Oracle Database管理者ガイド』を参照してください。
-
データ・ウェアハウス環境における高速リフレッシュの制限については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
COMPLETEを指定すると、完全リフレッシュ(マテリアライズド・ビューを定義する問合せを実行することによって実装)が実行されます。完全リフレッシュを指定すると、高速リフレッシュが実行可能であっても、完全リフレッシュが実行されます。
関連項目:
FORCEを指定すると、リフレッシュ時に、高速リフレッシュが可能な場合は高速リフレッシュを実行し、そうでない場合は完全リフレッシュを実行できます。
ON COMMITを指定すると、マテリアライズド・ビューのマスター表に対するトランザクションをコミットするときに必ずリフレッシュが実行されます。
ON COMMITおよびON DEMANDの両方を指定することはできません。ON COMMITを指定した場合、START WITHまたはNEXTを指定できません。
ON COMMITの制限事項
この句は、マテリアライズド結合ビューおよび単一表マテリアライズド集計ビューでのみサポートされます。
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パッケージおよびタイプ・リファレンス』を参照してください。
-
REFRESHONDEMANDを指定することによって作成できるマテリアライズド・ビューのタイプについては、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
START WITH dateを指定すると、最初の自動リフレッシュ時間を表す日付を指定できます。
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を指定すると、ROWIDマテリアライズド・ビューを主キー・マテリアライズド・ビューに変更できます。主キー・マテリアライズド・ビューを使用すると、高速リフレッシュを継続できるマテリアライズド・ビューの機能に影響せずに、マテリアライズド・ビュー・マスター表を再編成できます。
この句を指定するには、マスター表に、使用可能な主キー制約が定義され、この制約に基づき、主キー情報を記録するマテリアライズド・ビュー・ログが定義されている必要があります。
関連項目:
-
主キー・マテリアライズド・ビューの詳細は、『Oracle Database管理者ガイド』を参照してください。
自動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モードのマテリアライズド・ビューを変更するきに、
CONSIDERFRESHを指定していないと、Oracle Databaseはマテリアライズド・ビューの完全リフレッシュを実行します。 -
REFRESH ON DEMANDモードのマテリアライズド・ビューを変更するきに、
CONSIDERFRESHを指定していないと、Oracle Databaseはマテリアライズド・ビューの失効状態をSTALEに設定します。 -
REFRESH ON COMMITモードおよびREFRESH ON DEMANDモードのマテリアライズド・ビューの場合、評価エディションを変更して、
CONSIDERFRESHを指定すると、Oracle Databaseはマテリアライズド・ビューの失効状態の更新と、マテリアライズド・ビューの再構築を実行しなくなります。そのため、CONSIDERFRESHを指定することで、評価エディションが変更されていても、subqueryが生成する結果に違いがないことを示せます。マテリアライズド・ビューが失効していて、この文を発行する前に高速リフレッシュまたは完全リフレッシュが必要になる場合、この状態は変更されないため、マテリアライズド・ビューには不適切なデータが含まれる可能性があります。
{ ENABLE | DISABLE } ON QUERY COMPUTATION
この句を使用すると、マテリアライズド・ビューがリアルタイムのマテリアライズド・ビューまたは通常のマテリアライズド・ビューのいずれであるかを制御できます。
-
問合せ時計算を有効にして、通常のマテリアライズド・ビューをリアルタイムのマテリアライズド・ビューに変換する場合は、
ENABLEONQUERYCOMPUTATIONを指定します。 -
問合せ時計算を無効にして、リアルタイムのマテリアライズド・ビューを通常のマテリアライズド・ビューに変換する場合は、
DISABLEONQUERYCOMPUTATIONを指定します。
この句のセマンティクスは、CREATE MATERIALIZED VIEWおよびALTER MATERIALIZED VIEW文で同じです。この句の詳細は、CREATE MATERIALIZED VIEWの{ ENABLE | DISABLE } ON QUERY COMPUTATIONを参照してください。
alter_query_rewrite_clause
この句を使用すると、マテリアライズド・ビューをクエリー・リライトで使用できるかどうかを指定できます。
ENABLE句
ENABLEを指定すると、クエリー・リライトでマテリアライズド・ビューを使用可能にできます。マテリアライズド・ビューにunusable_editions_clause指定している場合や、以前に指定していた場合、使用禁止のエディションでクエリー・リライトを有効にすることはできません。
関連項目:
-
リフレッシュ統計を使用してマテリアライズド・ビューのリフレッシュ操作のパフォーマンスを監視する方法を学習するには、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
マテリアライズド・ビューの有効化の制限事項
マテリアライズド・ビューの有効化には、次の制限事項があります。
-
マテリアライズド・ビューが無効または使用禁止の場合、
ENABLEモードでもクエリー・リライトに適応しません。 -
マテリアライズド・ビューの全体または一部がビューから作成されている場合、クエリー・リライトを使用可能にできません。
-
マテリアライズド・ビューのすべてのユーザー定義ファンクションが
DETERMINISTICである場合のみ、クエリー・リライトを使用可能にできます。関連項目:
-
文内の式が反復可能な場合のみ、クエリー・リライトを使用可能にできます。たとえば、
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_MVIEWS、DBA_MVIEWSおよびUSER_MVIEWSの各データ・ディクショナリ・ビューのSTALENESS列に表示されます。
いずれかのマスター表の内容が変更された場合、マテリアライズド・ビューは失効します。この句は、Oracle Databaseに対して、マテリアライズド・ビューが最新で、変更されていないものと仮定するように指示します。そのため、リフレッシュが保留されているこれらの表に対する実際の更新内容は、マテリアライズド・ビューから削除されます。
関連項目:
-
クエリー・リライトの詳細、およびマスター表へのパーティション・メンテナンス操作の影響については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
例
自動リフレッシュ: 例
次の文は、マテリアライズド・ビュー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 WITHとNEXTの値によって設定された日時に次の自動リフレッシュが行われます。
次回の自動リフレッシュのときに、このマテリアライズド・ビューがリフレッシュされるとともに、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;






























