oracle10g段管理手动,oracle10g之shrink

本文详细介绍了Oracle数据库中关于表、索引、分区等对象的收缩操作,包括COMPACT和SHRINKSPACE命令的区别和使用场景。讨论了如何通过ALTER TABLE和ALTER INDEX语句来管理空间,以及在执行收缩操作时需要注意的限制和最佳实践,例如对ROWMOVEMENT属性、触发器的管理以及对大表删除列的方法。
摘要由CSDN通过智能技术生成

shrink

表的收缩语句让你手动收缩表、索引组织表、索引、分区、子分区、物化视图、物化视图日志。收缩语句只是对段的自动管理的对象有用。而段的自动管理的对象一定是在本地管理的表空间中。默认情况下,oracle会压缩段,调整hwm,立即释放可以复原的空间。

收缩段的空间需要启动对象的row movement属性。另外如果你的系统中有基于rowid的触发器,只执行该语句前应该禁用该触发器。

COMPACT

如果指定compat,为了接下来的空间释放,oracel只是使用碎片整理程序整理段的空间,使表的行更加的紧凑。数据库并不会理解减低hwm,也不会立即释放空间。我们必须之后执行alter table xx shrink space语句去完成这个操作。该语句如果想使用多步完成shrink操作,而不想一步操作时间过长时非常有用。

对于索引和索引组织表而言,指定alter index|table .. shrink space compat语句就等同于指定alter index|table coalesce。shrink语句可以指定cascade,可以使使用coalesce的段更加紧凑,这样可以提高性能。但是如果我们不想释放没有使用的空间,我们可以使用coalesce语句。

cascade

如果指定cascade,那么oracle将该表相关联的对象,如索引等一起shrink了,包括索引组织表的二级索引也是如此。

shrink语句的限制:

1)对簇、簇表、以及任何含有long列的对象无法使用shrink

2)LOB段不支持shrink,即使对表shrink时指定了cascade语句

3)对有函数索引的表不至此

4)即使指定cascade语句,也不会shrink mapping表(映射表),索引组织表的over flow segment.

5)如果一个是on commit物化视图的主表,那么我们是无法shrink这张表的。如果shrink rowid的物化视图,在shrink之后必须rebuild。

注意:在高可用环境下,要注意使用

alter index|table .. shrink space compat,只是移动了数据的位置,使数据更加的紧凑,但是并不移动hwm,而在这个操作期间,对该表是可以进行dml操作的。alter index|table .. shrink space语句是减低hwm位置。

同样的道理:在大表中我们如何去删除一个列呢?

首先我们应该先使该表的列为unused,然后再drop该列。这样也是为了提高该表的可用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值