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

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

源表表结构如下 :

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

相关推荐
L·S·P2 小时前
25MB 管理 100+ 种数据库:开源轻量客户端 DBX 介绍与上手
数据库·mysql·开源·database·dbx
笃行3504 小时前
KingbaseES KSQL Developer 的连接管理、数据处理与对象管理
数据库
ha_lydms5 小时前
MaxCompute中加密与解密函数
大数据·数据库·数据仓库·hadoop·dataworks·maxcompute·odps
Shadow(⊙o⊙)5 小时前
MySQL内置函数
数据库·mysql
笃行3505 小时前
金仓 KingbaseES PL/SQL 开发全攻略:异常处理、数据类型、调试优化与过程语句
数据库
快乐的木子李6 小时前
mysql-26.7.0-linux26.7.0下载安装
数据库·mysql
excel7 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
知行产研8 小时前
易控智驾:毛利率跃升17.2个百分点,矿山无人驾驶从“规模换增长“迈入“盈利拐点“
数据库·mysql
千里码aicood8 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
饺子大魔王的男人8 小时前
Redis 内存和连接异常怎么排查?用 redis_exporter 搭一套可远程抓取的监控链路
数据库·redis·bootstrap