2008-7-5 00:24
wanmoxiaosheng
ora-14758错误
在学习间隔分区用法时,我使用alter table drop partition语句删除一个分区时,报ORA-14758:不能删除范围段中的最后一个分区。
请问如何解决?
间隔分区中分区数量不断增加,该如何实现分区的删除?
2008-7-7 01:49
cc59
test case
SQL> create table test_par
2 ( id number,
3 td date
4 )
5 partition by range(td)
6 interval (numtoyminterval(1,'month'))
7 store in (users,test)
8 (partition p1
9 values less than(to_date('2008-05-01','yyyy-mm-dd')) tablespace users,
10 partition p2
11 values less than(to_date('2008-06-01','yyyy-mm-dd')) tablespace test,
12 partition p3
13 values less than(to_date('2008-07-01','yyyy-mm-dd')) tablespace users
14 partition p4
15 values less than(to_date('2008-08-01','yyyy-mm-dd')) tablespace test
16 );
表已创建。
SQL> insert into test_par values(1,to_date('2008-08-20','yyyy-mm-dd'));
已创建 1 行。
SQL> insert into test_par values(1,to_date('2008-09-20','yyyy-mm-dd'));
已创建 1 行。
SQL> insert into test_par values(1,to_date('2008-10-20','yyyy-mm-dd'));
已创建 1 行。
SQL> commit;
提交完成。
SQL>
SQL> select partition_name,tablespace_name,high_value
2 from dba_tab_partitions
3 where table_name='TEST_PAR'
4 order by partition_position;
PARTITION_ TABLESPACE HIGH_VALUE
---------- ---------- ------------------------------------------------------------
P1 USERS TO_DATE(' 2008-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
P2 TEST TO_DATE(' 2008-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
P3 USERS TO_DATE(' 2008-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
P4 TEST TO_DATE(' 2008-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
PARTITION_ TABLESPACE HIGH_VALUE
---------- ---------- ------------------------------------------------------------
SYS_P61 USERS TO_DATE(' 2008-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
SYS_P62 TEST TO_DATE(' 2008-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
SYS_P63 USERS TO_DATE(' 2008-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'N
LS_CALENDAR=GREGORIAN')
已选择7行。
SQL> alter table test_par drop partition sys_p63;
表已更改。
SQL> alter table test_par drop partition p1;
表已更改。
SQL> alter table test_par drop partition p2;
表已更改。
SQL> alter table test_par drop partition p4;
alter table test_par drop partition p4
*
ERROR 位于第 1 行:
ORA-14758: 不能删除范围段中的最后一个分区