用途
deallocate_unused_clause
を使用すると、データベース・オブジェクト・セグメントの終わりにある未使用領域の割当てを明示的に解除し、解放された領域を表領域の他のセグメントで使用できるようになります。
未使用領域の割当ては、次の文で解除できます。
ALTER
CLUSTER
(「ALTER CLUSTER」を参照)
ALTER
INDEX
: 未使用領域の割当てを索引、索引パーティションまたは索引サブパーティションから解除する場合(「ALTER INDEX」を参照)
ALTER
MATERIALIZED
VIEW
: 未使用領域の割当てを索引構成マテリアライズド・ビューのオーバーフロー・セグメントから解除する場合(「ALTER MATERIALIZED VIEW」を参照)
ALTER
TABLE
: 未使用領域の割当てを表、表パーティション、表サブパーティション、索引構成表のマッピング表、索引構成表のオーバーフロー・セグメントまたはLOB記憶域セグメントから解除する場合(「ALTER TABLE」を参照)
セマンティクス
この項では、deallocate_unused_clause
のセマンティクスについて説明します。詳細は、特定のデータベース・オブジェクトに対してこの句を設定または再設定するSQL文の説明を参照してください。
同じ文でdeallocate_unused_clause
とallocate_extent_clause
の両方を指定することはできません。
最高水位標を超える(データベース・ブロックがデータを受け取るためにフォーマットされていない)未使用領域のみ解放できます。未使用領域の割当て解除は、オブジェクトの終わりから開始し、オブジェクトの先頭にある最高水位標に向かって進行します。
エクステントが割当て解除の範囲内に完全に含まれる場合、エクステント全体が解放されて再利用可能となります。エクステントの一部が含まれる場合、最高水位標までのすでに使用されている部分がエクステントになり、残りの未使用領域が解放されて再利用可能になります。
割当てが解除される表領域のユーザー割当て制限は、解放される領域の量のみ増加します。
解放される領域の実際の量は、INITIAL
、MINEXTENTS
およびNEXT
記憶域パラメータによって異なります。これらのパラメータの詳細は、「storage_clause」を参照してください。
KEEP integer
割当て解除後に、データベース・オブジェクトのセグメントが保持する、最高水位標を超えるバイト数を指定します。
KEEP
を指定しなかった場合に、最高水位標がINITIAL
およびMINEXTENTS
のサイズを超えると、最高水位標を超えるすべての未使用領域が解放されます。最高水位標がINITIAL
またはMINEXTENTS
のサイズより小さい場合は、MINEXTENTS
を超えるすべての未使用領域が解放されます。
KEEP
オプションを指定した場合、指定した量の領域が保持され、残りの領域のみが解放されます。このとき、残りのエクステント数がMINEXTENTS
より小さくなった場合、MINEXTENTS
はそのエクステント数に変更されます。また、初期エクステントがINITIAL
より小さくなった場合、INITIAL
がそのサイズに変更されます。
どちらの場合にも、NEXT
記憶域パラメータの値は、割当て解除された最後のエクステントのサイズに設定されます。