1 目的
指导oracle DBA根据不同的场景,快速、正确地完成段碎片整理
2 执行人
Oracle dba
3 执行场景
- 常规场景:数据归档
- 非常规场景:系统对某个表执行频繁insert,delete,造成大量的碎片。
4 回收碎片
回收碎片,一般可以分为两种方式:
- 在线回收,不会造成业务中断,执行时间长。
- 离线回收,需要中断业务,执行时间长快,需两倍的空间。
4.1 在线回收
4.1.1使用shrink space cascade方式
- 点评:当表大小在4G以上时间都会很久,约20-30分钟.以及会消耗UNDO空间,对于大表 往往会由于UNDO表空间不足而收缩失败。
- 代码如下:
alter table T1 enable row movement;
alter table T1 shrink space cascade;
alter table T1 disable row movement;
4.1.2 使用在线重定义方式
- 过程复杂,代码构建时间长。
- 代码如下:
/*
title: 测试在线重定义
step:
1. 生成master的测试表qqmaster(包括所有索引,主键)
2.模拟进行归档
3.执行在线重定义
4.执行在线重定义时,模拟有数据插到qqmaster,频率是每秒100行记录。
*/
drop TABLE CBS.QQMASTER;
drop table CBS.QQMATER_TMP;
create table CBS.QQMASTER tablespace cbs as