How to retrieve disk spaces by removing tables from tablespaces in Oracle 10g

oracleoracle-10goracle-11g-r2

I'm using a Oracle 10g database.
I have a big tablespace MYTBS made of a dozen data files (MYTBS_01, MYTBS_02, …) of different sizes which have been added through the years.

Now i have removed very big tables from this tablespace and i would like to retrieve disk space on the server.

How can i be able to free up space/blocks from the tablespace ?

Best Answer

You need to shrink the data files, which can be tricky.

However, possibly the easier method to describe and implement is to create a new tablespace of approximately the right size, use ALTER TABLE to move the table segments, and ALTER INDEX to rebuild the indexes in the new tablespace. When the old tablespace is empty of objects you can drop it.

Oracle Enterprise Manager can do this automatically for you. This is described in detail in this post: http://www.oracle-base.com/articles/misc/reclaiming-unused-space.php#em_reorg