当数据库中某个表空间不再需要或者是新创建的表空间不符合要求,这个时候我们就需要对表空间进行删除操作,那具体该如何删除呢?
表空间的删除要确保执行命令的用户具有DROP TABLESPACE权限,其次表空间的删除我们要区分是普通表空间还是分区表空间,两者是有一定区别的。
普通表空间删除:
Oracle 11g删除表空间语法描述:
DROP TABLESPACE tablespace_name [ including contents [ and datafiles ] [ CASCADE CONSTRAINT] ];
无选项 -- 当表空间为空才能删除;
tablespace_name —表示要删除的表空间名称;
including contents — 删除表空间及对象;
including contents and datafiles — 删除表空间、对象及数据文件;
including contents CASCADE CONSTRAINT — 删除当前表空间时也删除相关的完整性限制。完整性限制包括主键及唯一索引;
including contents and datafiles cascade constraint — 含前两项。
当然,我们可以用下面的生成脚本,批量生成删除表空间的脚本:
select drop tablespace ||tablespace_name|| including contents and datafiles cascade constraint; from dba_data_files where tablespace_name not in(SYSTEM,SYSAUX,USERS,EXAMPLE,UNDOTBS2,UNDOTBS1)
分区表空间删除
对于分区表空间,大家可以使用下面的万能脚本:
select alter table ||owner||.||segment_name|| drop partition ||partition_name|| ;from dba_segmentswhere segment_name in (select distinct segment_namefrom dba_segmentswhere tablespace_name = p1and segment_type like \%PART%)and tablespace_name <> p1;——p1表示表空间名称
执行后我们会得出类似下面的语句:
alter table CP.IDX_CP_REQUEST_TRAN_NO drop partition SYS_P199 ;alter table CP.TBL_CP_HANDLE drop partition SYS_P200 ;
想了解更多精彩内容,快来关注出彩职场人