RE: How do I drop a tablespace and reclaim disk space

RE: How do I drop a tablespace and reclaim disk space

 

  

Please refer to Oracle manual - dropping objects are standard procedure
and this is something that you should look up yourself -
however you will need to remove any datafiles that may have been
created on the OS level. You do not state the OS or platform.

????

OK I didn't want to make this a 1-800-DO MY JOB thing- But here is the
whole ball of wax - Please read

If the datafile you wish to remove is the only datafile in that
tablespace, you can simply drop the entire tablespace using the
following:
DROP TABLESPACE <tablespace name> INCLUDING CONTENTS;
The above command will remove the tablespace, the datafile, and the
tablespace's contents from the data dictionary. All of the objects that
where contained in that tablespace are permanently removed. One point to
keep in mind is that Oracle will not drop the physical datafile after
the DROP TABLESPACE command. This action needs to be performed at the
operating system. Depending on the OS, you may have to completely shut
down (For example, on Windows NT, you may have to shutdown Oracle AND
stop the associated service before the operating system will allow you
to delete the file - in some cases, file locks are still held by Oracle)

If you have more than one datafile in the tablespace, and you do not
need the information contained in that tablespace, or if you can easily
recreate the information in this tablespace, then use the same command
as above:

DROP TABLESPACE <tablespace name> INCLUDING CONTENTS;
Again, this will remove the tablespace, the datafiles, and the
tablespace's contents from the data dictionary. Oracle will no longer
have access to any object that was contained in this tablespace. You can
then use CREATE TABLESPACE and re-import the appropriate objects back
into the tablespace.

If you have more than one datafile in the tablespace and you wish to
keep the objects that reside in the other datafile(s) which are part of
this tablespace, then you must export all the objects inside the
tablespace. Gather information on the current datafiles within the
tablespace by running the following query in SQL*Plus:
SELECT
file_name
, tablespace_name
FROM
dba_data_files
WHERE
tablespace_name ='<name of tablespace>';

Make sure you specify the tablespace name in capital letters.
You now need to identify which objects are inside the tablespace for the
purpose of running an export. To do this, run the following query:

SELECT
owner
, segment_name
, segment_type
FROM
dba_segments
WHERE
tablespace_name='<name of tablespace>'

Now, export all the objects that you wish to keep.
Once the export is done, issue the DROP TABLESPACE <tablespace name>
INCLUDING CONTENTS.

Note that this PERMANENTLY removes all objects in this tablespace.
Delete the datafiles belonging to this tablespace using the operating
system (see the comment above about possible problems in doing this)
Recreate the tablespace with the datafile(s) desired, then import the
objects into that tablespace. (This may have to be done at the table
level, depending on how the tablespace was organized.)

Oracle LazyDBA home page