ORACLE创建按月和按天的自动递增分区

转载 2016年08月30日 14:59:42

原文链接:http://blog.chinaunix.net/uid-21943216-id-4062400.html

一、建按月自增分区表:

1.1建表
SQL> create table month_interval_partition_table (id number,time_col date) partition by range(time_col)
  2  interval (numtoyminterval(1,'month'))
  3  (
  4   partition p_month_1 values less than (to_date('2014-01-01','yyyy-mm-dd'))
  5  );
 
Table created
1.2 查看现在分区
SQL> select table_name,partition_name from user_tab_partitions where table_name='MONTH_INTERVAL_PARTITION_TABLE';
 
TABLE_NAME                     PARTITION_NAME
------------------------------ ------------------------------
MONTH_INTERVAL_PARTITION_TABLE P_MONTH_1


1.3、插入数据
SQL> begin
  2  for i in 0..11 loop
  3   insert into MONTH_INTERVAL_PARTITION_TABLE values(i,add_months(to_date('2014-01-01','yyyy-mm-dd'),i));
  4  end loop;
  5  commit;
  6  end;
  7  /
 
PL/SQL procedure successfully completed


1.4、查看分区


SQL> select table_name,partition_name from user_tab_partitions where table_name='MONTH_INTERVAL_PARTITION_TABLE';
 
TABLE_NAME                     PARTITION_NAME
------------------------------ ------------------------------
MONTH_INTERVAL_PARTITION_TABLE P_MONTH_1
MONTH_INTERVAL_PARTITION_TABLE SYS_P22
MONTH_INTERVAL_PARTITION_TABLE SYS_P23
MONTH_INTERVAL_PARTITION_TABLE SYS_P24
MONTH_INTERVAL_PARTITION_TABLE SYS_P25
MONTH_INTERVAL_PARTITION_TABLE SYS_P26
MONTH_INTERVAL_PARTITION_TABLE SYS_P27
MONTH_INTERVAL_PARTITION_TABLE SYS_P28
MONTH_INTERVAL_PARTITION_TABLE SYS_P29
MONTH_INTERVAL_PARTITION_TABLE SYS_P30
MONTH_INTERVAL_PARTITION_TABLE SYS_P31
MONTH_INTERVAL_PARTITION_TABLE SYS_P32
MONTH_INTERVAL_PARTITION_TABLE SYS_P33
 
13 rows selected


1.5查看其中一个分区数据


SQL> select * From MONTH_INTERVAL_PARTITION_TABLE partition(SYS_P22);
 
        ID TIME_COL
---------- -----------
         0 2014/1/1


二、创建按天的分区表


2.1建表
SQL> create table day_interval_partition_table (id number,time_col date) partition by range(time_col)
  2  interval (numtodsinterval(1,'day'))
  3  (
  4   partition p_day_1 values less than (to_date('2014-01-01','yyyy-mm-dd'))
  5  );
 
Table created
 
2.2、查看现在分区
SQL> select table_name,partition_name from user_tab_partitions where table_name='DAY_INTERVAL_PARTITION_TABLE';
 
TABLE_NAME                     PARTITION_NAME
------------------------------ ------------------------------
DAY_INTERVAL_PARTITION_TABLE   P_DAY_1


2.3、插入数据
SQL> begin
  2  for i in 1..12 loop
  3   insert into DAY_INTERVAL_PARTITION_TABLE values(i,trunc(to_date('2014-01-01','yyyy-mm-dd')+i));
  4  end loop;
  5  commit;
  6  end;
  7  /
 
PL/SQL procedure successfully completed


2.4查看分区
SQL> select table_name,partition_name from user_tab_partitions where table_name='DAY_INTERVAL_PARTITION_TABLE';
 
TABLE_NAME                     PARTITION_NAME
------------------------------ ------------------------------
DAY_INTERVAL_PARTITION_TABLE   P_DAY_1
DAY_INTERVAL_PARTITION_TABLE   SYS_P34
DAY_INTERVAL_PARTITION_TABLE   SYS_P35
DAY_INTERVAL_PARTITION_TABLE   SYS_P36
DAY_INTERVAL_PARTITION_TABLE   SYS_P37
DAY_INTERVAL_PARTITION_TABLE   SYS_P38
DAY_INTERVAL_PARTITION_TABLE   SYS_P39
DAY_INTERVAL_PARTITION_TABLE   SYS_P40
DAY_INTERVAL_PARTITION_TABLE   SYS_P41
DAY_INTERVAL_PARTITION_TABLE   SYS_P42
DAY_INTERVAL_PARTITION_TABLE   SYS_P43
DAY_INTERVAL_PARTITION_TABLE   SYS_P44
DAY_INTERVAL_PARTITION_TABLE   SYS_P45


