作者:雨竹清风
如果想删除一个表空间可以使用命令来删除,当然有不能删除的表空间,如:系统表空间,上面有活动段的表空间。
删除表空间的命令如下:drop tablespace 表空间名 [including contents] [and datafiles] [cascade constraints]
注:
including contents表示删除所包含的的段
and datafiles表示删除所包含的数据文件
cascade constraints表示删除所有的级联等数据完整性约束
示例如下:
1.查询数据字典dba_data_files结构
SQL> desc dba_data_files;
名称 是否为空? 类型
----------------------------- -------- -------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)
2.查询表空间的具体情况
SQL> col file_name for a61
SQL> col tablespace_name for a15
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
----------------------------------------------------- ---------------
C:\DISK3\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
C:\DISK4\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\FANLU_TABLESPACE.DBF FANLU
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XIXI.DBF LULU
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN.DBF XUANXUAN
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN02.DBF XUANXUAN
已选择9行。
3.选择删除的表空间,进行删除
SQL> drop tablespace LULU;
表空间已删除。
4.查询是否已经删除成功
SQL> col file_name for a61
SQL> col tablespace_name for a15
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
--------------------------------------------------------- ---------------
C:\DISK3\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
C:\DISK4\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\FANLU_TABLESPACE.DBF FANLU
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN.DBF XUANXUAN
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN02.DBFXUANXUAN
已选择8行。
从结果看已经删除成功,但是这仅仅删除的是指向该表空间的指针,需要手动删除物理文件。
5.如果需要一起删除物理文件需要加上子句,如下所示:
SQL> drop tablespace FANLU including contents and datafiles;
表空间已删除。
查询是否成功删除
SQL> col file_name for a61
SQL> col tablespace_name for a15
SQL> select file_name,tablespace_name from dba_data_files;
FILE_NAME TABLESPACE_NAME
-------------------------- ------------------------------- ---------------
C:\DISK3\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
C:\DISK4\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN.DBF XUANXUAN
D:\ORACLE\PRODUCT\10.2.0\USER_TABLESPACE\XUANXUAN02.DBF XUANXUAN
已选择7行。
查看物理文件,也一并删除了。