SY |
---|
В твоем случае lower boundary date '2013-01-01' а посему high boundary date '2013-01-01' + 1023 |
Не совсем понятно с какой целью это все было процитировано, если я в самом первом посте указал почему изначально валится именно на 20-м октября.
Что меня смущает - так это то, что после слияния проверка уже работает по другому.
Если обратить внимание, то видно что
после слияния я вставил обе строки, которые вызывали ORA-14299 и ORA-14300 и более того строку еще на год вперед.
Возможно, как-то проверка зависит от типа секций, очевидно, что после слияния, тип меняется
select interval, to_date(regexp_substr(high_value, '\d{4}-\d{2}-\d{2}'), 'yyyy-mm-dd') - 1 dt
from xmltable('/ROWSET/ROW'
passing((select dbms_xmlgen.getxmltype('select * from user_tab_partitions t where table_name = ''FACT''') from dual))
columns
interval varchar2(10) path 'INTERVAL',
high_value varchar2(30) path 'HIGH_VALUE')
order by 2;
INTERVAL DT
---------- ---------
NO 31-DEC-12
YES 21-OCT-13
YES 21-OCT-14
YES 01-JAN-15
YES 02-JAN-15
alter table fact merge partitions for (date '2015-01-01'), for (date '2015-01-02') into partition part_merged;
Table altered.
select interval, to_date(regexp_substr(high_value, '\d{4}-\d{2}-\d{2}'), 'yyyy-mm-dd') - 1 dt
from xmltable('/ROWSET/ROW'
passing((select dbms_xmlgen.getxmltype('select * from user_tab_partitions t where table_name = ''FACT''') from dual))
columns
interval varchar2(10) path 'INTERVAL',
high_value varchar2(30) path 'HIGH_VALUE')
order by 2;
INTERVAL DT
---------- ---------
NO 31-DEC-12
NO 21-OCT-13
NO 21-OCT-14
NO 02-JAN-15
Повторюсь,
1) до слияния отсчет шел от верхней границы первой секции
2) после слияния отсчет пошел от верхней границы первой из объединенных секций минус день
То есть, возможность вставить данные определяется
некоторой точкой отсчета + 1024 дня * 1024 секций.
Можно придумать еще что лимит подразумевал бы возможность вставить до 1024K секций "с дырками" независимо от первой секции, объединенной секции или еще чего-то.
Но так оно очевидно не работает.
То есть сейчас в базе, (лимит последней секции - лимит первоц секции)*1024 > 1024K.
Это нормальное поведение или нет?
Еще раз повторюсь, что это стало возможным только потому что "когда-то что-то" было смерджено.