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::=
(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::=
annotations_clause::=
annotations_list::=
annotation::=
annotation_name::=
annotation_value::=
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
は、既存のマテリアライズド・ビューを変更する場合に指定します。
ALTER VIEW
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
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
annotation_name
は、最大4000文字の識別子です。注釈名が予約語の場合は、二重引用符で囲んで指定する必要があります。二重引用符で囲まれた識別子を使用すると、識別子に空白文字を含めることもできます。ただし、空白文字のみの識別子は受け入れられません。
ALTER
文では、ビュー・レベルの注釈のみを変更できます。列レベルの注釈を削除するには、ビューを削除して再作成する必要があります。
注釈句のセマンティクスの詳細は、CREATE TABLE
の「annotations_clause」を参照してください。
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パッケージおよびタイプ・リファレンス』を参照してください。
-
REFRESH
ON
DEMAND
を指定することによって作成できるマテリアライズド・ビューのタイプについては、『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モードのマテリアライズド・ビューを変更するきに、
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
が生成する結果に違いがないことを示せます。マテリアライズド・ビューが失効していて、この文を発行する前に高速リフレッシュまたは完全リフレッシュが必要になる場合、この状態は変更されないため、マテリアライズド・ビューには不適切なデータが含まれる可能性があります。
{ ENABLE | DISABLE } ON QUERY COMPUTATION
この句を使用すると、マテリアライズド・ビューがリアルタイムのマテリアライズド・ビューまたは通常のマテリアライズド・ビューのいずれであるかを制御できます。
-
問合せ時計算を有効にして、通常のマテリアライズド・ビューをリアルタイムのマテリアライズド・ビューに変換する場合は、
ENABLE
ON
QUERY
COMPUTATION
を指定します。 -
問合せ時計算を無効にして、リアルタイムのマテリアライズド・ビューを通常のマテリアライズド・ビューに変換する場合は、
DISABLE
ON
QUERY
COMPUTATION
を指定します。
この句のセマンティクスは、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」を参照してください。
クエリー・リライトにマテリアライズド・ビューを使用し、使用禁止にされたエディションでコンパイルされたカーソルは無効になります。
ENABLE | DISABLE CONCURRENT REFRESH
ON COMMITおよびアトミック・モードの同じマテリアライズド・ビューを複数のセッションにわたってリフレッシュするには、同時リフレッシュを有効にします。実表に対するDMLがある複数のセッションで、MVを同時にリフレッシュできます。リフレッシュできるマテリアライズド・ビューの数に制限はありません。
同時リフレッシュは、デフォルトでは無効になっています。マテリアライズド・ビューに対して明示的に有効にする必要があります。ON COMMITモードのマテリアライズド・ビューに対してのみ有効にできます。
関連項目:
『Oracle Databaseデータ・ウェアハウス・ガイド』の「マテリアライズド・ビューのリフレッシュ」。
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;
ビューからの注釈の削除: 例
次の例では、ビューMView1
から注釈Snapshot
を削除します。
ALTER MATERIALIZED VIEW MView1 ANNOTATIONS(DROP Snapshot);