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提供了多种方法,可以实现空间的回收,使其可以得到充分利用。 考虑到系统的要求,应该有一定的清理规则,如定期收缩表空间,利用官方提供的脚本管理空间状况等,这样可以确保空间不会产生多余的或碎片,使之得到充分利用。


数据运维技术 » Oracle 回收空间:让空间得到充分利用(oracle回收空间)