如何在Oracle DBMS 9i中删除数据并释放磁盘空间

前端之家收集整理的这篇文章主要介绍了如何在Oracle DBMS 9i中删除数据并释放磁盘空间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道通常会从Oracle 9i DBMS中删除数据,这实际上可以释放磁盘空间.在过去的情况下,我们遇到了清理1-2百万行数据并未转化为磁盘空间使用量减少的情况.

场景:

sqlplus > delete from audit_log where date_created between today and the day before;

sqlplus > 2 million records deleted.

bash$: du -sh (after issuing the delete above)

结果没有更改磁盘空间使用情况.

这也引出了我的问题,是否需要刷新表以便oracle完全删除所有删除DML所删除的数据

在Oracle中,从表中删除行不会自动释放任何磁盘空间.可以释放磁盘空间,但要完成此操作,您必须了解表格在数据文件中的实际放置方式.只要数据文件末尾有空块,就可以将数据文件的大小调整为较小的大小.只有在此之后 – 成功 – 操作才能获得真正的磁盘空间.
如果数据文件中有很多空块但最后没有,那么最简单的方法是将表从数据文件所属的表空间移动到新的表空间中并删除旧的表空间.这不适用于SYSTEM表空间,不允许将SYS对象移动到其他表空间.

有时你很幸运,因为它被放置在数据文件的末尾,你只能移动一个小的表,这个表恰好阻塞了释放空间.在这种情况下,一个简单的改变表可以移动;将重新定位该表并在数据文件末尾创建可回收空间[s].之后,更改数据库数据文件’/your/df/name.dbf’调整the_new_size;释放磁盘空间.

表格逻辑上放在表空间中.表空间由最小的1个数据文件组成,在许多情况下包含多个数据文件.

猜你在找的Oracle相关文章