日期:2014-05-17  浏览次数:20719 次

Oracle9i如何实现分区按月存储
请问各位,在oracle9i中如何实现分区按月存储?
也就是说,不用管年份的那种。比如今年1-12月它会自己建,到了明年,就又从一月开始存储。
最终能够达到动态的保存最近12个月的记录。

------解决方案--------------------
可以使用数据仓库类似的滑动窗口技术
1、每个月建立一个按年月命名的空表,用来存储交换最早分区的数据;
2、每个月按年月建立一个新分区,用于存储最新数据;
3、将最旧的一个月(12个月以前的一个月)分区数据交换到新建的空表;
4、可以归档交换出来的分区表。
5、删除最旧的分区。
------解决方案--------------------
数据仓库类似的滑动窗口技术
看不是很懂哦,首先明确程序端上不改动,其次,分区变了,如何写入到新分区,
业务时刻运行的话,如何同步?

2楼的初步想法是这样的.,可是数据量大的话,似乎效率和同步成立很大问题
------解决方案--------------------
不知道你说的是不是这个意思 
在表里新建一个按月分区字段 分区代码
partition by range (分区字段)
(
partition P2 values less than ('02')
tablespace 表空间
pctfree 10 
pctused 75
initrans 4
maxtrans 255
storage
(
initial 4M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
),
partition P3 values less than ('03')
tablespace 表空间
pctfree 10 
pctused 75
initrans 4
maxtrans 255
storage
(
initial 4M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
),....以此类推
partition P13 values less than (MAXVALUE)
tablespace 表空间
pctfree 10
pctused 75
initrans 4
maxtrans 255
storage
(
initial 4M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
)
);