ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Linux操作系统下Oracle11g R2 RAC 安装配置教程
Oracle数据库培训-备份恢复-性能优化-集群容灾
Oracle数据库DBA高级工程师培训视频

将按月分区的表改为按天分区

内容发布:清晨| 发布时间:2016-9-21 11:30:37

随着业务的快速发展,数据库中表的数据增量也会明显上升,之前一个月只有10w数据的,现在可能一天就有10w,这个时候如果还是按照以前按月分区的策略进行访问,那么sql扫描单个分区要访问300w的数据,为了保证效率,可以将表改为按天分区,并对sql谓词条件进行调整使得只访问单天的一个分区,这样性能就得到了保证。


一般来说,按月分区的表都是range分区,下面来介绍将按月分区改为按天分区的方法:


1.range间隔分区的情况


间隔分区无法手工add partition ,会出现如下报错:

ORA-14760 ADD PARTITION is not permitted on Interval partitioned objects
思路是先改为非间隔分区 ,然后手工按天add partition ,并建议再改成按天间隔,详见如下案列:
create table tmp_test_range
(
id number,
name varchar2(30),
int_date date
)
PARTITION BY RANGE(int_date)
interval(NUMTOYMINTERVAL (1,'MONTH'))
(
partition P201511 values less than(to_date('20151201','yyyymmdd')),
partition P201512 values less than(to_date('20160101','yyyymmdd')));



ALTER TABLE tmp_test_range SET INTERVAL ();


alter table tmp_test_range add partition P20160101 values less than(to_date('20160102','yyyymmdd'));

ALTER TABLE tmp_test_range SET INTERVAL (NUMTODSINTERVAL(1,'DAY'));


2.range非间隔分区的情况

思路是删除一些还没有使用的月分区,然后手工按天add partition ,并建议再改成按天间隔


create table tmp_test_range
(
id number,
name varchar2(30),
int_date date
)
PARTITION BY RANGE(int_date)
(
partition P201511 values less than(to_date('20151201','yyyymmdd')),
partition P201512 values less than(to_date('20160101','yyyymmdd')),

partition P201601 values less than(to_date('20160201','yyyymmdd')));

alter table tmp_test_range drop partition P201601;

alter table tmp_test_range add partition P20160101 values less than(to_date('20160102','yyyymmdd'));


ALTER TABLE tmp_test_range SET INTERVAL (NUMTODSINTERVAL(1,'DAY'));


注意range分区表添加分区并不影响全局索引和本地分区索引,也不影响当前分区表的任何操作

但修改interval的属性会造成短暂的锁并引起相关sql游标失效




上一篇:oracle 一条简单sql的优化
下一篇:Oracle RAC Failover 详解
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

<
高级模式fo defn mFh(li});artru5a75cht1" ameTDosdvfo defncht1" mtn"/javico_1>新手入门llo
llo 0; i="cute(h!用户e%253D1%2加贚inu> 0; i="cute(h!找回遗忘密码ML = sunc =l合作指南llo
llo 0; i="cute(h!广告服务一览ML = 加贚inu> 0; i="cute(h!项目合作交流ML = 加贚inu> 0; i="cute(h!合作协议模板ML = sunc =l技术支持llo
lo 0; i="cute(h!技术条款方设置文 加贚inu/stronr elother/ claiclige = name="formute(hjavT技术服务网ML = 加贚inu> 0; i="cute(h!在线申请协助ML = sunc=l版主招聘llo
lo查>申请版主须謊IxHighswysCC7xileft_te嬷髡衅竘lo
s{ /=ion.createRa1礳sN穜b>查>伞xwww.idd>s{eipt"> (function() { var viewsource = []莈="text被T技术稢fncash=5ghswysCC7xilefyde_execute(highlighters[i]); } else if(eventtype hlighters) { if(k == num/t/jg謞<$(sasCC緄: '3914_execute(hi緄bm bmw"xilefyde_execu1834-1-this.getAttribute('num'); for(var i in {csN strsCC緄: 'i].inne> idde=( ; co { t"> Fnne> ght/ forf37epux.com/source/plugin/mw_syntaxhi莝&i for(var i in 牡涤胧謔de') { mw_copycode_execute(highlighter{csN瞐lueource/pldNo!--[> t&am3i idde=被[i]); C1-t windgin/mw_syntaxhghtet;'); var wnd = mw_popup('', '_blank', 750, 400, /shBrushDiff.js?ver=3.0erl= mw_ elot ? e :C7xiarea">< var wnd = 緄lass="ytet;'); var w(h!< var w>粤ICP备y=c63710号-3er=3. | tquote" href=ne> is6.cnzzux.cgetatn'; if(5772360&webiv>=5772360" += um_1="; str += ttp://www.i |', '_bCsnSe'; hCss.itpuxux.cgeelecap.= '<7xiarea">< var w>"csm地图er=3|', '_bCsn(p) > star2avascript"> "frameq67aqI" class="cr) { c.礳sN琽= pts{ce/owd']L-taphp ht ''; Bligdphpotarget="_>衏um sel.tex10pcuz_tilock≡窳四10px -1:0 0"ck_syt bcoaocument.title; oadad(); var s