После секционирования таблиц ошибка: "ORA-14402: обновление ключа секции приведет к ее изменению"
Был написан код с использованием Spring Data Jpa. Поставщик Jpa - Hibernate.
Были созданы таблицы, в которые сохранялись и читались данные.
Когда в таблицы по некоторым полям было добавлено секционирование, стала появляться ошибка:
ORA-14402: обновление ключа секции приведет к ее изменению
Как работать с такими бизнес-объектами из Java?
Кто работал с такими таблицами ?
Ответы (1 шт):
Из описания ошибки:
$ oerr ora 14402
14402, 00000, "updating partition key column would cause a partition change"
// *Cause: An UPDATE statement attempted to change the value of a partition
// key column causing migration of the row to another partition
// *Action: Do not attempt to update a partition key column or make sure that
// the new partition key is within the range containing the old
// partition key.
следует, что изменение ключа секционирования приведёт к изменению секции. То есть, физическому перемещению записи(ей) из одной секции в другую, что по умолчанию не допускается. Проверьте эти измнения на соответствие бизнес логике.
create table ptab1 (id number, created date)
partition by range (created) interval (numtoyminterval (1,'year')) (
partition part2019 values less than (date'2020-01-01'),
partition part2020 values less than (date'2021-01-01'));
insert into ptab1
select 1, date'2019-06-30' from dual union all
select 2, date'2020-04-30' from dual;
update ptab1 set created=date'2020-01-30' where id=1;
ORA-14402: updating partition key column would cause a partition change
Если есть уверенность, что так и задумано, то включите для таблицы перемещение записей:
select table_name, row_movement
from user_tables where table_name = upper ('ptab1');
TABLE_NAME ROW_MOVEMENT
---------------- ----------------
PTAB1 DISABLED
alter table ptab1 enable row movement;
Table PTAB1 altered.
update ptab1 set created=date'2020-01-30' where id=1;
1 row updated.