私
REDOログファイルってどのタイミングで出力されるんだっけ?
結論から言うと、REDO はコミット・未コミット関係なく生成される。
なのでコミットをしなくても INSERT、UPDATE、DELETE 実行後は REDO は出力される。
REDO のサイズは以下の SQL で確認が可能なので、REDO のサイズの動きを見ながら、何をトリガーに REDO が増えるのかを確認することができる。
select name,value from v$sysstat where name = 'redo size';
実際に INSERT、UPDATE、DELETE 実行後にどのように REDO が増えるのかを確認してみた。
実行例
SQL> create table test (c varchar2(20));
表が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select name,value from v$sysstat where name = 'redo size';
NAME VALUE
---------------------------------------------------------------- ----------
redo size 5716000
SQL> insert into test values('aaa');
1行が作成されました。
SQL> select name,value from v$sysstat where name = 'redo size';
NAME VALUE
---------------------------------------------------------------- ----------
redo size 5725172
SQL> update test set c = 'bbb' where c = 'aaa';
1行が更新されました。
SQL> select name,value from v$sysstat where name = 'redo size';
NAME VALUE
---------------------------------------------------------------- ----------
redo size 5759072
SQL> delete from test where c = 'bbb';
1行が削除されました。
SQL> select name,value from v$sysstat where name = 'redo size';
NAME VALUE
---------------------------------------------------------------- ----------
redo size 5776704
SQL> commit;
コミットが完了しました。
SQL> select name,value from v$sysstat where name = 'redo size';
NAME VALUE
---------------------------------------------------------------- ----------
redo size 5776844
REDO サイズが増加しているのが確認できるため、コミットに関係なく REDO が出力されているということがわかる。