Oracle/検証

MLOGの件数が残ってる状態でtruncate後、高速リフレッシュが出来る

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

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
Last-modified: 2015-07-19 (日) 22:17:30 (1931d)