How to shrink segments

Online Segment Shrink for Tables, LOBs and IOTs using ALTER TABLE … SHRINK SPACE Command.

The ALTER TABLE … SHRINK SPACE command was introduced in Oracle 10g to perform online segment shrinks for tables, LOBs and IOT overflow segments.

Shrink Space Examples
Here are some simple examples of the ALTER TABLE … SHRINK SPACE command.

-- Enable row movement.
ALTER TABLE scott.emp ENABLE ROW MOVEMENT;

-- Recover space and amend the high water mark (HWM).
ALTER TABLE scott.emp SHRINK SPACE;

-- Recover space, but don't amend the high water mark (HWM).
ALTER TABLE scott.emp SHRINK SPACE COMPACT;

-- Recover space for the object and all dependant objects.
ALTER TABLE scott.emp SHRINK SPACE CASCADE;

The COMPACT option allows the shrink operation to be broken into two stages. First the rows are moved using the COMPACT option but the high water mark (HWM) is not adjusted so no parsed SQL statements are invalidated. The HWM can be adjusted at a later date by reissuing the statement without the COMPACT option. At this point any dependent SQL statements will need to be re-parsed.

Other shrink commands of interest are displayed below.

-- Shrink a LOB segment (basicfile only until 21c).
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE);
ALTER TABLE table_name MODIFY LOB(lob_column) (SHRINK SPACE CASCADE);

-- Shrink an IOT overflow segment.
ALTER TABLE iot_name OVERFLOW SHRINK SPACE;

There is more detail about this functionality below.

Comments and Restrictions

Here are some things to consider before performing shrink operations.

Moving rows can cause problem with rowid based triggers.
Rowid materialized views must be rebuilt after a shrink operation.
The shrinking process is only available for objects in tablespaces with automatic segment-space management enabled.
You can’t combine the SHRINK SPACE clause with any other ALTER TABLE clauses.
You can’t shrink a cluster or a clustered table.
You can’t shrink any object with a LONG column.
You can’t shrink tables with dependent function-based indexes, domain indexes, or bitmap join indexes.
You can’t shrink tables that are the master table of an ON COMMIT materialized view
Mapping tables of index-organized tables are not affected by a shrink.
Shrinks can’t be used for compressed tables, except those using Advanced Row Compression (ROW STORE COMPRESS ADVANCED).
The shrink operation against a table doesn’t cascade to the LOB segments. They need to handled separately.
You can’t shrink securefile LOB segments.
Changing the arrangement of rows in a table can have a negative impact on performance in some circumstances. Test thoroughly before making any decisions.
After any structural change, like a move, remember to check for unusuable indexes. You can use the sunableidx.sql script to find them. If you have any, rebuild them.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值