ORA-10631: SHRINK clause should not be specified for this object

本文探讨了 Oracle 中 shrink 操作的限制及其与 altertablemove 的区别,包括适用场景、不可用的情况以及两者在执行过程中的不同特点。重点指出 shrink 操作的优势在于在线执行、使用 cascade 参数同时收缩表上索引、执行后索引不失效以及减少执行过程中所需的空间。同时,文章详细列举了 shrink 不适用于的情况,如 IOT 索引组织表、特定类型的视图和索引等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORA-10631: SHRINK clause should not be specified for this object

查询得知shrink的使用有很多限制,限制如下:

Shrink operations can be performed only on segments in locally managed tablespaces with automatic segment space management (ASSM). Within an ASSM tablespace, all segment types are eligible for online segment shrink except these:
■ IOT mapping tables
■ Tables with rowid based materialized views
■ Tables with function-based indexes    
■ SECUREFILE LOBs
■ Compressed tables

老外说的太别扭,个人翻译如下:
Shrink 操作需满足表空间是本地管理和自动段空间管理(10g、11g默认就是这样),以下情况不能用shrink:
IOT索引组织表
用rowid创建的物化视图的基表
带有函数索引的表
SECUREFILE 大对象
压缩表

检查traderecode的索引果然有函数索引,所以导致报了ORA-10631错误。

近来发现oracle的新特性总是有些局限或缺陷,例如今天碰上的Shrink,以上就是它的缺陷。

相比alter table move,Shrink的进步是:
1.可在线执行
2.可使用参数cascade,同时收缩表上的索引
3.执行后不会导致索引失效
4.可避免alter table move执行过程中占用很多变空间(如果表10G大小,那alter table move差不多还得需要10G空间才能执行)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值