oracle 如何释放磁盘空间
的有关信息介绍如下:Oracle是一种大型商业数据库,在长时间及各种数据库操作后,会占用大量的存储空间,那么该如何释放这些存储空间呢?
在Oracle数据库中使用SQL语言进行数据的相关处理,比如删除,不会直接释放相应的存储空间,需要单独处理
对于存储空间的占用,Oracle中一般包括表信息、表中的数据、分区表等几类,一般的删除语句不会彻底释放存储空间
针对表信息的处理,执行drop table xx 语句,相应的表会被放到回收站(user_recyclebin)中,彻底删除释放空间,需要执行drop table xx purge语句,如:
drop table testTable purge;
针对表中的数据,一般我们使用truncate table 语句进行删除,但此语句只是把表里的信息全部删除,但是表依然存在,表空间依然没有释放,需要执行如下语句保证彻底释放表空间:
alter table 表名称 deallocate UNUSED KEEP 0;
注意:必须加KEEP 0,否则表空间是不会释放的
针对分区表,常用的语句是alter table 表名称 truncate partition 分区名称;但使用此语句,仅清除指定分区表的分区数据,要想彻底释放所占空间,需要执行如下语句:
alter table 表名称 DROP partition 分区名称;
可以看到,Oracle的常规清除语句都是带有一定的保护功能的,防止误删除,所以不会彻底释放相应空间,只有添加相应参数或者使用专门语句后才能彻底删除并释放空间