Saya akan bertaruh bahwa database Anda menjalankan RAC (Real Application Clusters). Dengan asumsi itu masalahnya dan Anda membuat urutan dengan semua pengaturan default, itulah perilaku yang diharapkan.
Pengaturan default adalah untuk men-cache 20 nilai. Setiap node di cluster RAC, secara default, akan memiliki cache terpisah. Dengan asumsi bahwa Anda memiliki sebuah cluster dengan dua node A dan B, pertama kali nextval
diminta pada A, A akan menyimpan nilai 1-20 dan mengembalikan nilai 1. Jika permintaan berikutnya untuk nextval
dibuat pada B, B akan menyimpan nilai 21-40 dan mengembalikan nilai 21. Dari sana, nilai yang Anda dapatkan akan bergantung pada simpul tempat koneksi Anda berjalan.
Secara umum, ini seharusnya tidak menjadi masalah. Urutan menghasilkan angka unik. Angka-angka umumnya tidak perlu berurutan. Jika Anda benar-benar membutuhkan nilai untuk dikembalikan secara berurutan karena Anda melakukan sesuatu seperti mengurutkan berdasarkan nilai yang dihasilkan urutan untuk menentukan baris "pertama" atau "terakhir", Anda dapat menggunakan ORDER
klausa saat Anda membuat urutan untuk memaksa nilai dikembalikan secara berurutan. Namun, itu memiliki implikasi kinerja negatif dalam database RAC, karena meningkatkan jumlah komunikasi yang perlu dilakukan di antara node untuk menyinkronkan nilai yang dikembalikan. Jika Anda perlu menentukan baris "pertama" atau "terakhir", biasanya lebih baik menambahkan date
atau timestamp
kolom ke tabel dan urutkan dengan itu daripada mengasumsikan bahwa kunci utama dihasilkan secara berurutan.