ORA-14074: Partition Bound Must Collate Higher Than That Of The Last Partition 處理


今天遇到一個Oracle增加分區的問題,以下是我處理的步驟:

ORA-14074: 分區界限必須調整為高於最后一個分區界限

1、錯誤展示

收到運維人員反饋,最新查詢收費信息變慢,初步判定,由於2020年新的分區沒有維護,導致數據查詢2020年的業務數據執行慢,

 

SQL>select  table_name , partition_name,high_value from user_tab_partitions where table_name='JW_DF_FXMXB'

TABLE_NAME           PARTITION_NAME                 HIGH_VALUE

-------------------- ------------------------------ --------------------------------------------------------------------------------

JW_DF_FXMXB              P201912                        TO_DATE(' 2011-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

JW_DF_FXMXB              P201911                       TO_DATE(' 2011-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

JW_DF_FXMXB              P201910                       TO_DATE(' 2011-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

JW_DF_FXMXB              PMAX                       TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA

 

SQL> ALTER TABLE JW_DF_FXMXB ADD PARTITION P202001 VALUES LESS THAN ('202002');;

ALTER TABLE JW_DF_FXMXB ADD PARTITION P202001 VALUES LESS THAN ('202002');

                                 *

ERROR at line 1:

ORA-14074: partition bound must collate higher than that of the last partition

2、解決:

因為表上已經有了pmax最大分區,這個時候oracle是不直接允許增加分區的. 而是通過拆分分區實現,只要只用下列語句增加分區就不會發生該錯誤.
————————————————
方式一:SPLIT

1)SPLIT PARTITION


ALTER TABLE JW_DF_FXMXB SPLIT PARTITION pmax AT (202001) INTO (PARTITION P60, PARTITION PMAX) UPDATE GLOBAL INDEXES ;
ALTER TABLE JW_DF_FXMXB SPLIT PARTITION pmax AT (202002) INTO (PARTITION P70, PARTITION PMAX) UPDATE GLOBAL INDEXES ;
ALTER TABLE JW_DF_FXMXB SPLIT PARTITION pmax AT (202003) INTO (PARTITION P80, PARTITION PMAX) UPDATE GLOBAL INDEXES ;
ALTER TABLE JW_DF_FXMXB SPLIT PARTITION pmax AT (202004) INTO (PARTITION P90, PARTITION PMAX) UPDATE GLOBAL INDEXES ;
ALTER TABLE JW_DF_FXMXB SPLIT PARTITION pmax AT (202005) INTO (PARTITION P100, PARTITION PMAX) UPDATE GLOBAL INDEXES ;

但是這種用的實在別扭。

 

方式二:DROP PARTITION

直接刪除PMAX  PARTITION,再執行ADD PARTITION就行,簡單實用。

ALTER TABLE JW_DF_FXMXB DROP PARTITION "PMAX" UPDATE GLOBAL INDEXES
ALTER TABLE JW_DF_FXMXB ADD PARTITION "XX" VALUES LESS THAN (100) ;
ALTER TABLE JW_DF_FXMXB ADD PARTITION "PMAX" VALUES LESS THAN (MAXVALUE);
————————————————
3、英文引用

While adding a partition to a partitioned table, got below error.

SQL> alter table dbaclass_QTAB add partition dbaclass_q4 VALUES LESS THAN (TO_DATE(’01-APR-1998′,’DD-MON-YYYY’));
alter table dbaclass_QTAB add partition dbaclass_q4 VALUES LESS THAN (TO_DATE(’01-APR-1998′,’DD-MON-YYYY’))

SOLUTION:

This error occurs when we are trying to add a partition between two partitions where MAXVALUE is defined for that table.

 

ERROR at line 1:
ORA-14074: partition bound must collate higher than that of the last partition

 

So to avoid this error, the need to split the partition, instead of adding.

 SQL> select partition_name,high_value from dba_tab_partitions where table_name='DBACLASS_QTAB';

 
PARTITION_NAME HIGH_VALUE
-------------- --------------------------------------------------------------------------------
DBACLASS_QM    MAXVALUE
DBACLASS_Q3    TO_DATE(' 1998-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
DBACLASS_Q2    TO_DATE(' 1998-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
DBACLASS_Q1    TO_DATE(' 1998-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM