문제 설명:
Kettle을 사용하여 원본 데이터베이스에서 표준 데이터베이스로 데이터를 추출했습니다. 추출 프로세스 중에 오류가보고되었습니다. [ORA-14400 : 삽입 된 파티션 키가 어떤 파티션에도 매핑되지 않음] / [ORA-14400 : 삽입 된 파티션 키가 매핑되지 않음 어떤 파티션에도】
해결 과정 :
Baidu 이후 ORA-14400이 테이블 파티셔닝에 문제가 있음을 발견했습니다.
1. 테이블이 테이블 파티션에 추가되었는지 확인합니다.
user_tab_partitions t 에서 partition_name, high_value 를 선택 합니다. 여기서 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은 현재 테이블에 해당하는 원래 라이브러리의 소스 테이블이어야합니다.
table_name t 에서 max ( key_column ) 를 선택하십시오 .
5. 쿼리 된 테이블 파티션 바인딩 필드의 최대 값을 테스트를 위해 현재 테이블에 삽입하면 오류가 발견됩니다.
삽입 에 TABLE_NAME (table_column1, table_column2 ......, KEY_COLUMN) 값 (값, 값 2, ......, 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_name pctfree 10 initrans 1 maxtrans255,
8. 끝. 다시 주전자를 사용하여 그림을 그리면 그림이 부드럽습니다.