*[[Oracle]]/検証 [#wbec652c]
#contents


** MLOGの件数が残ってる状態でtruncate後、高速リフレッシュが出来る [#h7686b02]
MLOGの件数が残っている状態で、MLOGをtruncate実施。~
完全リフレッシュじゃなきゃNGだと思いきや、高速リフレッシュが問題なくできるが大丈夫か?~

**実行結果 [#d8c47436]
 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>

トップ   編集 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS