Summary: in this tutorial, you will learn how to remove a tablespace from the database by using the Oracle DROP TABLESPACE
statement.
Introduction to Oracle DROP TABLESPACE statement
The DROP TABLESPACE
allows you to remove a tablespace from the database. Here is the basic syntax of the DROP TABLESPACE
statement:
DROP TABLESPACE tablespace_name
[INCLUDING CONTENTS [AND | KEEP] DATAFILES]
[CASCADE CONSTRAINTS];
Code language: SQL (Structured Query Language) (sql)
In this syntax:
- First, specify the name of the tablespace that you want to drop after the
DROP TABLESPACE
keywords. - Second, use the
INCLUDE CONTENTS
to delete all contents of the tablespace. If the tablespace has any objects, you must use this option to remove the tablespace. Any attempt to remove a tablespace that has objects without specifying theINCLUDING CONTENTS
option will result in an error. - Third, use
AND DATAFILES
option to instruct Oracle to delete the datafiles of the tablespace andKEEP DATAFILES
option to leave the datafiles untouched. - Fourth, if the tablespace has objects such as tables whose primary keys are referenced by referential integrity constraints from tables outside the tablespace, you must use the
CASCADE CONSTRAINTS
option to drop these constraints. If you omit theCASCACDE CONSTRAINTS
clause in such situations, Oracle returns an error and does not remove the tablespace.
You can use the DROP TABLESPACE
to remove a tablespace regardless of whether it is online or offline. However, it’s good practice to take the tablespace offline before removing it to ensure that no sessions are currently accessing any objects in the tablespace.
Note that you cannot drop the SYSTEM
tablespace and only can drop the SYSAUX
tablespace when you start the database in the MIGRATE
mode.
You need to have the DROP TABLESPACE
system privilege to execute the DROP TABLESPACE
statement. To drop the SYSAUX
tablespace, you need to have the SYSDBA
system privilege.
Oracle DROP TABLESPACE statement examples
Let’s take some examples of using the DROP TABLESPACE
statement.
1) Using Oracle DROP TABLESPACE to remove an empty tablespace example
First, create a new tablespace named tbs1
:
CREATE TABLESPACE tbs1
DATAFILE 'tbs1_data.dbf'
SIZE 10m;
Code language: SQL (Structured Query Language) (sql)
Second, use the DROP TABLESPACE
to remove the tbs1
tablespace:
DROP TABLESPACE tbs1;
Code language: SQL (Structured Query Language) (sql)
2) Using Oracle DROP TABLESPACE to remove a non-empty tablespace example
First, create a new tablespace named tbs2
:
CREATE TABLESPACE tbs2
DATAFILE 'tbs2_data.dbf'
SIZE 5m;
Code language: SQL (Structured Query Language) (sql)
Second, create a new table t2
in the tablespace tbs2
:
CREATE TABLE t2 (
c1 INT
) TABLESPACE tbs2;
Code language: SQL (Structured Query Language) (sql)
Third, use the DROP TABLESPACE
statement to drop the tbs2
tablespace:
DROP TABLESPACE tbs2;
Code language: SQL (Structured Query Language) (sql)
Oracle issued the following error:
ORA-01549: tablespace not empty, use `INCLUDING CONTENTS` option
Code language: SQL (Structured Query Language) (sql)
To drop the tbs2
tablespace, we need to use the INCLUDING CONTENTS
option:
DROP TABLESPACE tbs2
INCLUDING CONTENTS;
Code language: SQL (Structured Query Language) (sql)
Oracle issued the following message indicating that the tablespace has been dropped:
Tablespace dropped.
Code language: SQL (Structured Query Language) (sql)
3) Using Oracle DROP TABLESPACE to remove a tablespace whose tables are referenced by referential constraints
First, create two tablespaces named tbs3
and tbs4
:
CREATE TABLESPACE tbs3
DATAFILE 'tbs3_data.dbf'
SIZE 5m;
CREATE TABLESPACE tbs4
DATAFILE 'tbs4_data.dbf'
SIZE 5m;
Code language: SQL (Structured Query Language) (sql)
Next, create a new table in the tbs3
tablespace:
CREATE TABLE t3(
c1 INT PRIMARY KEY
) TABLESPACE tbs3;
Code language: SQL (Structured Query Language) (sql)
Then, create a new table in the tbs4
tablespace:
CREATE TABLE t4(
c1 INT PRIMARY KEY,
c2 INT NOT NULL,
FOREIGN KEY(c2) REFERENCES t3(c1)
) TABLESPACE tbs4;
Code language: SQL (Structured Query Language) (sql)
After that, drop the tablespace tbs3
:
DROP TABLESPACE tbs3
INCLUDING CONTENTS;
Code language: SQL (Structured Query Language) (sql)
Oracle issued the following error:
ORA-02449: unique/primary keys in table referenced by foreign keys
Code language: SQL (Structured Query Language) (sql)
Finally, use the DROP TABLESPACE
that includes the CASCADE CONSTRAINTS
option to drop the tablespace:
DROP TABLESPACE tbs3
INCLUDING CONTENTS AND DATAFILES
CASCADE CONSTRAINTS;
Code language: SQL (Structured Query Language) (sql)
It worked as expected.
In this tutorial, you have learned how to use the Oracle DROP TABLESPACE
statement to remove a tablespace from the database.