ORACLE 收缩表(shrink)简介

shrink命令用于收缩表,降低高水位线,减少表所使用的块的个数.

特性:

1)可在线收缩表,基本不影响DML

2)收缩表的同时自动维护索引

3)不需要额外的磁盘空间

 

shrink同时全减少高水位线以上和以下未使用的空间.数据库会压缩段(表),将水位线降低到合适的位置,然后释放回收的空间.

shrink命令需要开启row movement,因为在收缩表时,行的位置可能改变.

shrinK命令只能用在自动管理的段空间(automatic segment space mangement)的表空间上.

 

以下段不支持shrink命令:

1)IOT mapping 表(?)

2)rowid创建的物化视图的基表

3)表上的函数索引

4)securefile lobs

5)压缩表

 

shrink命令有两种执行方式:

1)直接执行alter table shirnk space;

2)先执行alter table shirnk space compact; 再执行alter table shirnk space.

alter table shirnk space 会直接整理块碎片压缩表并重置高水位线.

compact的作用是整理块碎片并压缩表,然后把压缩后的信息写在磁盘上,再次执行alter table shirnk space时, 重置高水位线并释放回收的空间.这样做的好处是避免大量锁定对大事务产生影响.

 

在执行shrink命令时加上cascade,会同时收缩表相关的对象,如索引.

 

例子:

Shrink a table and all of its dependent segments (including BASICFILE LOB segments):

ALTER TABLE employees SHRINK SPACE CASCADE;

Shrink a BASICFILE LOB segment only:

ALTER TABLE employees MODIFY LOB (perf_review) (SHRINK SPACE);

Shrink a single partition of a partitioned table:

ALTER TABLE customers MODIFY PARTITION cust_P1 SHRINK SPACE;

Shrink an IOT index segment and the overflow segment:

ALTER TABLE cities SHRINK SPACE CASCADE;

Shrink an IOT overflow segment only:

ALTER TABLE cities OVERFLOW SHRINK SPACE;

来源: <http://docs.oracle.com/cd/E11882_01/server.112/e25494/schema.htm#ADMIN10161>

 

 

 

 

 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值