drop
执行drop table xx 语句
drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。
清除回收站里的信息
清除指定表:purge table <table_name>;
清除当前用户的回收站:purge recyclebin;
清除所有用户的回收站:purge dba_recyclebin;
不放入回收站,直接删除则是:drop table xx purge;
truncate
例如:truncate table XX
Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
truncate table 后,有可能表空间仍没有释放,可以使用如下语句:
alter table 表名称 deallocate UNUSED KEEP 0;
注意如果不加KEEP 0的话,表空间是不会释放的。
例如:
alter table F_MINUTE_TD_NET_FHO_B7 deallocate UNUSED KEEP 0;
或者:
TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能释放表空间。
例如: truncate table test1 DROP STORAGE;
收缩物理文件大小
alter database datafile '/data/xxx.dbf' resize 50M;
查看表空间物理文件
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;
查看物理文件实际使用硬盘大小
select f.name, max(block_id)*8/1024/1024 from dba_extents e join v$datafile f on e.file_id=f.file# group by f.name order by name;