きんときんの技術メモ

日々の業務で学んだ技術を中心に書きます。CentOS7で作業すること多め。

【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 = '[スキーマ名]';