ORACLE 收缩表(shrink)简介

来源:互联网 发布:php url 记录跳转设计 编辑:程序博客网 时间:2024/05/16 07:12
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 0
原创粉丝点击