清理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个小时的时间。

相关推荐
老华带你飞10 分钟前
商城推荐系统|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·商城推荐系统
一 乐14 分钟前
物业管理系统|小区物业管理|基于SprinBoot+vue的小区物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
这周也會开心31 分钟前
Spring框架
java·数据库·spring
gys98951 小时前
uniapp使用sqlite模块
数据库·sqlite·uni-app
凌冰_2 小时前
Java Maven+lombok+MySql+HikariCP 操作数据库
java·数据库·maven
武子康2 小时前
Java-165 Neo4j 图论详解 欧拉路径与欧拉回路 10 分钟跑通:Python NetworkX 判定实战
java·数据库·性能优化·系统架构·nosql·neo4j·图论
岳麓丹枫0012 小时前
pg_stat 视图介绍
数据库·postgresql
弗朗凌戈2 小时前
影院票务管理系统oracle
数据库·oracle·vr
·云扬·2 小时前
MySQL主从数据一致性校验工具:pt-table-checksum 详解
数据库·sql·mysql
wudl55663 小时前
Python 虚拟环境和包管理
数据库·python·sqlite