Oracle - undo表領域サイズ取得
UNDO 表領域の使用率は、以下の通り計算します。
UNDO 表領域の使用率 =
([A] ACTIVE + UNEXPIRED のエクステントの合計サイズ)
/ *1
[A] ACTIVE + UNEXPIRED のエクステントの合計サイズ
ステータスが ACTVIE のエクステントは、何らかのトランザクションで使用中
の領域です。また、ステータスが UNEXPIRED のエクステントは、使用中の領
域ではありませんが、トランザクションの COMMIT 後に、UNDO_RETENTION や
TUNED_UNDORETENTION の時間が経過しておらず、リテンションが失効していな
い領域です。そのため、ORA-1555のエラーの発生を防止する観点から使用中の
領域であると考える必要があります。
このサイズは、以下の SQL 文で取得することができます。
SQL> select status, sum(bytes) from dba_undo_extents
where tablespace_name = '
and (status = 'ACTIVE' or status = 'UNEXPIRED') group by status;
(実行例)
----------------------------------------------------------------------
SQL> select status, sum(bytes) from dba_undo_extents
2 where tablespace_name = 'UNDOTBS1'
3 and (status = 'ACTIVE' or status = 'UNEXPIRED') group by status;
STATUS SUM(BYTES)
--------- ----------
UNEXPIRED 2097152
ACTIVE 261160960
----------------------------------------------------------------------
[B] EXPIRED のエクステントの合計サイズ
ステータスが EXPIRED のエクステントは、その領域を使用したトランザクショ
ンの COMMIT 後、UNDO_RETENTION や TUNED_UNDORETENTION の時間が経過し、
リテンションが失効している領域です。再利用可能な領域であるため、空き領
域と考えることが可能です。
このサイズは、以下の SQL 文で取得することができます。
SQL> select status, sum(bytes) from dba_undo_extents
where tablespace_name = '
group by status;
(実行例)
----------------------------------------------------------------------
SQL> select status, sum(bytes) from dba_undo_extents
2 where tablespace_name = 'UNDOTBS1' and status = 'EXPIRED'
3 group by status;
STATUS SUM(BYTES)
--------- ----------
EXPIRED 1519714304
----------------------------------------------------------------------
[C] 未割り当ての領域の合計サイズ
UNDO 表領域の空きエクステントです。UNDO 表領域としてはすでに確保されて
いる領域ですが、一度も領域が使用されていない、または、KROWN:64291 に記
載のある DROP や SHRINK の処理により開放されたことにより、エクステント
が未割り当てとなっている領域です。
このサイズは、以下の SQL 文で取得することができます。
SQL> select sum(BYTES) from dba_free_space
where tablespace_name = '
(実行例)
----------------------------------------------------------------------
SQL> select sum(BYTES) from dba_free_space
2 where tablespace_name = 'UNDOTBS1';
SUM(BYTES)
----------
5767168
----------------------------------------------------------------------
[D] データファイルとして拡張可能なサイズ
データファイルの自動拡張が有効(autoextend on)な場合に、データファイル
として拡張する余地がある領域です。ただし、データファイルの設定として自
動拡張が可能であっても、ディスクスペースに空きがない場合は、データファ
イルの拡張を行うことができないため、ディスクスペースに空き領域が存在し
ているか合わせて確認してください。
このサイズは、以下の SQL 文で取得することができます。
SQL> col BYTES for 999999999999
SQL> select maxbytes - bytes as bytes from dba_data_files
where tablespace_name = '
(実行例)
----------------------------------------------------------------------
SQL> col BYTES for 999999999999
SQL> select maxbytes - bytes as bytes from dba_data_files
2 where tablespace_name = 'UNDOTBS';
BYTES
-------------
32576094208
----------------------------------------------------------------------
*1:[A] ACTIVE + UNEXPIRED のエクステントの合計サイズ)
+ ([B] EXPIRED のエクステントの合計サイズ)
+ ([C] 未割り当ての領域の合計サイズ)
+ ([D] データファイルとして拡張可能なサイズ