• oracle在线重定义表


    select * from tb_cablecheck_equipment_bak e

    第一步:验证表是否能被在线重定义

    验证是否能按主键重定义(默认,最后一次参数可以不加)

    1
    2
    3
    4
    begin
      --dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak');
      dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak',dbms_redefinition.cons_use_pk);
    end;

    验证是否能按rowid重定义:

    1
    2
    3
    4
    begin
      --dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak',2);
      dbms_redefinition.can_redef_table('scott','tb_cablecheck_equipment_bak',dbms_redefinition.cons_use_rowid);
    end;

    第二步:创建中间表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    create table scott.tb_cablecheck_equipment_bak2(
          equipment_id        NUMBER,
          equipment_code      VARCHAR2(100),
          equipment_name      VARCHAR2(500),
          area_id             NUMBER,
          address             VARCHAR2(500),
          res_type_id         VARCHAR2(10),
          res_type            VARCHAR2(20),
          manage_area_id      VARCHAR2(100),
          manage_area         VARCHAR2(100),
          management_mode     CHAR(10),
          isrelated           CHAR(1),
          staff_id            VARCHAR2(20),
          create_date         DATE,
          ischecked           CHAR(20),
          check_date          DATE,
          operate_staff       NUMBER,
          parent_area_id      NUMBER,
          grid_id             NUMBER(20),
          install_sbid        NUMBER,
          install_sbbm        VARCHAR2(100),
          install_dzbm        VARCHAR2(100),
          longitude           VARCHAR2(50),
          latitude            VARCHAR2(50),
          station_id          VARCHAR2(50),
          update_time         DATE,
          check_complete_time DATE
    )
    partition by range(create_date)(
          PARTITION tb_cablecheck_equipment_p1 VALUES LESS THAN (TO_DATE('2013-08-01','YYYY-MM-DD')),
          PARTITION tb_cablecheck_equipment_p2 VALUES LESS THAN(TO_DATE('2016-04-05''YYYY-MM-DD')),
          PARTITION tb_cablecheck_equipment_p3 VALUES LESS THAN(TO_DATE('2016-12-13''YYYY-MM-DD')),
          PARTITION tb_cablecheck_equipment_p4 VALUES LESS THAN(MAXVALUE)
    );

    第三步:开始进行重定义

    1
    2
    3
    begin
      dbms_redefinition.start_redef_table('scott','tb_cablecheck_equipment_bak','tb_cablecheck_equipment_bak2',null,2);
    end;

    复制依赖对象

    1
    2
    3
    4
    5
    6
    DECLARE  
      num_errors PLS_INTEGER;  
    BEGIN  
      DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('SCOTT''tb_cablecheck_equipment_bak','tb_cablecheck_equipment_bak2',  
      DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUETRUETRUETRUE, num_errors);  
    END;

    第四步:同步中间表,保证数据的一致性

    1
    2
    3
    begin
    dbms_redefinition.sync_interim_table('scott','tb_cablecheck_equipment_bak','tb_cablecheck_equipment_bak2');
    end;

    第六步:完成重定义

    1
    2
    3
    begin
    dbms_redefinition.finish_redef_table('scott','tb_cablecheck_equipment_bak','tb_cablecheck_equipment_bak2');
    end;

    查看是否已被定义为分区表:

    1
    select from tb_cablecheck_equipment_bak partition(tb_cablecheck_equipment_p1);

    第七步:

    1
    drop table scott.tb_cablecheck_equipment_bak2;
     
  • 相关阅读:
    DBA 职责及日常工作职责
    mysql 语句笔记
    学习Groovy — 闭包
    linux 命令: 网络和进程
    linux命令: rm命令
    Pro Git-- 跟踪分支
    Redis Tutorial
    linux 命令--文件操作
    分库分表的几种常见形式
    乐观锁与悲观锁
  • 原文地址:https://www.cnblogs.com/xyhero/p/56f0774929d6362ef1bb12c9cab6574e.html
Copyright © 2020-2023  润新知