Oracle按日自动创建分区
因数据库中某张表日益积累导致表空间满额,但该表未建分区,根据索引删除太耗时间往往造成delete语句超时。所以通过rename的方式新建一个分区表以便日后维护。
- 新建日分区表
- rename
新建日分区表
CREATE TABLE weibo_detail_new
PARTITION BY RANGE(CREATED_AT)
INTERVAL (numtodsinterval(1,’DAY’))
(
PARTITION part_01 values LESS THAN (TO_DATE(‘20170123’,’YYYYMMDD’))
)
as select * from weibo_detail where 1<>1 ;
20170123 这个时间表示当前时间。1<>1 先创建一个空的表
select table_name,partition_name from user_tab_partitions where table_name=’WEIBO_DETAIL_NEW’;
WEIBO_DETAIL PART_01
以上是weibo_detail_new 的分区信息。
insert into weibo_detail_new (id,created_at) values (‘sss’,sysdate+3);
commit ;
插入几条测试数据。在执行查看分区语句,可以看到新分区出现:
WEIBO_DETAIL PART_01
WEIBO_DETAIL SYS_P8325
WEIBO_DETAIL SYS_P8341
然后根据select * from weibo_detail _newpartition(SYS_P8341) 进行分区查询即可。
rename
rename weibo_detail to weibo_detail_20170123; rename weibo_detail_new to weibo_detail;