ORA-14037: 分區 "P8" 的分區界限過高

create table T_parttab_str
(
  PROVINCE_ID varchar2(8) not null,
  MATER_TYPE  NVARCHAR2(2)
)
partition by range (PROVINCE_ID)
(
PARTITION p1 VALUES LESS THAN ('2'),
PARTITION p2 VALUES LESS THAN ('3'),
PARTITION p3 VALUES LESS THAN ('4'),
PARTITION p4 VALUES LESS THAN ('5'),
PARTITION p5 VALUES LESS THAN ('6'),
PARTITION p6 VALUES LESS THAN ('7'),
PARTITION p7 VALUES LESS THAN ('8'),
PARTITION p8 VALUES LESS THAN ('9'),
PARTITION p9 VALUES LESS THAN ('10'),
PARTITION p10 VALUES LESS THAN ('11'),
PARTITION p11 VALUES LESS THAN ('12'),
PARTITION p32 VALUES LESS THAN (maxvalue)
)
ORA-14037: 分區 "P8" 的分區界限過高
分區p8的分區界限比P9的大了,按通常的理解9比10小,但是Oracle比較字符串時,會首先從第一個字符比較。因爲"9">"1",所以會認爲"9"<"10",所以就出錯了
將上面的改爲
create table T_parttab_str
(
  PROVINCE_ID varchar2(8) not null,
  MATER_TYPE  NVARCHAR2(2)
)
partition by range (PROVINCE_ID)
(
PARTITION p1 VALUES LESS THAN ('02'),
PARTITION p2 VALUES LESS THAN ('03'),
PARTITION p3 VALUES LESS THAN ('04'),
PARTITION p4 VALUES LESS THAN ('05'),
PARTITION p5 VALUES LESS THAN ('06'),
PARTITION p6 VALUES LESS THAN ('07'),
PARTITION p7 VALUES LESS THAN ('08'),
PARTITION p8 VALUES LESS THAN ('09'),
PARTITION p9 VALUES LESS THAN ('10'),
PARTITION p10 VALUES LESS THAN ('11'),
PARTITION p11 VALUES LESS THAN ('12'),
PARTITION p32 VALUES LESS THAN (maxvalue)
)

建議:範圍分區時,分區鍵儘量不用字符型。如果字符型時要注意保持字符位數一致以避免出現意想不到的情況
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章