SELECT
TABLE_NAME,
NUM_ROWS,
AVG_ROW_LEN,
BLOCKS,
EMPTY_BLOCKS,
CASE AVG_ROW_LEN
WHEN NULL THEN NULL
WHEN 0 THEN 0
ELSE (CEIL(NUM_ROWS / TRUNC(((BLOCK_SIZE - KCBH - UB4 - KTBBH - (INI_TRANS - 1) * KTBIT - KDBH) * (100 - PCT_FREE) / 100 - KDBT) / AVG_ROW_LEN)) + 1) END EST_BLOCKS
FROM
DBA_TABLES
,(SELECT TYPE_SIZE KCBH FROM V$TYPE_SIZE WHERE TYPE = 'KCBH') --ブロックヘッダー
,(SELECT TYPE_SIZE UB4 FROM V$TYPE_SIZE WHERE TYPE = 'UB4') --ブロックヘッダー
,(SELECT TYPE_SIZE KTBBH FROM V$TYPE_SIZE WHERE TYPE = 'KTBBH') --ブロックヘッダー
,(SELECT TYPE_SIZE KTBIT FROM V$TYPE_SIZE WHERE TYPE = 'KTBIT') --ブロックヘッダー
,(SELECT TYPE_SIZE KDBH FROM V$TYPE_SIZE WHERE TYPE = 'KDBH') --ブロックヘッダー
,(SELECT TYPE_SIZE KDBT FROM V$TYPE_SIZE WHERE TYPE = 'KDBT') --ブロックヘッダー
,(SELECT VALUE BLOCK_SIZE FROM V$PARAMETER WHERE NAME = 'db_block_size')
WHERE OWNER = 'SYS'
AND TABLE_NAME = 'AUD$'
ORDER BY BLOCKS DESC;
【出力例】
TABLE_NAME ROW_NUMS AVG_ROW_LEN BLOCKS EMPTY_BLOCKS EST_BLOCKS
--------------- ------------- ----------------- --------- ------------- -------------
AUD$ 101 166 4765 0 4
NUM_ROWS 行数
AVG_ROW_LEN 平均行サイズ
BLOCKS 空きブロック数
EST_BLOCKS 行数と平均行サイズから算出した推定必要ブロック数