Oracle/検証 †MLOGの件数が残ってる状態でtruncate後、高速リフレッシュが出来る †MLOGの件数が残っている状態で、MLOGをtruncate実施。 SQL> @test.sql SQL> CREATE TABLE TEST ( PROD_ID NUMBER CONSTRAINT PK_TEST PRIMARY KEY); 表が作成されました。 SQL> CREATE MATERIALIZED VIEW FAST_MVIEW AS select * from TEST; マテリアライズド・ビューが作成されました。 SQL> CREATE MATERIALIZED VIEW LOG ON TEST; マテリアライズド・ビュー・ログが作成されました。 SQL> SQL> insert into TEST(PROD_ID) values('1'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> SQL> exec dbms_mview.refresh('FAST_MVIEW', 'C',atomic_refresh=>FALSE); PL/SQLプロシージャが正常に完了しました。 SQL> SQL> insert into TEST(PROD_ID) values('2'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> SQL> exec dbms_mview.refresh('FAST_MVIEW', 'F',atomic_refresh=>FALSE); PL/SQLプロシージャが正常に完了しました。 SQL> SQL> select * from MLOG$_TEST; レコードが選択されませんでした。 SQL> SQL> truncate table MLOG$_TEST; 表が切り捨てられました。 SQL> SQL> insert into TEST(PROD_ID) values('3'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> SQL> exec dbms_mview.refresh('FAST_MVIEW', 'F',atomic_refresh=>FALSE); PL/SQLプロシージャが正常に完了しました。 SQL> SQL> insert into TEST(PROD_ID) values('4'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> SQL> select * from MLOG$_TEST; PROD_ID SNAPTIME D O CHANGE_VECTOR$$ 4 00-01-01 I N FE SQL> truncate table MLOG$_TEST; 表が切り捨てられました。 SQL> SQL> exec dbms_mview.refresh('FAST_MVIEW', 'F',atomic_refresh=>FALSE); PL/SQLプロシージャが正常に完了しました。 SQL> select * from FAST_MVIEW; PROD_ID ---------- 1 2 3 SQL> |