遭遇ora-14400:插入的分区关键字未映射到任何分区。

遭遇ora-14400:插入的分区关键字未映射到任何分区。

过程如下:

首先创建一个分区表

create table TEST_INSER
(
  ST_INSER_CODE        VARCHAR2(20),
  DT_INSER_WRITEDATE   DATE
)
PARTITION BY RANGE(DT_INSER_WRITEDATE)
(
PARTITION jan2008 VALUES LESS THAN(TO_DATE('2008-2-1','YYYY-MM-DD')),
PARTITION feb2008 VALUES LESS THAN(TO_DATE('2008-3-1','YYYY-MM-DD')),
PARTITION mar2008 VALUES LESS THAN(TO_DATE('2008-4-1','YYYY-MM-DD')),
PARTITION apr2008 VALUES LESS THAN(TO_DATE('2008-5-1','YYYY-MM-DD')),
PARTITION may2008 VALUES LESS THAN(TO_DATE('2008-6-1','YYYY-MM-DD')),
PARTITION jun2008 VALUES LESS THAN(TO_DATE('2008-7-1','YYYY-MM-DD')),
PARTITION jul2011 VALUES LESS THAN(TO_DATE('2011-8-1','YYYY-MM-DD'))
);

然后将已经存在表T_INSER中的数据导入这个新建的分区表

SQL>INSERT INTO TEST_INSER SELECT * FROM T_INSER;

报ora-14400错误!

尝试如下:

SQL>INSERT INTO TEST_INSER SELECT * FROM T_INSER WHERE DT_INSER_WRITEDATE IS NOT NULL;

依旧报错!

SQL>ALTER TABLE TEST_INSER ENABLE ROW MOVEMENT;

依旧报错!

SQL>ALTER TABLE TEST_INSER DROP PARTITION jul2011;

SQL>ALTER TABLE TEST_INSER ADD PARTITION maxpart VALUES LESS THAN (MAXVALUE);

成功导入了!

SQL>SELECT * FROM TEST_INSER PARTITION (maxpart);

检查一下最后一个partition中的数据,发现有DT_INSER_WRITEDATE有2028年的,原来不是NULL值惹的祸,我以为该字段有NULL值,所以开始才加了IS NOT NULL的过滤条件,仍旧导不进去,说明还是字段的值的确超出了现有的partition的值范围。至于那个ENABLE ROW MOVEMENT语句段,可以看这个例子:

SQL>ALTER TABLE TEST_INSER DISABLE ROW MOVEMENT;

SQL>UPDATE TEST_INSER SET DT_INSER_WRITEDATE=TO_DATE('2008-3-1','YYYY-MM-DD') WHERE TO_CHAR(DT_INSER_WRITEDATE,'YYYY') = '2028';

报错!ORA-14402:更新分区关键字列将导致分区的更改

SQL>ALTER TABLE TEST_INSER ENABLE ROW MOVEMENT;

SQL>UPDATE TEST_INSER SET DT_INSER_WRITEDATE=TO_DATE('2008-3-1','YYYY-MM-DD') WHERE TO_CHAR(DT_INSER_WRITEDATE,'YYYY') = '2028';

成功!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值