【Oracle】ORA-14400: inserted partition key does not map to any partition
元旦假日後工作第一天,同事說一個遠古專案後臺查不到某表2016年以後被寫入的資料。(該專案仍在提供服務,但早已停止更新)
業務大致是這樣的:有一張表是存放“贈送禮物”的記錄表。
產品這邊贈送了一個禮物給另外一個小號,然後後臺查詢不到。
找不到文件,手動查到該表:
COMMENT ON COLUMN "*"."SEND_LOG"."SEND_TIME" IS '贈送時間';
根據SEND_TIME降序排,發現最後一個rows的日期是2015-12-31 22:53:11,的確沒有2016年的資料。
手動新增資料:
在DB執行新增資料,to_date('2016-01-01','YYYY-MM-DD'),發現報錯:
ORA-14400: inserted partition key does not map to any partition
無法對映到任何分割槽?原來這張是分割槽表,大概是分割槽的問題。
檢查一下該表表分割槽:
發現high_value欄位內容為:
並發現非MAXVALUE分割槽,直接新增分割槽。
專案遠古,文件也不知道存哪,查了一下增長資料,資料量不大,手動新增後兩年分割槽,間隔為半年。
……
再新增一個MAXVALUE
順便測試了一下為帶有MAXVALUE的分割槽表新增新的分割槽:
如果普通新增則會報錯:
ORA-14074: partition bound must collate higher than that of the last partition
通過SPLIT PARTITION新增新分割槽:
作者微信公眾號(持續更新)
業務大致是這樣的:有一張表是存放“贈送禮物”的記錄表。
產品這邊贈送了一個禮物給另外一個小號,然後後臺查詢不到。
找不到文件,手動查到該表:
COMMENT ON COLUMN "*"."SEND_LOG"."SEND_TIME" IS '贈送時間';
根據SEND_TIME降序排,發現最後一個rows的日期是2015-12-31 22:53:11,的確沒有2016年的資料。
手動新增資料:
在DB執行新增資料,to_date('2016-01-01','YYYY-MM-DD'),發現報錯:
ORA-14400: inserted partition key does not map to any partition
無法對映到任何分割槽?原來這張是分割槽表,大概是分割槽的問題。
檢查一下該表表分割槽:
-
SELECT table_name, partition_name, high_value, partition_position, tablespace_name
-
FROM user_tab_partitions
-
WHERE table_name='SEND_LOG'
- ORDER BY partition_position
發現high_value欄位內容為:
-
TO_DATE(' 2011-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
-
TO_DATE(' 2011-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
-
TO_DATE(' 2011-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
-
TO_DATE(' 2011-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
-
…………
-
TO_DATE(' 2015-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
- TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
並發現非MAXVALUE分割槽,直接新增分割槽。
專案遠古,文件也不知道存哪,查了一下增長資料,資料量不大,手動新增後兩年分割槽,間隔為半年。
-
ALTER TABLE SEND_LOG ADD PARTITION p45 VALUES
-
LESS THAN (TO_DATE('2016-06-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) TABLESPACE *;
-
-
ALTER TABLE SEND_LOG ADD PARTITION p46 VALUES
- LESS THAN (TO_DATE('2018-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) TABLESPACE *;
……
再新增一個MAXVALUE
- ALTER TABLE SEND_LOG ADD PARTITION p49 VALUES LESS THAN (maxvalue) TABLESPACE *;
順便測試了一下為帶有MAXVALUE的分割槽表新增新的分割槽:
-
CREATE TABLE partition_test(id number, create_time date)
-
PARTITION BY RANGE(create_time)(
-
PARTITION p1 VALUES LESS THAN (TO_DATE('2015-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')),
-
PARTITION p2 VALUES LESS THAN (TO_DATE('2016-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')),
- PARTITION p3 VALUES LESS THAN (maxvalue));
如果普通新增則會報錯:
-
ALTER TABLE partition_test ADD PARTITION p4 VALUES
- LESS THAN (TO_DATE('2017-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) ;
ORA-14074: partition bound must collate higher than that of the last partition
通過SPLIT PARTITION新增新分割槽:
-
ALTER TABLE partition_test SPLIT PARTITION p3 AT (TO_DATE('2017-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))
- INTO (partition, partition p3);
作者微信公眾號(持續更新)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1970665/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle partition by group by,詳解partition by和group by對比Oracle
- oracle partition by 語法Oracle
- Partition Pruning和Partition-Wise Joins
- Clique Partition
- Oracle Partition 分割槽詳細總結Oracle
- 分割槽Partition
- 今天測試了一下update partition table的part key
- 7.74 DATAOBJ_TO_PARTITIONOBJ
- 86. Partition List
- B. Range and Partition
- Oracle查詢Interval partition分割槽表內資料Oracle
- Peace or partition? Cyprus - Espresso EconomistEspresso
- 7.73 DATAOBJ_TO_MAT_PARTITIONOBJ
- 3-Partition 問題
- Codeforces 1948E Clique Partition
- 分割槽partition知識點
- Partition|Disk Utility 如何分割磁碟
- ROWNUMBER() OVER( PARTITION BY COL1
- Spark學習——分割槽Partition數Spark
- [LeetCode] 416. Partition Equal Subset SumLeetCode
- PostgreSQL DBA(94) - PG 12 Improving Partition(Select)SQL
- PostgreSQL DBA(93) - PG 12 Improving Partition(Insert)SQL
- 分割槽函式Partition By的基本用法函式
- Kafka分割槽分配策略(Partition Assignment Strategy)Kafka
- [ARC190B] L Partition 題解
- ‘map’ does not name a type
- How to Add a New Disk new partition in centos7CentOS
- PostgreSQL DBA(95) - PG 12 Partition(out of shared memory)SQL
- sql(oracle)資料處理實用總結開窗函式(over partition)使用SQLOracle函式
- TiDB 原始碼閱讀系列文章(二十)Table PartitionTiDB原始碼
- [20191203]enq: ZA - add std audit table partition.txtENQ
- Hadoop中java.lang.ClassCastException: partition解決方法HadoopJavaASTException
- 分割槽函式partition by的基本用法【轉載】函式
- MySQL 千萬級資料表 partition 實戰應用MySql
- QOJ #1280.Fibonacci Partition/Fibonacci性質大雜燴
- (二)《SQL進階教程》學習記錄--GROUP BY、PARTITION BYSQL
- ext4 lvreduce報錯superblock or the partition table is likely to be corruptVRBloC
- codeforce 686div3 F Array Partition單調棧
- 關於esp8266的SDK開發串列埠列印mismatch map 3,spi_size_map 6 system_partition_table_regist fail解決辦法串列埠AI