oracle11g自动分区

最近工作中需要给数据库创建分区,简单学习了一下,做下笔记。
oracle11g之前,维护分区需要手工,11g之后使用interval来实现自动扩展分区,使得维护工作变得简单。
根据年: INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))
根据月: INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
根据天: INTERVAL(NUMTODSINTERVAL(1,'DAY'))
根据时分秒: NUMTODSINTERVAL( n, { 'DAY'|'HOUR'|'MINUTE'|'SECOND'})

下面使用按月分区做个试验:
创建分区表:

create table zl_range (id number not null PRIMARY KEY, test_date date)
partition by range (test_date) interval (numtoyminterval (1,'MONTH'))
(
partition p_2014_01_01 values less than (to_date('2014-01-01', 'yyyy-mm-dd'))
);

查看ZL_RANGE表的分区:

select partition_name from user_tab_partitions where table_name='ZL_RANGE';

可以看到只有一个分区
[img]http://dl2.iteye.com/upload/attachment/0116/0337/1f175eec-e16d-3bf8-b29e-31e3fc273664.png[/img]
插入不同月份的数据:

INSERT INTO ZL_RANGE VALUES(1,TO_DATE('2013-12-01','YYYY-MM-DD'));
INSERT INTO ZL_RANGE VALUES(2,TO_DATE('2014-01-01','YYYY-MM-DD'));
INSERT INTO ZL_RANGE VALUES(3,TO_DATE('2014-12-01','YYYY-MM-DD'));
INSERT INTO ZL_RANGE VALUES(4,TO_DATE('2014-12-10','YYYY-MM-DD'));
INSERT INTO ZL_RANGE VALUES(5,TO_DATE('2013-11-10','YYYY-MM-DD'));
INSERT INTO ZL_RANGE VALUES(6,TO_DATE('2014-11-10','YYYY-MM-DD'));
COMMIT;

查看分区,可以看到有四个分区:
[img]http://dl2.iteye.com/upload/attachment/0116/0340/7ff2b77e-3416-3fec-8839-17299f05e7c5.png[/img]
如果不喜欢分区的名字,可以自己修改:

alter table t_range rename partition SYS_P41 to p_2014_02_01;
alter table t_range rename partition SYS_P42 to p_2015_01_01;
alter table t_range rename partition SYS_P43 to p_2014_12_01;



查询表分区的信息
SELECT * FROM USER_SEGMENTS;

清空表分区数据:
alter table 表名 truncate partition 分区名;

直接删除分区:
alter table 表名 drop partition 分区名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值