Jag kommer att satsa på att din databas kör RAC (Real Application Clusters). Förutsatt att så är fallet och att du skapar sekvensen med alla standardinställningar, är det det förväntade beteendet.
Standardinställningen är att cache 20 värden. Varje nod i RAC-klustret kommer som standard att ha en separat cache. Förutsatt att du har ett kluster med två noder A och B, första gången en nextval
begärs på A, cachelagrar A värdena 1-20 och returnerar värdet 1. Om nästa begäran om en nextval
görs på B, cachelagrar B värdena 21-40 och returnerar värdet 21. Därifrån kommer värdet du får att bero på noden som din anslutning råkar köra på.
Generellt sett borde detta inte vara ett problem. Sekvenser genererar unika nummer. Siffrorna behöver i allmänhet inte vara konsekutiva. Om du verkligen behöver att värden ska returneras sekventiellt eftersom du gör något som att sortera efter det sekvensgenererade värdet för att bestämma den "första" eller "sista" raden, kan du använda ORDER
när du skapar sekvensen för att tvinga värden att returneras i ordning. Det har dock en negativ prestandaimplikation i en RAC-databas, eftersom det ökar mängden kommunikation som måste pågå mellan noderna för att synkronisera de värden som returneras. Om du behöver bestämma den "första" eller "sista" raden är det generellt sett bättre att lägga till ett date
eller en timestamp
kolumn till tabellen och ordna efter det istället för att anta att primärnyckeln genereras sekventiellt.