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

相关推荐
计算机毕设VX:Fegn089526 分钟前
计算机毕业设计|基于springboot + vue个人博客系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
十五年专注C++开发44 分钟前
浅谈Qt中的QSql模块整体设计
开发语言·数据库·c++·qt
TDengine (老段)1 小时前
TDengine 生态系统连接指南
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
k***92161 小时前
C++:继承
java·数据库·c++
一只旭宝1 小时前
Linux专题十二:mysql数据库以及redis数据库
linux·数据库·mysql
萧曵 丶1 小时前
MySQL B+树详解
数据库·b树·mysql
鱼跃鹰飞2 小时前
面试题:Spring事务失效的八大场景
数据库·mysql·spring
ss2732 小时前
类的线程安全:多线程编程-银行转账系统:如果两个线程同时修改同一个账户余额,没有适当的保护机制,会发生什么?
java·开发语言·数据库
郑泰科技2 小时前
windows下启动hbase的步骤
数据库·windows·hbase
子一!!2 小时前
MySQL数据库基础操作
数据库·mysql·oracle