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

相关推荐
倒流时光三十年3 分钟前
PostgreSQL Semi-Join(半连接)通俗讲解
数据库·postgresql
NiceCloud喜云1 小时前
腾讯云国际版云数据库选型:MySQL、Redis 怎么按业务架构来判断
数据库·mysql·腾讯云
ew452181 小时前
MySQL JOIN 关联语法、差异、标准用法、经典坑点汇总
数据库·mysql
Rain的Java大神之路2 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
Nturmoils2 小时前
给运营导个 CSV,在 ksql 里用 \copy 就够了
数据库
ciqingloveless2 小时前
Oracle打开数据库加密
数据库·oracle
m0_462605222 小时前
大模型week02
数据库
DBA_G3 小时前
GBase 8a数据库集群多维度资源管控策略矩阵解析
数据库·oracle
逐米时代4 小时前
智能招聘与人岗匹配:可解释匹配让录用依据有迹可循
大数据·数据库·人工智能
承渊政道4 小时前
KES专业技能包发布:覆盖数据库开发、迁移与运维全流程
运维·数据库·gitee·数据库开发·金仓数据库