Значения секвенции хранятся в таблице SYSTEM.SEQ $ (я думаю), и кэш сохраняется в памяти следующих используемых значений, причем размер этого кэша зависит от значения CACHE для последовательности .
Когда кэш исчерпан, таблица SEQ $ обновляется до нового значения (непоследовательным образом - т.е. без применения управления сеансом пользователя), и следующие, скажем, 100 значений (если CACHE = 100) читать из памяти.
Предположим, что вы используете последовательность с размером кэша 20. Когда вы выбираете определенное значение из последовательности, скажем, 1400, таблица SEQ $ обновляется до значения 1420. Даже если вы откатываете транзакцию SEQ $ по-прежнему имеет это значение до тех пор, пока не будут использованы следующие 20 значений последовательности, после чего SEQ $ будет обновлено до 1440. Если затем вы просто использовали значение 1423, и происходит сбой экземпляра, то когда система перезапускает следующее значение будет читаться из последовательности будет 1440.
Итак, да, целостность последовательности будет сохранена, и числа не будут «переизданы». Обратите внимание, что то же самое относится к постепенному выключению - при перезапуске вы получите новое значение 1440 в приведенном выше примере. По этой причине последовательности не гарантируются свободными от пробелов (также потому, что использование значения и последующий откат не восстанавливают это значение в кэш).