【Oracle】マテリアライズドビューの自動更新
先日、マテリアライズド・ビューを触れたので、書き残す。
そもそもマテリアライズド・ビューとはなんだろうか?
- マテリアライズド・ビューとは
通常のビューとは異なり、データを半永続的に保持する。
あるビューを頻繁に参照する場合に使用する事が多い。
都度、データ検索、抽出しないため、処理の高速化が期待できる。
上記の通り、半永続的にデータを保持するため、ある一定のタイミングでビューを更新する必要がある。
手動で実行する方法もあるが、面倒なので、自動で実行させるようにしたい。
以下のSQLを流すことで、毎日0時に実行させることができた。
ALTER MATERIALIZED VIEW [スキーマ名].[マテビュー名] REFRESH START WITH TO_DATE('2018-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') NEXT trunc(sysdate, 'DD') + 1 + 00/24;
BEGIN dbms_mview.refresh('[スキーマ名].[マテビュー名]', 'c'); END;
また、以下のSQLで確認した。
select last_date,last_sec,next_date,next_sec,interval,what from dba_jobs WHERE SCHEMA_USER = '[スキーマ名]';