Последовательности Oracle работают таким образом. Они только гарантируют уникальность, но не гарантируют последовательные значения, поскольку это препятствует параллелизму.
То, что они делают внутренне, более или менее таково: когда вы запрашиваете следующее значение в последовательности, Oracle предварительно вычисляет кусок значений (в вашем случае 5000-5099) и помещает его в кеш последовательности, а затем устанавливает seq. nextval = 5100 на диске. Но если из-за активности БД должен отбросить вашу порцию значений из кэша, при следующем обращении к seq.nextval потребуется еще одна порция 5100-5199. То есть Oracle даже не будет пытаться сохранить значения последовательности, которые были помещены в кеш.
Суть в том, что кэш последовательности представляет собой структуру памяти, которая быстрее и более распараллеливается, чем сама последовательность, которая является структурой на диске. Поскольку мы хотим увеличить масштаб, мы хотим избегать максимально возможного выхода на диск.
Вы можете контролировать размер порции для данной последовательности, используя предложение CACHE в вашей последовательности DDL:
CREATE SEQUENCE seq2
CACHE 50;