今回、表領域に断片化を発生させてみます。

select TABLESPACE_NAME, FILE_ID, BLOCK_ID, BYTES/1024/1024
  from USER_FREE_SPACE
 where TABLESPACE_NAME = 'BIG_TBS' ;

TABLESPACE_NAME                   FILE_ID   BLOCK_ID BYTES/1024/1024
------------------------------ ---------- ---------- ---------------
BIG_TBS                                 7      68608              14

select SUM(BYTES)/1024/1024
from USER_SEGMENTS
where TABLESPACE_NAME = 'BIG_TBS' ;

SUM(BYTES)/1024/1024
--------------------
                 535


現在、14MBの空き、535MBの使用量があります。

drop table TAB2 ;
drop table TAB5 ;
purge recyclebin ;


そのような状態で前回作成したそれぞれ100MBの表、TAB2、TAB5を削除します。

select SUM(BYTES)/1024/1024
from USER_SEGMENTS
where TABLESPACE_NAME = 'BIG_TBS' ;

SUM(BYTES)/1024/1024
--------------------
                 321

もう1回使用領域を確認すると・・・
100MB*2+7MB*2(主キー索引)=214MBが減りました。

select TABLESPACE_NAME, FILE_ID, BLOCK_ID, BYTES/1024/1024
  from USER_FREE_SPACE
 where TABLESPACE_NAME = 'BIG_TBS' ;

TABLESPACE_NAME                   FILE_ID   BLOCK_ID BYTES/1024/1024
------------------------------ ---------- ---------- ---------------
BIG_TBS                                 7      12928             100
BIG_TBS                                 7      51328             100
BIG_TBS                                 7      65024               7
BIG_TBS                                 7      67712              21


しかし、空き領域の発生している箇所を確認してみると・・・
12928ブロックから100MB(128ブロック)分
51328ブロックから100MB(128ブロック)分
→これは表の部分です。
65024ブロックから7MB
67712ブロックから21MB
→これは主キー索引の部分です。

それぞれ離れ離れの領域が空き領域になっています。
これが断片化の状態です。

次回はこの断片化した領域を解消させてみます。