Problem Description:
Work using kettle to extract data from the original library into the standard library, error during extraction: "ORA-14400: the inserted partition keyword is not mapped to any partition"/"ora-14400:inserted partition key does not map to Any partition "
Resolution process:
ORA-14400: The inserted partition keyword is not mapped to any partition
ORA-06512: In the NMS_FMS. Batch_save ", Line 1109
ORA-06512: On 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)
After Baidu, found ORA-14400 is a table partition problem.
1. Determine if the table partition has already been added to the tables.
Select Partition_name,high_value from User_tab_partitions t where table_name= ' table_name ';
2. Query the field name of the table partition binding.
SELECT * from User_part_key_columns t where name= ' table_name ';
3. View the details of the current table partition
SELECT * from User_tab_partitions t where table_name= ' table_name ';
4. Query the maximum value of a table partition bound field. NOTE: The table_name here should be the source table in the original library that corresponds to the current table.
Select Max (key_column) from table_name t;
5. Insert the maximum value of the query into the table partition bound field into the current table to test and find an error.
INSERT INTO table_name (TABLE_COLUMN1,TABLE_COLUMN2,......, Key_column) VALUES (value1,value2,......, key_value);
6. After the above link to determine the error data in the source table, and because the time span of the error data is greater than the scope of the current partition, resulting in a ORA-14400 error, but because the data must be retained, so the table partition is extended.
7. Extend the current table partition to ensure that the range is greater than the maximum value of the bound field.
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 1 Initrans 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 Initrans 1 maxtrans255,
8. End. Once again, the kettle is extracted with a smooth extraction.
"Oracle" ORA-14400: the inserted partition keyword is not mapped to any partition