2009-07-13 18 views
2

Oracle 10gの表領域はほぼ100%使用されています。Oracle 10g - 表スペースのスペースを解放できません

サイズ(MB)=その表領域に関連付けられているスキーマに属するテーブルで使用571,768.0
(MB)=レコードの私はちょうど削除571,534.0

(およびコミット)何千人。驚くべきことに、Enterprise ManagerのTablespacesページに応じてスペースが解放されませんでした。

質問:Oracleに削除されたレコードに対応するスペースを強制的に解放する必要がありますか?

+0

私は – skaffman

答えて

5

表示されているスペースは、表スペースのSEGMENTSです。

A表領域にはセグメントが含まれています。各セグメントは、インデックスまたはテーブルに関連付けられています。セグメントにはextendが含まれ、extendにはブロックが含まれます。テーブルの場合、ブロックには行が含まれます。

テーブル上の行を削除すると、行に割り当てられたスペースが解放されますが、新しいセグメントのスペースは同じになります。 "combine all contiguous free extents into larger contiguous extents"

ALTER TABLESPACE xxx COALESCE; 

または

ALTER TABLE xxx MOVE; 

最初のものを以下となります。あなたが試すことができ、このスペースを解放するために

。構成によっては、Oracleによって自動的に実行されます。また、セグメント上のハイウォーターマークとの相対的なデータの位置があるため、それほどフリーではないかもしれません。

第2のもの"lets you relocate data of a nonpartitioned table or of a partition of a partitioned table into a new segment, optionally in a different tablespace, and optionally modify any of its storage attributes."。これを達成するには空き領域が必要であるため、別の表領域に対して実行したり、データファイルを追加したりする必要があります。

0

インデックスを再構築してください。あなたはOracle 10gまたはそれ以上を使用している場合

+1

と思っています。これは、データスペースに比べてそれほど多くはないインデックス用の空き領域だけです。 – FerranB

+2

正しい回答が「索引を再構築する」という質問は、Oracleにはほとんどありません。 – APC

1

は、コマンド

purge recylebin 

、あるいはこれは解放すべき

purge tablespace 

を使用して、表領域に関連した内容を消去を使用してごみ箱を削除することができますスペースが削除されていますが、まだ利用できない場合、指定された表スペースにスペースストレスが発生した場合、これが自動的に使用可能になることに注意してください。

さらに、セグメントアドバイザーを使用して、「縮小」して簡単にスペースを再利用できるすべてのセグメントを見つけることができます。
Segment Shrink

そして、あなたは他の属性を維持しながら、これは、できるだけ多くのスペースを解放しますローカル管理表領域

Alter Tablespace tablespace_name shrink space 

で使用することができ、最後の1で続きを読みます。

関連する問題