清理oracle库30亿的表后,释放删除空间

1.创建中间表

请以HADES_COD.HDS_COD_BUSI_DETAIL为模板,

手动创建中间表:HADES_COD.HDS_COD_BUSI_DETAIL_1

以及它的constraint约束

示例:

-- Create table

create table HADES_COD.HDS_COD_BUSI_DETAIL_1

(

id NUMBER not null,

wo_code VARCHAR2(100),

order_code VARCHAR2(100),

arrv_address VARCHAR2(200),

...

adjust_orig_wo_code VARCHAR2(100),

arrv_month_verf_corp_name VARCHAR2(200)

)

tablespace NNC_DATA01

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 256K

next 256K

minextents 1

maxextents unlimited

pctincrease 0

);

-- Create/Recreate primary, unique and foreign key constraints

alter table HADES_COD.HDS_COD_BUSI_DETAIL_1

add constraint P_HDS_COD_BUSI_DETAIL primary key (ID)

using index

tablespace NNC_INDEX01

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 256K

next 256K

minextents 1

maxextents unlimited

pctincrease 0

);

2.验证是否支持在线重定义

exec dbms_redefinition.can_redef_table('HADES_COD','HDS_COD_BUSI_DETAIL');

3.映射字段类型,启动重定义进程

begin

dbms_redefinition.start_redef_table

(

uname => 'HADES_COD',

orig_table => 'HDS_COD_BUSI_DETAIL',

int_table => 'HDS_COD_BUSI_DETAIL_1'

);

end;

/

4.异步同步数据

begin

dbms_redefinition.sync_interim_table

(

uname => 'HADES_COD',

orig_table => 'HDS_COD_BUSI_DETAIL',

int_table => 'HDS_COD_BUSI_DETAIL_1'

);

end;

/

5.完成在线重定义

begin

dbms_redefinition.finish_redef_table

(

uname => 'HADES_COD',

orig_table => 'HDS_COD_BUSI_DETAIL',

int_table => 'HDS_COD_BUSI_DETAIL_1'

);

end;

/

6.(可选项)取消在线重定义

【仅供执行报错的时候,取消任务使用】

begin

dbms_redefinition.abort_redef_table

(

uname => 'HADES_COD',

orig_table => 'HDS_COD_BUSI_DETAIL',

int_table => 'HDS_COD_BUSI_DETAIL_1'

);

end;

/

7.收集统计信息

exec dbms_stats.GATHER_TABLE_STATS(ownname => 'HADES_COD',tabname => 'HDS_COD_BUSI_DETAIL',CASCADE => true,degree => 35);

8.创建索引

按原表的索引情况,自行创建其他索引(通过online parallel 4并行创建索引)

如:

create unique index HADES_COD.HDS_COD_BUSI_DETAIL_01 on HADES_COD.HDS_COD_BUSI_DETAIL (WO_CODE)

online parallel 4

tablespace NNC_INDEX01

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 256K

next 256K

minextents 1

maxextents unlimited

pctincrease 0

);

9.清理中间表

drop table HADES_COD.HDS_COD_BUSI_DETAIL_1 purge;

此种方式为在线重定义表的形式来释放已删除的空间,影响范围小、速度快,单表删除3亿的数据后,3~4小时即可完成全部的释放动作。

另外一种释放的方式为:

alter table HADES_COD.HDS_COD_BUSI_DETAILenable row movement nologging parallel 4;

alter table HADES_COD.HDS_COD_BUSI_DETAILshrink space COMPACT;

alter table HADES_COD.HDS_COD_BUSI_DETAILshrink space cascade;

alter table HADES_COD.HDS_COD_BUSI_DETAILdisable row movement noparallel logging;

此种方式较上面的方式要慢很多,开始运行后,只能傻等,大概需要20个小时的时间。

相关推荐
X-⃢_⃢-X12 分钟前
十、Redis之布隆过滤器
数据库·redis·缓存
Nturmoils15 分钟前
订单号查出了三笔,我以为是数据脏了,其实是自己写错了
数据库
ZKNOW甄知科技19 分钟前
燕千云深度集成飞书:以AI之力,开启无感IT运维体验
大数据·运维·网络·数据库·人工智能·低代码·集成学习
TDengine (老段)34 分钟前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
汉知宝科技35 分钟前
历史案件数据迁移:知识产权管理系统落地的第一道门槛
大数据·数据库
这就是佬们吗44 分钟前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
吴声子夜歌1 小时前
MongoDB 4.x——SpringBoot框架整合
数据库·spring boot·mongodb
凤山老林1 小时前
MySQL“读已提交“并非万能药:深度解析RC隔离级别的盲区与适用边界
数据库·mysql
Database_Cool_1 小时前
阿里云 Tair(企业级内存数据库)vs 腾讯云 Redis 云缓存深度对比:性能/数据结构/成本全维度 Benchmark
数据库·阿里云·缓存
流星白龙1 小时前
【Redis】1.Redis特性
数据库·redis·缓存