ITPub博客

首页 > 数据库 > Oracle > 普通表转分区表-在线重定义

普通表转分区表-在线重定义

原创 Oracle 作者:lmxx2020 时间:2024-12-16 18:14:41 1 删除 编辑

原表非分区表:T_EC_EVENT_CONTENT
创建中间表:INIT_T_EC_EVENT_CONTENT

创建中间分区表

create table INIT_T_EC_EVENT_CONTENT
(
  EVENTID      VARCHAR2(50),
  JHDATE       DATE not null,
  FWQBH        VARCHAR2(8),
  SENDER       VARCHAR2(50),
  RECEIVER     VARCHAR2(50),
  NODEID       VARCHAR2(8),
  ACTIONTYPE   VARCHAR2(100),
  EVENTSIZE    NUMBER(30),
  EVENTTYPE    VARCHAR2(2),
  MEMO         VARCHAR2(2000),
  MESSAGEID    VARCHAR2(50),
  EVENTCONTENT CLOB,
  CLIENTIP     VARCHAR2(50),
  CLIENTOS     VARCHAR2(50),
  MBFWQBH      VARCHAR2(8),
  ID           VARCHAR2(50) not null,
  KSSJ         TIMESTAMP(6),
  JSSJ         TIMESTAMP(6)
)partition by range (JHDATE)
INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
 PARTITION MT1 VALUES LESS THAN (TO_DATE('2020-01-01 00:00:00','YYYY-MM-DD hh24:mi:ss'))
 storage
    (
      initial 8M
      next 100M
      minextents 1
      maxextents unlimited
    )
)storage
    (
      initial 8M
      next 100M
      minextents 1
      maxextents unlimited
    );

--验证是否可以进行在线重定义,验证原表是否有主键

exec dbms_redefinition.can_redef_table('test', 'T_EC_EVENT_CONTENT');======所有操作之前要先验证

--开始重定义,把原表数据复制到中间表数据
exec dbms_redefinition.start_redef_table('test', 'T_EC_EVENT_CONTENT', 'INIT_T_EC_EVENT_CONTENT');

--迁移权限对象
SQL> declare
    num_errors PLS_INTEGER;
    begin
    dbms_redefinition.copy_table_dependents('TEST', 'T_EC_EVENT_CONTENT', 'INIT_T_EC_EVENT_CONTENT',
    dbms_redefinition.cons_orig_params, TRUE, TRUE, TRUE, TRUE, num_errors);
    end;
    /
PL/SQL procedure successfully completed

--同步临时表与原始表中的数据,差异数据同步
exec dbms_redefinition.sync_interim_table('test', 'T_EC_EVENT_CONTENT', 'INIT_T_EC_EVENT_CONTENT');

--结束重定义,自动把两张表互换名称
exec dbms_redefinition.finish_redef_table('test', 'T_EC_EVENT_CONTENT', 'INIT_T_EC_EVENT_CONTENT');

--取消重定义
exec dbms_redefinition.abort_redef_table('test', 'T_EC_EVENT_CONTENT', 'INIT_T_EC_EVENT_CONTENT');
--查询是否有错
select object_name, base_table_name, ddl_txt from   DBA_REDEFINITION_ERRORS;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22967847/viewspace-3056959/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-01-09

  • 博文量
    106
  • 访问量
    90380