问题描述:

  工作中使用kettle将原始库中的数据抽取到标准库中,在抽取过程中报错:【ORA-14400: 插入的分区关键字未映射到任何分区】/【ORA-14400: inserted partition key does not map to any partition】

解决过程:

ORA-14400: 插入的分区关键字未映射到任何分区
ORA-06512: 在 "NMS_FMS.BATCH_SAVE", line 1109

ORA-06512: 在 line 1

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:969)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4400)
at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:3044)

  经过百度,发现出现ORA-14400是表分区出现问题。  

  1.确定该表是否已经添加了表分区。    

select partition_name,high_value from user_tab_partitions t where table_name='table_name';

  2.查询表分区绑定的字段名称。   

select * from user_part_key_columns t where name='table_name';

  3.查看当前表分区的具体情况

select * from user_tab_partitions t where table_name='table_name';

  4.查询表分区绑定的字段的最大值。注:此处的table_name应为当前表对应的原始库中的源表。

select max(key_column) from table_name t;

  5.将查询到的表分区绑定字段的最大值插入到当前表中进行测试,发现报错。

insert into table_name(table_column1,table_column2,......,key_column) values(value1,value2,......,key_value);

  6.经过以上环节确定源表中出现错误数据,并且由于错误数据的时间跨度大于当前分区的范围,导致ORA-14400错误的出现,但是由于该数据必须保留,因此对表分区进行扩展。

  7.扩展当前表分区以保证范围大于绑定字段的最大值。

alter table  table_name add partition part_key_column_029 values less than (to_date('2029-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))

       tablespace tablespace_name

       pctfree 10

        initrans 1

       maxtrans255,

......,

alter table  table_name add partition part_key_column_049 values less than (to_date('2049-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))
       tablespace tablespace_name        pctfree 10        initrans 1        maxtrans255,

  8.结束。再次使用kettle进行抽取时顺利抽取。

【Oracle】ORA-14400: 插入的分区关键字未映射到任何分区的更多相关文章

  1. ora-14400插入的分区关键字未映射到任何分区---oracle数据库表过期问题

    楼主解决这个问题ora-14400插入的分区关键字未映射到任何分区,其原因是:分区表过期. 通过使用sql直接修改Date类型的字段可以证实,修改成过期以后的时间出现下列提示,修改成过期之前的则可以. ...

  2. [Oracle]ORA-14400:插入的分区关键字未映射到任何分区

    今天在使用测试库的时候发生ORA-14400:inserted partition key does not map to any partition 解决过程: 经过百度,发现出现ORA-14400 ...

  3. 记一次Oracle分区表错误:ORA-14400: 插入的分区关键字未映射到任何分区

    https://blog.csdn.net/xdyzgjy/article/details/42238735

  4. ora-14400:插入的分区关键字未映射到任何分区

    参考:https://blog.csdn.net/rubychen410/article/details/5317553 出现该问题是由于: 1.为表设置了根据时间进行分区(PARTITION),而每 ...

  5. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

  6. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  7. ORA-14402: 更新分区关键字列将导致分区的更改

    默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改.這種情況可以通過開啟表 ...

  8. oracle分区表的建立方法(包含已经存在的表要分区)分享,非常好

    非原创 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Oracle的分区表可 ...

  9. Oracle亿级数据查询处理(数据库分表、分区实战)

    大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机(刚接到这个项目时候,数据库经常宕机o(╯□╰)o). 那么,如何处理上亿级的数据量呢?如何从数据库经常宕机到上亿数据秒查?仅以此篇文章作 ...

随机推荐

  1. python常见的数据转化函数

    python常用类型转换函数 函数格式 使用示例 描述 int(x [,base]) int("8")   可以转换的包括String类型和其他数字类型,但是会丢失精度       ...

  2. 芯片烧录器编程AT24C02

    网上买了两款芯片烧录器,因为项目用的到.芯片以后的类型可能是IIC 接口的.就选则了一个IIC接口的AT24C02EEPROM.进行尝试.手头上没有这款芯片. 就想起自己单片机上有这款芯片.然后就开始 ...

  3. 二叉树:B+tree等

    二叉树:(树是一种可以递归定义数据结构) 度:节点的个数 深度:层数(即从根点到叶子节点的层数) 满二叉树:指底层叶子节点左右均存在的二叉树. 完全二叉树:指底层叶子节点的右侧均存在的二叉树. 一般二 ...

  4. .NET 并行计算和并发10-lock锁

    class Program { private static List<int> intlist; static void Main(string[] args) { intlist = ...

  5. Java中next()和nextLine()的区别

    首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后 ...

  6. 2018-4-25 初识html

    第一天 简单了解web 路线 html css js 发布网站 web运作 html html是超文本语言,也就是标记语言.说白了也就规定了一些符号,然后赋予这些符号意义.比如规定a就是超链接标签,用 ...

  7. while循环 格式化输出 运算符 编码

    一.while循环 1.基本结构 while 条件:            循环体   流程: 判断条件是否为真. 如果真, 执行代码块. 然后再次判断条件是否为真 .如果真继续执行代码块....  ...

  8. SQLServer 2008R2主从部署实战

    说明: 由于临时接到做OA的主从环境,基于Windows 200R2 SQLServer2008 R2,由于搜索的资料都不完整,好多重要之处有遗漏,亲自动手做了好几次,填完了坑,整理以备忘记与分享,如 ...

  9. .net 客户端调用java或.net webservice进行soapheader验证

    .net 客户端调用java或.net webservice进行soapheader验证 最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservi ...

  10. ln 软链

    ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录 如上面的示例,当我们执行命令   cd /gamestat/的时候  实际上是进入了 /hom ...