I've searched the forums wanting to find as much information as I can about hight water mark and re-claiming unused space.
There seems to be two solutions:
2. 'alter table deallocate unused' command.
There is some discussion about 'deallocate unused' not always being able to re-gain unused space.
It is true?
Yes, it is true becuase, oracle does not allocate contiguous memory blocks. If the occupied block is just near the end, then shirnking the file does not really shrink. So, only the option will be export, recreate the tablespace and import with the right storage parameters.
Deallcate unused is only used when say for example a segment has allocated an extent of 1GB and occupies only 100 MB out of that. Now you can find other segments can only occupy the space beyond this 1GB. If you don't want this to happen then you can say Alter table...... Deallocate unsed so that the extent will shrink to only 100 MB that's been allocated for the segment.