ORA-14074: partition bound must collate higher than that of the last partition

--1 创建分区表t_partition_rang

 

SQL> DROP TABLE t_partition_rang PURGE;
表已删除。

SQL> CREATE TABLE t_partition_rang(ID  NUMBER ,NAME varchar2(10))
  2  PARTITION BY range(ID)(
  3  PARTITION t_range_p1  VALUES LESS THAN(10) ,
  4  PARTITION t_range_p2  VALUES LESS THAN(20) ,
  5  PARTITION t_range_p3  VALUES LESS THAN(30) ,
  6  PARTITION t_range_pMAX  VALUES LESS THAN(MAXVALUE)
  7  );
表已创建。

 

--2 创建global索引

SQL> CREATE INDEX idx_pr_id ON t_partition_rang(ID)
  2  GLOBAL PARTITION BY RANGE(ID) (
  3  PARTITION i_rang_p1  VALUES LESS THAN(10),
  4  PARTITION i_rang_p2  VALUES LESS THAN(20),
  5  PARTITION i_rang_p3  VALUES LESS THAN(30),
  6  PARTITION i_rang_pmax  VALUES LESS THAN(MAXVALUE));
索引已创建。

 

-- 3.向分区表 t_partition_rang中插入数据

SQL> INSERT INTO t_partition_rang VALUES(1,'a');
SQL> INSERT INTO t_partition_rang VALUES(10,'b');
SQL> INSERT INTO t_partition_rang VALUES(20,'c');
SQL> INSERT INTO t_partition_rang VALUES(30,'d');
SQL> INSERT INTO t_partition_rang VALUES(40,'e');
SQL> INSERT INTO t_partition_rang VALUES(50,'f');
已创建 1 行。

SQL> COMMIT;

 

--4. 查看分区t_range_pMAX中的记录
SQL> SELECT * FROM t_partition_rang partition(t_range_pMAX);
        ID NAME
---------- ----------
        30 d
        40 e
        50 f

 

 

--5. 尝试添加新的分区 t_range_p6

由于在创建分区表时指定了maxvalue,在添加新的分区时报错ORA-14074。

SQL> ALTER TABLE t_partition_rang  ADD PARTITION  t_range_p6 VALUES LESS  THAN(70);
ALTER TABLE t_partition_rang  ADD PARTITION  t_range_p6 VALUES LESS  THAN(70)
                                             *
第 1 行出现错误:
ORA-14074: partition bound must collate higher than that of the last partition

 

 

--6. 解决方法:使用split将maxvalue分区中的数据转移到新的的分区中。
SQL> ALTER TABLE t_partition_rang SPLIT PARTITION t_range_pmax AT (70)
  2  INTO (PARTITION t_range_p6, PARTITION t_range_pmax) UPDATE GLOBAL INDEXES ;
表已更改。

 

--7.转移后maxvalue分区中没有数据
SQL> SELECT * FROM t_partition_rang partition(t_range_pMAX);
未选定行

 

--8.数据被转移到了新的分区中(t_range_p6)
SQL> SELECT * FROM t_partition_rang partition(t_range_p6);
        ID NAME
---------- ----------
        30 d
        40 e
        50 f

SQL>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值