• oracle添加分区


    实例一

    create table test
    (
      msg_id      VARCHAR2(16),
      result      INTEGER,
      ts          VARCHAR2(17),
      ts_time     TIMESTAMP(6),
      insert_time DATE
    )
    partition by range (TS_TIME)
    (
      partition P20180110 values less than (TIMESTAMP' 2018-01-11 00:00:00')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 64K
          next 1M
          minextents 1
          maxextents unlimited
        )
    );

    方式一

    alter table test add partition P20180111 values less than (TIMESTAMP '2018-01-12 00:00:00')
    

    方式二

    alter table test add  partition P20180112 values less than (to_date('20180113 00:00:00','yyyymmdd hh24:mi:ss'));

    最终查看建表语句如下

    create table TEST
    (
      msg_id      VARCHAR2(16),
      result      INTEGER,
      ts          VARCHAR2(17),
      ts_time     TIMESTAMP(6),
      insert_time DATE
    )
    partition by range (TS_TIME)
    (
      partition P20180110 values less than (TIMESTAMP' 2018-01-11 00:00:00')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 64K
          next 1M
          minextents 1
          maxextents unlimited
        ),
      partition P20180111 values less than (TIMESTAMP' 2018-01-12 00:00:00')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255,
      partition P20180112 values less than (TIMESTAMP' 2018-01-13 00:00:00')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255
    );

    实例二

    create table test2
    (
      msg_id      VARCHAR2(16),
      result      INTEGER,
      ts          VARCHAR2(17),
      ts_time     TIMESTAMP(6),
      insert_time DATE
    )
    partition by range (TS_TIME)
    (
      partition P20180110 values less than (TIMESTAMP' 2018-01-11 00:00:00.000')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 64K
          next 1M
          minextents 1
          maxextents unlimited
        )
    );
    

    通过plsql developer查看建表语句

    -- Create table
    create table TEST2
    (
      msg_id      VARCHAR2(16),
      result      INTEGER,
      ts          VARCHAR2(17),
      ts_time     TIMESTAMP(6),
      insert_time DATE
    )
    partition by range (TS_TIME)
    (
      partition P20180110 values less than (TIMESTAMP' 2018-01-11 00:00:00')
        tablespace USERS
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 64K
          next 1M
          minextents 1
          maxextents unlimited
        )
    );
    

    总结:

    (1)若在创建日分区的时候使用的是精确到秒的timestamp类型,由于其值与date类型是一致的,因此oracle引擎会将其与date同等对待,但是最终的建分区语句使用的还是timestamp,即使你在添加分区时使用的是to_date,也即是说以最开始见分区时候的关键字(timestamp)为准;
    (2)若在创建日分区的时候使用的是精确到毫秒的timestamp类型,由于timestamp ‘20180101 00:00:00.000’与timestamp ‘20180101 00:00:00’值是一样的因此,会将二者同等对待;但是在但是最终的建分区语句使用的还是”timestamp精确到秒”,即使你在添加分区时使用的是”timestamp精确到毫秒”,也即是说以最开始见分区时候的”timestamp精确到秒”为准;

  • 相关阅读:
    重置root密码
    JavaEE完整体系架构
    Analysis servlet injection
    隔离级别
    ULVAC爱发科皮拉尼真空计SW1-N说明书-手册
    研华advantech-凌华ADLINK板卡运动控制卡
    vc6.0转vs2012的一些错误与解决方法
    MFC时间简单比较方法
    MFC_VC++_时间获取与保存列表控件内容到文件操作方法
    show and hide. xp扩展名
  • 原文地址:https://www.cnblogs.com/yldf/p/11900105.html
Copyright © 2020-2023  润新知