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

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

源表表结构如下

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';

相关推荐
.小小陈.2 分钟前
MySQL 入门到实战:从基础概念到核心存储引擎
数据库·mysql
IT邦德10 分钟前
Oracle 26ai 首发季度补丁 23.26.2.0.0 来了!单机版升级
数据库·oracle
yoyo_zzm12 分钟前
Laravel10.x新特性全解析
数据库·mysql·架构
许彰午19 分钟前
CacheSQL(五):桥接篇
java·数据库·缓存·系统架构
七夜zippoe25 分钟前
# DolphinDB分区策略:RANGE分区详解
数据库·策略·分区·range·dolphindb
地球资源数据云37 分钟前
中国陆地生态系统主要植物功能特征空间分布数据
大数据·数据库·人工智能·机器学习
吠品43 分钟前
高性能JS数组操作:何时选用push、unshift、splice或扩展运算符?
linux·服务器·数据库
洛水水1 小时前
【Redis入门】一篇详解Redis五大数据结构
数据结构·数据库·redis
woodykissme1 小时前
日产汽车花键测绘,为什么总踩坑?
数据库·汽车·齿轮·渐开线花键
light blue bird1 小时前
MES/ERP 工序 BOM 协同多节点工站组件
java·jvm·oracle