2.5查看数据
SQL> select table_name,partition_name from user_tab_partitions where table_name='DAY_INTERVAL_PARTITION_TABLE';
 
TABLE_NAME                     PARTITION_NAME
------------------------------ ------------------------------
DAY_INTERVAL_PARTITION_TABLE   P_DAY_1
DAY_INTERVAL_PARTITION_TABLE   SYS_P34
DAY_INTERVAL_PARTITION_TABLE   SYS_P35
DAY_INTERVAL_PARTITION_TABLE   SYS_P36
DAY_INTERVAL_PARTITION_TABLE   SYS_P37
DAY_INTERVAL_PARTITION_TABLE   SYS_P38
DAY_INTERVAL_PARTITION_TABLE   SYS_P39
DAY_INTERVAL_PARTITION_TABLE   SYS_P40
DAY_INTERVAL_PARTITION_TABLE   SYS_P41
DAY_INTERVAL_PARTITION_TABLE   SYS_P42
DAY_INTERVAL_PARTITION_TABLE   SYS_P43
DAY_INTERVAL_PARTITION_TABLE   SYS_P44
DAY_INTERVAL_PARTITION_TABLE   SYS_P45
 
13 rows selected
 
SQL> select * From DAY_INTERVAL_PARTITION_TABLE;
 
        ID TIME_COL
---------- -----------
         1 2014/1/2
         2 2014/1/3
         3 2014/1/4
         4 2014/1/5
         5 2014/1/6
         6 2014/1/7
         7 2014/1/8
         8 2014/1/9
         9 2014/1/10
        10 2014/1/11
        11 2014/1/12
        12 2014/1/13
 
12 rows selected
 
SQL> select * From DAY_INTERVAL_PARTITION_TABLE partition(SYS_P39);
 
        ID TIME_COL
---------- -----------
         6 2014/1/7

oracle 11g的interval partition 如何按天\周\月\年分区

ORACLE11g的表分区功能中可以建立新类型的Interval分区表,它可以根据加载数据,自动创建指定间隔的分区,也就是说建立了Interval分区 ,就不必像ORACLE10以前的表分区那样需...
  • sdtysdu2000
  • sdtysdu2000
  • 2013年06月09日 17:39
  • 4788

Oracle按日自动创建分区

因数据库中某张表日益积累导致表空间满额,但该表未建分区,根据索引删除太耗时间往往造成delete语句超时。所以通过rename的方式新建一个分区表以便日后维护。...
  • yesorno828
  • yesorno828
  • 2017年01月23日 12:37
  • 1116

Oracle 11g 通过间隔分区实现按月创建表分区

在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理。由于表中的数据是历史交易,故按月分区,提升查询和管理。   由于之前对于表分区了解不多,为了实现上述功能查了很多资料,一开始的方...
  • gavinloo
  • gavinloo
  • 2014年05月06日 16:16
  • 23257

Oracle 11g 实现按月创建表分区

Oracle 11g 实现按月创建表分区
  • wanlong360599336
  • wanlong360599336
  • 2016年10月10日 15:15
  • 1213

ORACLE表自动按月分区步骤

  • 2017年08月22日 11:33
  • 62KB
  • 下载

MySQL和ORACLE每天自动增加分区

有一个表tb_3a_huandan_detail,每天有300W左右的数据。查询太慢了,网上了解了一下,可以做表分区。由于数据较大,所以决定做定时任务每天执行存过自动进行分区。 1、在进行自动增加分区...
  • Eason_oracle
  • Eason_oracle
  • 2017年03月17日 14:38
  • 651

Oracle按天、按月统计数据

-----按天统计 select to_char(t.hiredate, 'yyyy/mm/dd') 日期, count(1) 数量 from EMP t where t.hiredate >= ...
  • hellosmu
  • hellosmu
  • 2017年06月21日 14:52
  • 455

oracle11g分区表按时间自动创建

oracle11g分区表按时间自动创建
  • rznice
  • rznice
  • 2017年02月13日 14:46
  • 3109

oracle11g自动创建分区(INTERVAL PATITION)后的定时删分区

某表利用oracle11的自动创建分区功能按天分区,现在要定时删除30天之前的分区数据,保持表里只有30天的业务数据,因为分区是动态创建,无法获得分区名,所以要用到字典表user_objects ,存...
  • ronawilliam
  • ronawilliam
  • 2014年01月09日 17:09
  • 4212

Oracle 11g下自动创建分区

11g之前,维护分区需要手工。11g之后使用interval来实现自动扩展分区,非常方便。    根据年  INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))    根据月  IN...
  • guogang83
  • guogang83
  • 2014年05月09日 09:52
  • 4555
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE创建按月和按天的自动递增分区
举报原因:
原因补充:

(最多只允许输入30个字)