Oracle 回收空间:让空间得到充分利用(oracle回收空间)
Oracle数据库的设计使得空间得到充分利用,冗余也有均衡的处理,有必要清除垃圾才能尽可能的腾出空间,这就是Oracle回收空间存在的意义。
首先,要想回收空间,需要将 Oracle 数据库中的表空间中的碎片整理好,Oracle 提供了2种方式:
1、使用 ALTER TABLE 命令来实现对表空间的回收。
例如,如果想回收名为myschema.mytable的表中的碎片,可以运行:
ALTER TABLE myschema.mytable SHRINK SPACE;
2、使用 DBMS_SPACE_ADMIN 包来回收碎片。
例如,清除表空间mytbs的碎片,可以运行以下语句:
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_RECOVER_SPACE(‘MYTBS’);
其次,可以使用DBMS_SPACE_ADMIN自动清理空闲空间。
将表空间mytbs收缩为最小可用容量,可以使用:
EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIN_RESIZE(‘MYTBS’,200);
大部分情况下,只需执行以上2种操作就可回收空间。但是,当我们要把不再使用的表删除时,可以通过收缩表空间来初步回收空间,然后再删除表。
特别是在设计应用程序时,应该充分考虑回收空间的问题,以便让空间得到充分的使用。
另外,Oracle官方也提供了一些脚本来帮助实现空间的回收,比如:
SELECT ‘EXEC DBMS_SPACE_ADMIN.TABLESPACE_RECLAIM_SPACE(”’||tablespace_name||”’);’
FROM dba_tablespaces;
此脚本将显示所有表空间的回收空间SQL,收藏起来可也作为维护脚本全面检测表空间状态,回收多余空间。只要执行对应SQL,就可迅速回收空间了。
总之,Oracle提供了多种方法,可以实现空间的回收,使其可以得到充分利用。 考虑到系统的要求,应该有一定的清理规则,如定期收缩表空间,利用官方提供的脚本管理空间状况等,这样可以确保空间不会产生多余的或碎片,使之得到充分利用。