oracle分区表

    xiaoxiao2021-03-26  26

    1、按月创建分区

    create table T_MHDP

    (

    ID VARCHAR2(50) not null,

    FLT_AIRCODE VARCHAR2(4),

    FLT_NUMBER NUMBER(7),

    FLT_DATE DATE

    ) partition by range (FLT_DATE)

    (

    partition PART201105 values less than (TO_DATE(' 2011-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

    tablespace TS_MHDP_1105

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 64K

    next 1M

    minextents 1

    maxextents unlimited

    ),

    partition PART201106 values less than (TO_DATE(' 2011-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

    tablespace TS_MHDP_1106

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 64K

    next 1M

    minextents 1

    maxextents unlimited

    ),

    partition PART201107 values less than (TO_DATE(' 2011-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

    tablespace TS_MHDP_1107

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 64K

    next 1M

    minextents 1

    maxextents unlimited

    ),

    partition PARTDEFAULT values less than (TO_DATE(' 9999-12-30 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))

    tablespace TS_MHDP

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 64K

    next 1M

    minextents 1

    maxextents unlimited

    )

    );

    2、创建分区表

    CREATE TABLE TABLE_PARTITION(  

           COL1   NUMBER,  

           COL2   VARCHAR2(10)  

    )  

    partition by range(COL1)(  

              partition TAB_PARTOTION_01 values less than (450000),  

              partition TAB_PARTOTION_02 values less than (900000),  

              partition TAB_PARTOTION_03 values less than (1350000),  

              partition TAB_PARTOTION_04 values less than (1800000),  

              partition TAB_PARTOTION_OTHER values less THAN (MAXVALUE)  

    );  

    Gregorian日历 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

     

    1、查询当前用户下有哪些是分区表:  

    SELECT * FROM USER_PART_TABLES;  

    2查询当前用户下分区表的分区信息:  

    SELECT * FROM USER_TAB_PARTITIONS T  

    WHERE T.TABLE_NAME=?;  

    3查询某用户下二级分区的信息(只有创建了二级分区才有数据):  

    SELECT * FROM USER_TAB_SUBPARTITIONS;  

    4、删除分区

    ALTER TABLE TABLE_PARTITION DROP PARTITION TAB_PARTOTION_03 UPDATE GLOBAL INDEXES

    5、查询某一分区中的数据

    SELECT * FROM TABLE_PARTITION partition(TAB_PARTOTION_01);  

    6、查询子分区中的数据

    SELECT * FROM TABLE_PARTITION subpartition(TAB_PARTOTION_01);  

    7、使用分区删除数据

    delete t_test(表名) partition(t_test_2013)

    8、询当前用户下分区索引的分区信息:  

    SELECT * FROM USER_IND_PARTITIONS T   WHERE T.INDEX_NAME=?  

    9、查看表的实际大小

    select sum(bytes/1024/1024/1024) from  user_segments where segment_name='TB_DATA_EQ_PICK_LOG'

    10、查看每个分区的大小

    select partition_name,bytes/1024/1024/1024 from  user_segments where segment_name='TB_DATA_EQ_PICK_LOG'

     

     

    INTERVAL PARTITION

     

    一、interval partition

    11g之前,分区必须是手工或者存储过程预分配新分区。

    interval 分区是oracle 11g引入的新技术,无需DBA预分配新分区,插入数据时系统会根据range列和已分配的分区自动判断新数据是否可以插入到已存在的分区中,如果不能满足插入已存在的分区,系统自动分配一个新分区来存放新插入的数据。

     

    interal 分区减少了dba对分区的操作,保证了分区的准确安全性。

     

    月自动创建分区

    1.建表

    create table month_part (c1 number,c3 date)

    partition by range(c3)

    interval(numtoyminterval (1,'month'))

    (partition part1 values less than (to_date('2010-01-01','YYYY-MM-DD')),

     partition part2 values less than (to_date('2010-02-01','YYYY-MM-DD'))

    );

     

     

    numtodsinterval(<x>,<c>) ,x是一个数字,c是一个字符串,

     

    表明x的单位,这个函数把x转为interval day to second数据类型

    常用的单位有 ('day','hour','minute','second')

    example

    SQL> select sysdate,sysdate+numtodsinterval(3,'hour') as res from dual;

    SYSDATE             RES

    ------------------- -------------------

    2007-09-05 01:45:34 2007-09-05 04:45:34

    numtoyminterval 与numtodsinterval函数类似,将x转为interval year to month数据类型

    常用的单位有'year','month'

    example

    SQL> select sysdate,sysdate+numtoyminterval(3,'year') as res from dual;

    SYSDATE             RES

    ------------------- -------------------

    2007-09-05 01:54:53 2010-09-05 01:54:53

    转载请注明原文地址: https://ju.6miu.com/read-663569.html

    最新回复(0)