マテリアライズド・ビューとは、ひとつ以上の表(又はビュー、のマテリアライズド・ビュー)を問い合わせた結果を含むスキーマオブジェクトである。マテリアライズド・ビューの基となる表のことをマスター表と呼ぶ。参照を行なうたびに実表を問い合わせるビューと異なり、マスター表への問い合わせ結果を含んでいるため、参照を高速に行なえる。ただし、更新は遅くなる。
ビューは表(テーブル)の問い合わせ結果であり、実体は表です。マテリアライズド・ビューは、問い合わせ結果を物理的に保持した実体があります。
操作 | 表 | ビュー | マテリアライズド・ビュー |
---|---|---|---|
SELECT | ✓ | ✓ | ✓ |
INSERT | ✓ | ✓(制限あり) | ✗ |
UPDATE | ✓ | ✓(制限あり) | ✗ |
DELETE | ✓ | ✓(制限あり) | ✗ |
主キーの作成 | ✓ | ✗ | ✗ |
インデックスの作成 | ✓ | ✗ | ✓ |
マテリアライズド・ビューを手動でリフレッシュするには、SQL*PlusのEXECUTEコマンドでDBMS_MVIEWパッケージのREFRESHプロシージャを実行する。
EXECUTE DBMS_MVIEW.REFRESH(name)
EXECUTE DBMS_MVIEW.REFRESH(name, method)
方法 | 説明 |
---|---|
c | 完全リフレッシュ |
f | 高速リフレッシュ |
? | 強制リフレッシュ |
マテリアライズド・ビューの元となるマスター・マテリアライズド・ビューを DROP MATERIALIZED VIEW で削除すると、マテリアライズド・ビューのリフレッシュはエラーになる。 マスター・マテリアライズド・ビューを一度削除すると、CREATE MATERIALIZED VIEW で同じ名前のマスター・マテリアライズド・ビューを作成しても、マテリアライズド・ビューのリフレッシュはエラーになる。
マテリアライズド・ビューを手動でリフレッシュする例を示す。
SQL> EXEC DBMS_MVIEW.REFRESH('mview1', 'c');
マテリアライズド・ビューを操作するSQL文の一覧を以下に示す。
CREATE MATERIALIZED VIEW とは、マテリアライズド・ビューを作成するSQL文である。
ALTER MATERIALIZED VIEW とは、マテリアライズド・ビューを変更するSQL文である。
DROP MATERIALIZED VIEW とは、マテリアライズド・ビューを削除するSQL文である。
マテリアライズド・ビューを操作するのに必要なシステム権限の一覧を以下に示す。
CREATE MATERIALIZED VIEW は、自分のスキーマ内にマテリアライズドビューを作成、変更、削除できるシステム権限である。
CREATE ANY MATERIALIZED VIEW は、任意のスキーマ内にマテリアライズドビューを作成できるシステム権限である。
ALTER ANY MATERIALIZED VIEW は、任意のスキーマ内にあるマテリアライズドビューを変更できるシステム権限である。
DROP ANY MATERIALIZED VIEW は、任意のスキーマ内にあるマテリアライズドビューを削除できるシステム権限である。
CREATE TABLE は、自分のスキーマ内に表(テーブル)を作成、変更、削除できるシステム権限である。マテリアライズド・ビューを作成するには、CREATE TABLE または CREATE ANY TABLE いずれかのテーブル作成権限が必要である。
CREATE ANY TABLE は、任意のスキーマ内に表(テーブル)を作成、変更、削除できるシステム権限である。マテリアライズド・ビューを作成するには、CREATE TABLE または CREATE ANY TABLE いずれかのテーブル作成権限が必要である。
SELECT ANY TABLE は、任意のスキーマ内にある表(テーブル)を問い合わせることができるシステム権限である。つまり、他のユーザのスキーマ内にあるテーブルをマスター表にできる。
マテリアライズド・ビューに関するデータ・ディクショナリ・ビューの一覧を以下に示す。
ALL_MVIEWS は、現在のユーザがアクセスできるマテリアライズド・ビューを示すデータ・ディクショナリ・ビューである。
DBA_MVIEWS は、データベース内すべてのマテリアライズド・ビューを示すデータ・ディクショナリ・ビューである。
USER_MVIEWS は、現在のユーザが所有するマテリアライズド・ビューを示すデータ・ディクショナリ・ビューである。
マテリアライズド・ビューを定義する問い合わせを確認する例を示す。
SQL> SELECT QUERY FROM USER_MVIEWS WHERE MVIEW_NAME = 'example';
マテリアライズド・ビュー・ログとは、マテリアライズド・ビューの基となるマスター表への変更を格納するスキーマオブジェクトである。マテリアライズド・ビュー・ログがある場合、マテリアライズド・ビュー・ログを使用してマテリアライズド・ビューがリフレッシュされる。これを増分リフレッシュ又は高速リフレッシュと呼ぶ。
マテリアライズド・ビューを高速リフレッシュするためには、マテリアライズド・ビュー・ログを作成する必要がある。
マテリアライズド・ビュー・ログを操作するSQL文の一覧を次に示す。