REDO生成量を確認する

DML(insert、update など)や DDL(create、drop など)で、
REDO ログの生成量を確認したい場合、動的パフォーマンスビューの
v$sysstat を参照することでおおよそのサイズがわかる。

ただし計測中に別セッションで SQL が実行された場合、
値がブレてしまうので、極力占有状態で実施すべきである。
ただでさえ、Oracle 内部で生成している REDO の影響を受けて、誤差があるので。

v$sysstat定義

REDO サイズは v$sysstat を参照する

SQL> desc v$sysstat

 名前       NULL?    型
 ---------- ------ ------------
 STATISTIC#        NUMBER
 NAME              VARCHAR2(64)
 CLASS             NUMBER
 VALUE             NUMBER
 STAT_ID           NUMBER

事前確認

SQL> select * from v$sysstat where name = 'redo size';

STATISTIC# NAME      CLASS VALUE      STAT_ID
---------- --------- ----- ---------- ----------
       146 redo size     2 1832889420 1236385760

SQL実行

SQL> drop table hoge;

表が削除されました。

事後確認

SQL> select * from v$sysstat where name = 'redo size';

STATISTIC# NAME      CLASS VALUE      STAT_ID
---------- --------- ----- ---------- ----------
       146 redo size     2 1832895656 1236385760

1832895656 – 1832889420 = 6236
この例では、6KB 程度の REDO ログが生成されたということになる。

なお、手動では精度が低いため、上記の流れをシェルやバッチに
組み込んで検証したほうがよい。

関連記事