How to Renaming and Dropping Tablespace in Oracle DBA
Using the rename to clause of the alter tablespace, you can rename a permanent or temporary tablespace. For example, the following statement renames the users tablespace:
Sql>alter tablespace users rename to usersts;
When you rename a tablespace, the database updates all references to the tablespace name in the data dictionary, control file, and (online) datafile headers. The database does not change the tablespace id so if this tablespace were, for example, the default tablespace for a user, then the renamed tablespace would show as the default tablespace for the user in the dba_users view.
The following affect the operation of this statement:
- The compatible parameter must be set to 10.0 or higher.
- If the tablespace being renamed is the system tablespace or the sysaux tablespace, then it will not be renamed and an error is raised.
- If any datafile in the tablespace is offline, or if the tablespace is offline, then the tablespace is not renamed and an error is raised.
- If the tablespace is read only, then datafile headers are not updated. This should not be regarded as corruption; instead, it causes a message to be written to the alert log indicating that datafile headers have not been renamed. The data dictionary and control file are updated.
- If the tablespace is the default temporary tablespace, then the corresponding entry in the database properties table is updated and the database_properties view shows the new name.
- If the tablespace is an undo tablespace and if the following conditions are met, then the tablespace name is changed to the new tablespace name in the server parameter file (spfile).
- The server parameter file was used to start up the database.
- The tablespace name is specified as the undo_tablespace for any instance.
If a traditional initialization parameter file (pfile) is being used then a message is written to the alert log stating that the initialization parameter file must be manually changed.
You can drop a tablespace and its contents (the segments contained in the tablespace) from the database, if the tablespace and its contents are no longer required. You must have the drop tablespace system privilege to drop a tablespace.
Once a tablespace has been dropped, the data in the tablespace is not recoverable. Therefore, make sure that all data contained in a tablespace to be dropped will not be required in the future. Also, immediately before and after dropping a tablespace from a database, back up the database completely. This is strongly recommended so that you can recover the database if you mistakenly drop a tablespace, or if the database experiences a problem in the future after the tablespace has been dropped.
When you drop a tablespace, the file pointers in the control file of the associated database are removed. You can optionally direct oracle database to delete the operating system files (datafiles) that constituted the dropped tablespace. If you do not direct the database to delete the datafiles at the same time that it deletes the tablespace, you must later use the appropriate commands of your operating system to delete them.
You cannot drop a tablespace that contains any active segments. For example, if a table in the tablespace is currently being used or the tablespace contains undo data needed to roll back uncommitted transactions, you cannot drop the tablespace. The tablespace can be online or offline, but it is best to take the tablespace offline before dropping it.
To drop a tablespace, use the drop tablespace statement. The following statement drops the users tablespace, including the segments in the tablespace:
Sql>drop tablespace users including contents;
If the tablespace is empty (does not contain any tables, views, or other structures), you do not need to specify the including contents clause. Use the cascade constraints clause to drop all referential integrity constraints from tables outside the tablespace that refer to primary and unique keys of tables inside the tablespace.
To delete the datafiles associated with a tablespace at the same time that the tablespace is dropped, use the including contents and datafiles clause. The following statement drops the users tablespace and its associated datafiles:
Sql>drop tablespace users including contents and datafiles;
A message is written to the alert log for each datafile that is deleted. If an operating system error prevents the deletion of a file, the drop tablespace statement still succeeds, but a message describing the error is written to the alert log.