Кэширование последовательностей Oracle

Я пытаюсь реализовать последовательность в базе данных Oracle, чтобы действовать как создатель суррогатного ключа для таблицы. Из соображений производительности я хочу, чтобы эта последовательность кэшировалась. Я читал, что при использовании кэшированных последовательностей возможны подводные камни, поскольку откаты и сбои экземпляров приводят к пропущенным значениям.

Это заставило меня задуматься. Допустим, я создаю последовательность с размером кэша 100. Затем я делаю вставку из 50 записей в свою таблицу со значением последовательности в качестве первичного суррогатного ключа. После фиксации текущее значение последовательности еще не было записано на диск. Предположим, в этот момент у меня произошел сбой экземпляра. Когда база данных возвращается, я понимаю, что текущее значение последовательности будет сброшено до последнего значения, записанного на диск.

Если бы я попытался вставить еще 50 записей в мою таблицу, я теперь нарушу ограничение первичного ключа, потому что последовательность была сброшена до последнего состояния с диска, и первичные ключи теперь снова используются? Если это так, как я мог бы предотвратить это?

Ответы на вопрос(3)

Ваш ответ на вопрос