ALTERMATERIALIZEDVIEWLOG

目的

マテリアライズド・ビュー・ログとは、マテリアライズド・ビューのマスター表に関連付けられる表です。ALTER MATERIALIZED VIEW LOG文を使用すると、既存のマテリアライズド・ビュー・ログの記憶特性またはタイプを変更できます。

ノート:

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

関連項目:

前提条件

マスター表の所有者であるか、またはマスター表に対するREADまたはSELECT権限およびマテリアライズド・ビュー・ログに対するALTER権限が必要です。

関連項目:

ALTER MATERIALIZED VIEW LOGの前提条件の詳細は、『Oracle Database管理者ガイド』を参照してください。

構文

add_mv_log_column_clause::=

move_mv_log_clause::=

parallel_clause::=

new_values_clause::=

mv_log_purge_clause::=

for_refresh_clause::=

セマンティクス

FORCE

FORCEを指定すると、ADD句で指定したいずれかの項目がすでにマテリアライズド・ビュー・ログに指定されている場合、エラーは戻されませんが、既存の要素は無視され、マテリアライズド・ビュー・ログに存在しないすべての項目が追加されます。同様に、INCLUDING NEW VALUESを指定すると、この属性がすでにマテリアライズド・ビュー・ログに指定されている場合、冗長は無視され、エラーも戻されません。

schema

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

table

変更するマテリアライズド・ビュー・ログに関連付けられたマスター表の名前を指定します。

physical_attributes_clause

physical_attributes_clauseを使用すると、PCTFREEPCTUSEDおよびINITRANSの各パラメータの値、マテリアライズド・ビュー・ログ、パーティションおよびオーバーフロー・データ・セグメントの記憶特性、またはパーティション・マテリアライズド・ビュー・ログのデフォルト特性を変更できます。

マテリアライズド・ビュー・ログの物理属性の制限事項

マテリアライズド・ビュー・ログがローカル管理表領域内に存在する場合は、storage_clauseを使用してエクステント・パラメータを変更することはできません。このパラメータについては、「CREATE TABLE」を参照してください。

add_mv_log_column_clause

マテリアライズド・ビュー・ログのマスター表に列を追加した場合、列はマテリアライズド・ビュー・ログに自動的には追加されません。そのため、この句を使用してマテリアライズド・ビュー・ログに列を追加します。マスター表の対応する列が暗号化されている場合、新規に追加された列はOracle Databaseによって暗号化されます。

alter_table_partitioning

パーティション化の句の構文および一般的な機能は、ALTER TABLE文の場合と同じです。「ALTER TABLE」のalter_table_partitioning」を参照してください。

マテリアライズド・ビュー・ログのパーティションの変更の制限事項

マテリアライズド・ビュー・ログのパーティションの変更には、次の制限事項があります。

  • マテリアライズド・ビュー・ログのパーティションを変更する場合、LOB_storage_clauseまたはmodify_LOB_storage_clauseは使用できません。

  • マテリアライズド・ビュー・ログのパーティションを削除、切捨てまたは交換しようとすると、Oracle Databaseはエラーを戻します。

parallel_clause

parallel_clauseを使用すると、マテリアライズド・ビュー・ログへのパラレル操作がサポートされているかどうかを指定できます。

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

logging_clause

マテリアライズド・ビュー・ログに対するロギング属性を指定します。この句の詳細は、logging_clause」を参照してください。

allocate_extent_clause

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

shrink_clause

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

move_mv_log_clause

MOVE句を使用すると、マテリアライズド・ビュー・ログ表を他の表領域に移動して、マテリアライズド・ビュー・ログの他のセグメントまたは記憶域属性を変更したり、マテリアライズド・ビュー・ログのパラレル化を変更できます。

マテリアライズド・ビュー・ログの移動の制限事項

segment_attributesstorage_clauseENCRYPT句は、マテリアライズド・ビュー・ログでは無効です。

CACHE | NOCACHE句

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

mv_log_augmentation

ADD句を使用すると、マテリアライズド・ビュー・マスター表内の行が変更される際に、主キー値、ROWID値、オブジェクトID値または順序も記録するようにマテリアライズド・ビュー・ログを拡張できます。また、この句は、新しく列を記録するためにも使用できます。

これらの情報の記録を停止する場合は、マテリアライズド・ビュー・ログを削除してから、再作成する必要があります。マテリアライズド・ビュー・ログを削除した後再作成した場合、マスター表に依存するすべての既存マテリアライズド・ビューが、次回のリフレッシュ時に強制的に完全リフレッシュされます。

マテリアライズド・ビュー・ログの拡張の制限事項

各マテリアライズド・ビュー・ログに指定できるのは、PRIMARY KEYROWIDOBJECT IDSEQUENCE、および列リストの各列を1つずつです。このALTER文にPRIMARY KEYROWIDOBJECT IDSEQUENCEおよび列リストを指定できるのはそれぞれ1回のみです。また、FORCEオプションを指定しないかぎり、これらの値のいずれかが作成時に(暗黙的または明示的に)指定された場合、このALTER文にはそれらの値を指定できません。

OBJECT ID

OBJECT IDを指定すると、更新されるすべての行の適切なオブジェクト識別子をマテリアライズド・ビュー・ログに記録できます。

OBJECT ID句の制限事項

OBJECT IDはオブジェクト表のログに対してのみ指定でき、記憶表に対しては指定できません。

PRIMARY KEY

PRIMARY KEYを指定すると、更新されるすべての行の主キー値をマテリアライズド・ビュー・ログに記録できます。

