• 普通表转换成分区表


    描述:将表trans_new转换成分区表,分区字段为data_date。

    一、准备

    SQL> select /*+ parallel(t,8)*/  count(*) from  trans_new t;

      COUNT(*)
    ----------
    445600483

    SQL> select /*+ parallel(t,8)*/  max(DATA_DATE),min(DATA_DATE) from  edw.dw_fact_trans_new2014 t;

    MAX(DATA_ MIN(DATA_
    --------- ---------
    05-MAY-14 01-JUL-13

    rename trans_new to trans_new2014;

    二、创建分区表

    -- Create table
    create table trans_new
    (
      id             NUMBER not null,
      data_date      DATE,
      mobile_num     VARCHAR2(255),
      mobile_secret  VARCHAR2(255),
      mobile_code    VARCHAR2(21),
      psam           VARCHAR2(50),
      psam_code      VARCHAR2(20),
      term_type      VARCHAR2(50),
      term_area      VARCHAR2(20),
      trancde        VARCHAR2(100),
      merno          VARCHAR2(50),
      tcat_lv4       VARCHAR2(20),
      s_no           VARCHAR2(50),
      outcdno        VARCHAR2(255),
      outcdno_secret VARCHAR2(255),
      outcdno_bin    VARCHAR2(20),
      incdno         VARCHAR2(255),
      incdno_secret  VARCHAR2(255),
      incdno_bin     VARCHAR2(255),
      pay_status     VARCHAR2(50),
      pay_respn      VARCHAR2(50),
      trans_respn    VARCHAR2(50),
      de37           VARCHAR2(50),
      total_am       NUMBER,
      pro_am         NUMBER,
      free_am        NUMBER,
      sid            VARCHAR2(255),
      accetp_id      NUMBER,
      pay_id         NUMBER,
      content_id     NUMBER,
      is_sucess      CHAR(1),
      flag           CHAR(1),
      back1          VARCHAR2(255),
      back2          VARCHAR2(256),
      back3          VARCHAR2(257),
      back4          VARCHAR2(258),
      back5          VARCHAR2(259),
      load_date      DATE
    ) tablespace ETLDATA
    partition by range (DATA_DATE)
    (
      partition DW_MONTH_201201 values less than (TO_DATE(' 2012-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201202 values less than (TO_DATE(' 2012-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201203 values less than (TO_DATE(' 2012-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201204 values less than (TO_DATE(' 2012-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201205 values less than (TO_DATE(' 2012-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201206 values less than (TO_DATE(' 2012-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201207 values less than (TO_DATE(' 2012-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201208 values less than (TO_DATE(' 2012-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201209 values less than (TO_DATE(' 2012-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201210 values less than (TO_DATE(' 2012-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201211 values less than (TO_DATE(' 2012-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201212 values less than (TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201301 values less than (TO_DATE(' 2013-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201302 values less than (TO_DATE(' 2013-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201303 values less than (TO_DATE(' 2013-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201304 values less than (TO_DATE(' 2013-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201305 values less than (TO_DATE(' 2013-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201306 values less than (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201307 values less than (TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201308 values less than (TO_DATE(' 2013-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201309 values less than (TO_DATE(' 2013-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201310 values less than (TO_DATE(' 2013-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201311 values less than (TO_DATE(' 2013-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201312 values less than (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201401 values less than (TO_DATE(' 2014-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201402 values less than (TO_DATE(' 2014-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201403 values less than (TO_DATE(' 2014-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201404 values less than (TO_DATE(' 2014-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201405 values less than (TO_DATE(' 2014-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201406 values less than (TO_DATE(' 2014-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201407 values less than (TO_DATE(' 2014-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201408 values less than (TO_DATE(' 2014-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201409 values less than (TO_DATE(' 2014-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201410 values less than (TO_DATE(' 2014-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201411 values less than (TO_DATE(' 2014-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201412 values less than (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201501 values less than (TO_DATE(' 2015-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201502 values less than (TO_DATE(' 2015-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201503 values less than (TO_DATE(' 2015-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201504 values less than (TO_DATE(' 2015-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201505 values less than (TO_DATE(' 2015-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201506 values less than (TO_DATE(' 2015-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201507 values less than (TO_DATE(' 2015-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201508 values less than (TO_DATE(' 2015-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201509 values less than (TO_DATE(' 2015-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201510 values less than (TO_DATE(' 2015-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201511 values less than (TO_DATE(' 2015-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_201512 values less than (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
      partition DW_MONTH_MAX values less than (MAXVALUE)
    );

    三、插入

    必须减少日志量。

    alter table trans_new nologging;

    SQL> insert /*+ append parallel(t,32)*/
      2  into EDW.dw_fact_trans_new t
      3    (ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
    )
      4    select /*+ parallel(t1,32)*/
      5     ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
      6      from EDW.dw_fact_trans_new2014 t1
      7     where DATA_DATE < TO_DATE(' 2013-10-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN');

    136255073 rows created.

    Elapsed: 00:14:13.38
    SQL>
    SQL> commit;

    Commit complete.

    Elapsed: 00:00:00.37
    SQL>
    SQL> insert /*+ append parallel(t,32)*/
      2  into EDW.dw_fact_trans_new t
      3    (ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
    )
      4    select /*+ parallel(t1,32)*/
      5     ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
      6      from EDW.dw_fact_trans_new2014 t1
      7     where DATA_DATE >= TO_DATE(' 2013-10-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
      8     and   DATA_DATE <  TO_DATE(' 2014-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN');

    152147213 rows created.

    Elapsed: 00:21:27.15
    SQL>
    SQL> commit;

    Commit complete.

    Elapsed: 00:00:00.40
    SQL>
    SQL>
    SQL> insert /*+ append parallel(t,32)*/
      2  into EDW.dw_fact_trans_new t
      3    (ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
    )
      4    select /*+ parallel(t1,32)*/
      5     ID,DATA_DATE,MOBILE_NUM,MOBILE_SECRET,MOBILE_CODE,PSAM,PSAM_CODE,TERM_TYPE,TERM_AREA,TRANCDE,MERNO,TCAT_LV4,S_NO,OUTCDNO,OUTCDNO_SECRET,OUTCDNO_BIN,INCDNO,INCDN
    O_SECRET,INCDNO_BIN,PAY_STATUS,PAY_RESPN,TRANS_RESPN,DE37,TOTAL_AM,PRO_AM,FREE_AM,SID,ACCETP_ID,PAY_ID,CONTENT_ID,IS_SUCESS,FLAG,BACK1,BACK2,BACK3,BACK4,BACK5,LOAD_DATE
      6      from EDW.dw_fact_trans_new2014 t1
      7     where DATA_DATE >= TO_DATE(' 2014-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN');

    157198197 rows created.

    Elapsed: 00:15:31.40
    SQL>
    SQL>
    SQL>
    SQL> commit;

    Commit complete.

    Elapsed: 00:00:00.37

    alter table trans_new logging;

    四、验证

    SQL> select /*+ parallel(t,8)*/  count(*) from  trans_new t;

      COUNT(*)
    ----------
    445600483

  • 相关阅读:
    一、入门实例
    十四、事物配置
    JAVA-调用http链接
    ORACLE 年龄计算到月份
    ORACLE和MYSQL 去重查询
    JAVA--将图片转为BASE64编码并返回thymeleaf页面
    JAVA--将图片保存至项目路径
    java--获取类加载路径和项目根路径
    excel执行INSERT和UPDATE操作语句
    c# 未能加载Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342
  • 原文地址:https://www.cnblogs.com/afx1007/p/4065967.html
Copyright © 2020-2023  润新知