マテリアライズド・ビュー (MATERIALIZED VIEW) †昔でいうところのスナップショット。 マテリアライズド・ビュー作成 create materialized view materialized_view_name refresh complete on demand as select FieldA as OtherTableFieldA, FieldB as OtherTableFieldB, FieldC as OtherTableFieldC from OtherTable@ServiceName; 完全リフレッシュ execute dbms_mview.refresh('materialized_view_name','c'); 高速リフレッシュ execute dbms_mview.refresh('materialized_view_name','f'); 前回リフレッシュ日時を取得する。 †alter session set nls_date_format = 'YYYYMMDD HH24:MI:SS'; select mview_name, last_refresh_date from user_mviews; 前回のリフレッシュが高速リフレッシュか確認する。 †select mview_name, LAST_REFRESH_TYPE from user_mviews; FAST なら OK!
ORA-01723: zero-length columns are not allowed エラー †もとのテーブルになく、MView に必要なフィールドに NULL を指定すると発生する。 固定文字列や、数値などを指定しエラーを回避する。 (データの型がわからないのだから当然と言えば当然。ただ「データの型が不明です。」というようなもう少しわかりやすいメッセージにしてほしいものだ。) 悪い例 create materialized view materialized_view_name refresh complete on demand as select FieldA as OtherTableFieldA, FieldB as OtherTableFieldB, NULL as OtherTableFieldC from OtherTable@ServiceName; 修正例 create materialized view materialized_view_name refresh complete on demand as select FieldA as OtherTableFieldA, FieldB as OtherTableFieldB, ' ' as OtherTableFieldC from OtherTable@ServiceName; |