It's a bit more complicated than just a sequence, because sequence generation is too slow for bulk insert processes. Instead, the sequence has an interval (size dependent on version) for a gap in values and a pipe is used to store the next value when a cursor is shut down. When the next cursor comes along, it will fetch off the pipe before consulting the sequence, to prevent a gap. If you shut down the instance, the DBMS_PIPE objects are lost, resulting in a gap in subsequent inserts (though there is a [somewhat elderly] KB document that addresses a workaround).
- V