普通表在线重定义为分区表

普通表在线转换成分区表示例

源表表结构如下

CREATE TABLE EDC_SEPERATOR

(

SEPERATOR_ID NUMBER(15) NOT NULL,

EQUIPMENTINFO NVARCHAR2(20),

RECORD NVARCHAR2(50),

TITLE NVARCHAR2(50),

ID NVARCHAR2(50),

TESTDATE NVARCHAR2(50),

TESTTIME VARCHAR2(50 BYTE),

COMT NVARCHAR2(50),

OPERATOR NVARCHAR2(50),

CLASSIFIC NVARCHAR2(50),

BIN NVARCHAR2(50),

UOC NVARCHAR2(50),

ISC NVARCHAR2(50),

RSERIEC NVARCHAR2(50),

RSH NVARCHAR2(50),

FF NVARCHAR2(50),

ETA NVARCHAR2(50),

IREV2 NVARCHAR2(50),

TCELL NVARCHAR2(50),

TMONICELL NVARCHAR2(50),

INSOL NVARCHAR2(50),

UMPP NVARCHAR2(50),

IMPP NVARCHAR2(50),

PMPP NVARCHAR2(50),

JSC NVARCHAR2(50),

ENTITY_RRN NUMBER(15),

SORTER_SEQ NUMBER(15),

IMPORTTIME DATE,

DBIMPORTTIME DATE

)

在源表上面建立索引

CREATE INDEX INDX_EDC_SEPERATOR ON EDC_SEPERATOR(IMPORTTIME);

CREATE INDEX INDX3_EDC_SEPERATOR ON EDC_SEPERATOR(COMT);

开始在线重定义源表
如果有主键,基于主键重定义

BEGIN

DBMS_REDEFINITION.CAN_REDEF_TABLE('AHERN', 'EDC_SEPERATOR');

END;

/
没有主键,基于 row_id 重定义

BEGIN

DBMS_REDEFINITION.CAN_REDEF_TABLE('AHERN',

'EDC_SEPERATOR',

DBMS_REDEFINITION.CONS_USE_ROWID);

END;

/

首先创建重定义需要的中间表

注意:中间表创建为与源表表结构一致的分区表,以时间字段IMPORTTIME分区键,按月自动分区。

CREATE TABLE TMP_P

(

SEPERATOR_ID NUMBER(15) NOT NULL,

EQUIPMENTINFO NVARCHAR2(20),

RECORD NVARCHAR2(50),

TITLE NVARCHAR2(50),

ID NVARCHAR2(50),

TESTDATE NVARCHAR2(50),

TESTTIME VARCHAR2(50 BYTE),

COMT NVARCHAR2(50),

OPERATOR NVARCHAR2(50),

CLASSIFIC NVARCHAR2(50),

BIN NVARCHAR2(50),

UOC NVARCHAR2(50),

ISC NVARCHAR2(50),

RSERIEC NVARCHAR2(50),

RSH NVARCHAR2(50),

FF NVARCHAR2(50),

ETA NVARCHAR2(50),

IREV2 NVARCHAR2(50),

TCELL NVARCHAR2(50),

TMONICELL NVARCHAR2(50),

INSOL NVARCHAR2(50),

UMPP NVARCHAR2(50),

IMPP NVARCHAR2(50),

PMPP NVARCHAR2(50),

JSC NVARCHAR2(50),

ENTITY_RRN NUMBER(15),

SORTER_SEQ NUMBER(15),

IMPORTTIME DATE,

DBIMPORTTIME DATE

)

PARTITION BY RANGE (IMPORTTIME)

INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))

(

PARTITION P1 VALUES LESS THAN (to_date('20180101','YYYYMMDD'))

) TABLESPACE USERS

开始在线重定义

BEGIN

DBMS_REDEFINITION.START_REDEF_TABLE('AHERN',

'EDC_SEPERATOR',

'TMP_P',

NULL,

2);

END;

/

在线同步

BEGIN

DBMS_REDEFINITION.SYNC_INTERIM_TABLE('AHERN', 'EDC_SEPERATOR', 'TMP_P');

END;

/

中间表创建索引

CREATE INDEX INDX_P_SEPERATOR ON TMP_P(IMPORTTIME);

CREATE INDEX INDX3_P_SEPERATOR ON TMP_P (COMT);

完成重定义

BEGIN

DBMS_REDEFINITION.FINISH_REDEF_TABLE('AHERN', 'EDC_SEPERATOR', 'TMP_P');

END;

/

删除中间表

DROP TABLE tmp_p;

检查是否已经分区

SELECT TABLE_NAME, PARTITIONED

FROM DBA_TABLES

WHERE TABLE_NAME = 'EDC_SEPERATOR';

相关推荐
pnoker15 分钟前
IoT DC3 时序存储选型:四款数据库可插拔
数据库·物联网·postgresql·时序数据库·influxdb·tdengine·iotdb
黑臂麒麟29 分钟前
HarmonyOS鸿蒙实战应用6:随手账本——Preferences本地持久化
数据库·华为·app·鸿蒙
2601_962174171 小时前
小试牛刀-SpringBoot集成SOL链
数据库·spring boot·后端
如何取名1 小时前
结合实际业务进行LRU淘汰算法优化设计(数据库开发日志)
数据库·算法
HanhahnaH1 小时前
Outbox 投递器:事务性发件箱模式详解
数据库
新时代牛马1 小时前
epoll 源码路径:从epoll_ctl 到ep_poll 的就绪唤醒
网络·数据库·网络协议
小蒜学长1 小时前
基于SpringBoot + Vue的智能健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
芦柑4641 小时前
画布和3D导演台工具:短剧分镜从素材整理到空间预演的完整链路
服务器·前端·数据库
专注仿真1 小时前
TRAE Work 的实战
数据库·人工智能·分析