我想请你帮忙,我已经找了几天的例子,我还没有找到任何工作。
我在Oracle 11g中有一个分区表,这是它的最后两个分区。P2026和P_OTHER,dataType NUMBER(4)。此表没有任何带有日期类型的列
PARTITION "P2026" VALUES LESS THAN (2027)
( SUBPARTITION "P2026_SP0" VALUES (0) ,
SUBPARTITION "P2026_SP1" VALUES (1) ,
SUBPARTITION "P2026_SP2" VALUES (2) ,
SUBPARTITION "P2026_SP3" VALUES (3) ,
SUBPARTITION "P2026_SP4" VALUES (4) ,
SUBPARTITION "P2026_SP5" VALUES (5) ,
SUBPARTITION "P2026_SP6" VALUES (6) ,
SUBPARTITION "P2026_SP7" VALUES (7) ,
SUBPARTITION "P2026_SP8" VALUES (8) ,
SUBPARTITION "P2026_SP9" VALUES (9) ,
SUBPARTITION "P2026_SP_OTHER" VALUES (DEFAULT) ) ,
PARTITION "P_OTHER" VALUES LESS THAN (MAXVALUE)
( SUBPARTITION "P_OTHER_SP0" VALUES (0) ,
SUBPARTITION "P_OTHER_SP1" VALUES (1) ,
SUBPARTITION "P_OTHER_SP2" VALUES (2) ,
SUBPARTITION "P_OTHER_SP3" VALUES (3) ,
SUBPARTITION "P_OTHER_SP4" VALUES (4) ,
SUBPARTITION "P_OTHER_SP5" VALUES (5) ,
SUBPARTITION "P_OTHER_SP6" VALUES (6) ,
SUBPARTITION "P_OTHER_SP7" VALUES (7) ,
SUBPARTITION "P_OTHER_SP8" VALUES (8) ,
SUBPARTITION "P_OTHER_SP9" VALUES (9) ,
SUBPARTITION "P_OTHER_SP_OTHER" VALUES (DEFAULT) ) ) ;
字符串
我想拆分P_OTHER以添加与代表2027年的数字相对应的分区
我试试这个:
ALTER TABLE "OWNER"."PARTITIONEDTABLE" SPLIT PARTITION P_OTHER VALUES LESS THAN (2028)
(SUBPARTITION "P2027_SP0" VALUES (0) ,
SUBPARTITION "P2027_SP1" VALUES (1) ,
SUBPARTITION "P2027_SP2" VALUES (2) ,
SUBPARTITION "P2027_SP3" VALUES (3) ,
SUBPARTITION "P2027_SP4" VALUES (4) ,
SUBPARTITION "P2027_SP5" VALUES (5) ,
SUBPARTITION "P2027_SP6" VALUES (6) ,
SUBPARTITION "P2027_SP7" VALUES (7) ,
SUBPARTITION "P2027_SP8" VALUES (8) ,
SUBPARTITION "P2027_SP9" VALUES (9) ,
SUBPARTITION "P2027_SP_OTHER" VALUES (DEFAULT)
)
INTO (partition P2027, partition P_OTHER);
型
我得到了
ERROR at line 1:
ORA-00906: missing left parenthesis
型
我试着只做分区而不做子分区,以便以后添加它们,我也有同样的错误
ALTER TABLE "OWNER"."PARTITIONEDTABLE" SPLIT PARTITION P_OTHER VALUES LESS THAN (2028) INTO (partition P2027, partition P_OTHER);
ERROR at line 1:
ORA-00906: missing left parenthesis
的字符串
有人知道语法错误是什么吗?
1条答案
按热度按时间qnzebej01#
有时Oracle在解析SQL时的错误并不是很有用。在这种情况下,它不是关于丢失括号。
您需要使用
AT
子句,而不是VALUES LESS THAN
。此外,拆分时不列出子分区。拆分分区的语法需要简单:字符串
如果你删除了
P_OTHER
分区,然后设置了(1)
的间隔(因为你的 year 列显然是一个每年递增1的数字;对于真实的日期列,它将是(NUMTOYMINTERVAL(1,'YEAR'))
),Oracle将在需要时自动添加新的年度分区,从而消除了昂贵的分割需求:型
别再劈叉了!唯一的缺点是你会丢失漂亮的分区名(它们是系统生成的),但是因为你不需要做任何分区维护,所以这不是什么大问题(如果你需要编写一些特定于日期的分区工作,你可以使用新的
FOR
语法分区引用)。