请问能不能更改已经建好的范围分区表的分区规则呢?
比如:把原来的partition by range (AREA_CD, MSG_CRTE_DTS)改为partition by range (MSG_CRTE_DTS, AREA_CD),具体见下:
(AREA_CD, 城市代码,MSG_CRTE_DTS,日期。
要实现按城市和日期分区,以前只有一个城市,BJS,而且开发人员把地区代码放日期前面了,现在加了上海和深圳,结果加了字母靠后的城市后,字母靠前的城市,比如北京,分区就建不出来了,报ORA-14074: 分区界限必须调整为高于最后一个分区界限,所以我打算把日期放前面,城市代码放后面)
create table TTCGTR010_LXP
(
SEQ NUMBER not null,
AREA_CD VARCHAR2(10) not null,
MSG_CRTE_DTS CHAR(14) not null,
COM_CD VARCHAR2(4) not null,
COM_DEF_CD VARCHAR2(2) not null,
DEVICE_ID VARCHAR2(20) not null,
VEHI_TYPE_CD VARCHAR2(10) not null,
GPS_X NUMBER(8) default 0 not null,
GPS_Y NUMBER(8) default 0 not null,
GPS_DTS CHAR(14) not null,
GPS_SPD NUMBER(5,2) default 0,
GPS_ANGL NUMBER(3) default 0,
SATL_CNT NUMBER(2) default 0,
VEHI_EVT_CD VARCHAR2(10) not null,
VEHI_EVT_DETL_CD VARCHAR2(10) not null,
TRS_METH_CD VARCHAR2(10) not null,
MAP_X NUMBER(8) default 0 not null,
MAP_Y NUMBER(8) default 0 not null
)
partition by range (AREA_CD, MSG_CRTE_DTS)
(
partition PTCGTR0100_BJS20081230 values less than ('BJS', '20081230999999')
)
alter table TTCGTR010_lxp add partition PTCGTR0100_BJS20090310 values less than ('BJS','20090310999999') ;
alter table TTCGTR010_lxp add partition PTCGTR0100_SHA20090310 values less than ('SHA','20090310999999') ;
alter table TTCGTR010_lxp add partition PTCGTR0100_SZX20090310 values less than ('SZX','20090310999999') ;
alter table TTCGTR010_lxp add partition PTCGTR0100_SZX20090410 values less than ('SZX','20090410999999') ;
--以上这些都成功了。
alter table TTCGTR010_lxp add partition PTCGTR0100_BJS20090510 values less than ('BJS','20090510999999') ;
ORA-14074: 分区界限必须调整为高于最后一个分区界限
这个没有成功。所以我打算把日期放前面,城市代码放后面,原来的数据还要保留:
类似这样:
ALTER TABLE TTCGTR010_LXP partition by range (MSG_CRTE_DTS,AREA_CD);
ORA-01735: 无效的 ALTER TABLE 选项
这个语法错了,但我不知道这个想法行不行?
请各位指教,谢谢!
[本帖最后由 lixunpeng 于 2009-7-7 00:20 编辑]