ROWID

ROWIDを指定すると、更新されるすべての行のROWID値をマテリアライズド・ビュー・ログに記録できます。

SEQUENCE

SEQUENCEを指定すると、追加の順序情報を提供する順序値をマテリアライズド・ビュー・ログに記録できます。

column

更新されるすべての行に対して、マテリアライズド・ビュー・ログに記録する値を持つ新しい列を指定します。通常、フィルタ列(副問合せマテリアライズド・ビューが参照する主キー以外の列)および結合列(副問合せのWHERE句で結合を定義する主キー以外の列)を指定します。

関連項目:

NEW VALUES句

NEW VALUES句を使用すると、更新DML操作で、古い値と新しい値の両方をマテリアライズド・ビュー・ログに保存するかどうかを指定できます。ALTER MATERIALIZED VIEW LOG文で追加した列のみでなく、ログのすべての列にこの句で設定した値を適用します。

INCLUDING

INCLUDINGを指定すると、新しい値と古い値の両方をログに保存できます。このログが単一表マテリアライズド集計ビューの表用で、マテリアライズド・ビューに高速リフレッシュを実行する場合、INCLUDINGを指定してください。

EXCLUDING

EXCLUDINGを指定すると、ログに新しい値が記録されなくなります。この句を使用すると、新しい値の記録によるオーバーヘッドを回避できます。

マテリアライズド・ビューのリフレッシュ・モードをFAST以外のモードに変更した場合を除き、高速リフレッシュが可能な単一表マテリアライズド集計ビューが定義されている場合は、EXCLUDING NEW VALUESを使用しないでください。

mv_log_purge_clause

この句を使用すると、次のようにマテリアライズド・ビュー・ログのパージ属性を変更できます。

  • パージを、IMMEDIATE SYNCHRONOUSからIMMEDIATE ASYNCHRONOUSに、またはIMMEDIATE ASYNCHRONOUSからIMMEDIATE SYNCHRONOUSに変更します。

  • パージをIMMEDIATEからスケジュール実行に、またはスケジュール実行からIMMEDIATEに変更します。

  • 新しい開始時間と、新しいnext時間およびintervalを指定します。

パージをスケジュール実行からIMMEDIATEに変更すると、そのマテリアライズド・ビュー・ログに関連付けられているスケジュール実行のパージ・ジョブは削除されます。パージをIMMEDIATEからスケジュール実行に変更すると、指定した属性を持つパージ・ジョブが作成されます。スケジュール実行のパージ属性を変更すると、スケジューラ・パージ・ジョブ内では指定した属性のみが変更されます。

スケジュール実行のパージ属性を変更する場合を除いて、ログ・パージを現在の状態に変更する場合(つまり変更しない状態にする場合)は、FORCEを指定する必要があります。

マテリアライズド・ビュー・ログに対してパージ時間または間隔がすでに設定されているかどうかを確認するには、*_MVIEW_LOGSデータ・ディクショナリ・ビューを問い合せます。この句のセマンティクスの詳細は、「CREATE MATERIALIZED VIEW LOG」の句mv_log_purge_clause」を参照してください。

for_refresh_clause

この句を使用すると、マテリアライズド・ビュー・ログに使用するリフレッシュ方法を変更できます。

FOR SYNCHRONOUS REFRESH

この句を指定すると、高速リフレッシュまたは完全リフレッシュを同期リフレッシュに変更できます。ステージング・ログが作成されます。

高速リフレッシュを変更する場合は、この句を使用する前に、次の条件が満たされていることを確認してください。

  • マテリアライズド・ビュー・ログ内のすべての変更を使用している。

  • マスター表に関連付けられたREFRESH ON DEMANDモードのマテリアライズド・ビューがリフレッシュされている。

  • マスター表に関連付けられたREFRESH ON COMMITモードのマテリアライズド・ビューがREFRESH ON DEMANDモードのマテリアライズド・ビューに変換されている。

この句の使用後には、マスター表に対する直接のDML操作は実行できなくなります。データの変更操作の準備と実行には、DBMS_SYNC_REFRESHパッケージに含まれるプロシージャを使用する必要があります。

FOR FAST REFRESH

この句を指定すると、同期リフレッシュまたは完全リフレッシュを高速リフレッシュに変更できます。マテリアライズド・ビュー・ログが作成されます。

同期リフレッシュを高速リフレッシュに変更する場合は、この句を使用する前に、ステージング・ログ内のすべての変更を使用していることを確認してください。

この句の使用後には、マスター表に対する直接のDML操作を実行できるようになります。

この句のセマンティクスの詳細は、CREATE MATERIALIZED VIEW LOGの句「for_refresh_clause」を参照してください。

ROWIDマテリアライズド・ビュー・ログ: 例

次の文は、既存の主キー・マテリアライズド・ビュー・ログを変更して、ROWID情報も記録されるようにします。

ALTER MATERIALIZED VIEW LOG ON order_items ADD ROWID;

マテリアライズド・ビュー・ログEXCLUDING NEW VALUES: 例

次の文は、フィルタ列を追加し、新規の値を除外することによって、hr.employeesのマテリアライズド・ビュー・ログを変更します。このログを使用するマテリアライズド集計ビューは、これ以降高速リフレッシュされません。ただし、高速リフレッシュが不要になる場合は、この処理によって新しい値の記録によるオーバーヘッドを回避できます。

ALTER MATERIALIZED VIEW LOG ON employees
   ADD (commission_pct)
   EXCLUDING NEW VALUES;