高水位处理

什么是高水位?
首先新建一张空表,大小占用64K,然后插入数据直到表大小变为50G,此时使用DELETE删除所有的数据并且提交,这个时候查询表的大小的时候依然是50G,这就是因为表的高水位没有释放的缘故,而在这时如果使用“SELECT * FROM TABLE_NAME;”语句来查询数据的话,那么查询过程就会很慢,因为Oracle要执行全表扫描,从高水位下所有的块都得去扫描,直到50G的所有块全部扫描完毕。此时就需要释放水位。

1.使用truncate可以释放水位,因为truncate属于ddl操作,相当于重建表。
2.move:需要重建index

ALTER TABLE TABLE_NAME MOVE

3.exp/imp或expdp/impdp重构表。
4.shrink space:

ALTER TABLE TABLE_NAME SHRINK SPACE

使用该命令需要开启行移动(ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT),缺点是会产生大量undo,redo。一般情况下收缩表需要重建index,
以下情况无法使用shrink:
IOT mapping tables

Tables with rowid based materialized views

Tables with function-based indexes

SECUREFILE LOBs

Compressed tables

详细参考:https://docs.oracle.com/cd/E11882_01/server.112/e25494/schema.htm#ADMIN10161

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值