《Oracle命令语法速查》【 CREATE MATERIALIZED VIEW 】

マテリアライズドビュー(スナップショット)を作成する


CREATE { MATERIALIZED VIEW | SNAPSHOT }  [ スキーマ . ] マテリアライズドビュー名 →
→┬──────────────┬→
  └ OF [ スキーマ . ] タイプ名 ┘
→┬───────────────────────────┬→
  └ ( ┬ SCOPE FOR ( 列名 ) IS [ スキーマ . ] 表名  ┬ ) ┘
       └ ← , ───────────────────┘
→┬────────────────────────────────────┬→
  └ ORGANIZATION INDEX ┬──────────┬→                          │
                        ├ PCTTHRESHOLD 数値  ┤                            │
                        ├ COMPRESS 数値      ┤                            │
                        └ NOCOMPRESS ────┘                            │
                      → [ INCLUDING 列名 ] OVERFLOW <SEGMENT_ATTRIBUTES句> ┘
→┬──────────────────────────────┬→
  ├ (*1) ───────────────────────────┤
  └ ON PREBUILT TABLE [ { WITH | WITHOUT } REDUCED PRECISION ] ┘
→┬─────────────────────────┬→
  ├ USING NO INDEX ─────────────────┤
  └ USING INDEX [ ┬ <PHYSICAL ATTRIBUTES句> ]  ┬ ] ┘
                   ├ TABLESPACE 表領域名        ┤
                   └ ← ────────────┘
→┬────────────────────────────────────┬→
  ├ REFRESH  ┬─────────────────────────────┬┤
  │          ├┬ FAST ────────────────────────┬┤│
  │          ││[ 高速リフレッシュを行う(更新データのみ対象) ]      │││
  │          │├ COMPLETE ──────────────────────┤││
  │          ││[ 完全リフレッシュを行う(全件対象) ]                │││
  │          │└ FORCE  ───────────────────────┘││
  │          │  [ 可能な場合は高速で、無理な場合は完全リフレッシュ  ] ││
  │          ├ ON { DEMAND | COMMIT } ─────────────────┤│
  │          │[ リフレッシュタイミングを指定する                     ]││
  │          ├ START WITH 日時  ────────────────────┤│
  │          │[ 最初の自動リフレッシュを行う日時を日付形式で指定する ]││
  │          ├ NEXT 日時        ────────────────────┤│
  │          │[ 次回以降のリフレッシュ間隔を日付形式で指定する       ]││
  │          ├ WITH { PRIMARY KEY | ROWID } ──────────────┤│
  │          │[ 更新行を識別する方法を指定する                       ]││
  │          ├ (*2) ──────────────────────────┤│
  │          └ ← ───────────────────────────┘│
  └ NEVER REFRESH  ────────────────────────────┘
→ [ FOR UPDATE ] →
[ マテリアライズドビューを更新可能にする ]
→┬──────────────────┬→
  └ { DISABLE| ENABLE } QUERY REWRITE  ┘
→ AS SELECT文 ;
[ マテリアライズドビューの問合せを指定する ]

(*1)
→┬┬───────────────────────────────┬┬→
  │├ <SEGMENT ATTRIBUTES句>   ──────────────────┤│
  │├ column_properties  ─────────────────────┤│
  │├ CACHE  ───────────────────────────┤│
  ││[ 読み込み値をバッファ内で最後に使用された端に配置する     ]││
  │├ NOCACHE  ──────────────────────────┤│
  ││[ 読み込み値をバッファ内で最も使用されていない端に配置する ]││
  │└ ← ─────────────────────────────┘│
  └ CLUSTER クラスタ名 ( ┬ 列名 ┬ )  ───────────────┘
                          └ ← , ┘
  [ 指定したクラスタの一部とする ]
┬────────────────┬→
├ <PARALLEL句>   ────────┤
├ <TABLE PARTITION句>  ─────┤
├ BUILD { IMMEDIATE | DEFERRED } ┤
└ ← ──────────────┘

(*2)
→ USING ┬ DEFAULT ┬────┬ ROLLBACK SEGMENT ────────────┬→
         │         ├ MASTER ┤                                          │
         │         └ LOCAL  ┘                                          │
         │[ 任意のロールバックセグメントをリフレッシュ時に使用する  ]  │
         ├┬────┬ ROLLBACK SEGMENT ロールバックセグメント名 ────┤
         │├ MASTER ┤                                                   │
         │└ LOCAL  ┘                                                   │
         │[ 指定したロールバックセグメントをリフレッシュ時に使用する  ]│
         └ ←  ─────────────────────────────┘
[   MASTER : リモートマスタで使用するロールバックセグメント               ]
[   LOCAL  : ローカルリフレッシュグループで使用するロールバックセグメント ]