Apa itu Urutan di oracle
- Oracle Sequence adalah objek yang dibuat pengguna yang dapat dibagikan oleh banyak pengguna untuk menghasilkan bilangan bulat unik
- Penggunaan paling umum dari urutan adalah untuk menghasilkan kolom kunci utama dalam tabel.
- Urutan ini dihasilkan oleh rutinitas internal oracle sehingga kita tidak perlu khawatir tentang . Ini akan menghemat tim3 karena pengembang tidak perlu membuat urutan produksi rutin
- Pembuat nomor urut, dapat dikonfigurasi untuk menambah atau mengurangi
- Hanya ada di kamus data, bisa terbatas atau berulang (siklus).
- Kita perlu membuat hak istimewa urutan untuk membuat urutan
Membuat urutan dilakukan dengan menggunakan
BUAT URUTAN
[MULAI DENGAN] [NAIK SEPERTI] [TIDAK/MINVALUE] [TIDAK/MAXVALUE] [TIDAK/SIKLUS] [TIDAK ADA/CACHE];
|
Deskripsi setiap nilai
MULAI DENGAN | Ini mendefinisikan nilai awal dari urutan (default 1 ), |
NAIK SECARA | Ini mendefinisikan tingkat kenaikan atau penurunan (default 1 ), |
MINVALUE | Ini mendefinisikan nilai terendah untuk urutan menurun |
MAXVALUE | Ini mendefinisikan nilai tertinggi untuk urutan yang meningkat |
SIKLUS | Ini menentukan apakah urutan akan berulang |
CACHE | Ini mendefinisikan blok nomor urut yang disimpan dalam memori (default 20 ), NOCACHE memaksa kamus data diperbarui untuk setiap nomor yang dihasilkan oleh urutan |
Contoh
buat urutan test_tech mulai dengan 1 kenaikan sebesar 1 nilai maksimal 10000 siklus cache 20;
buat urutan test_tech1
mulai dengan 1 |
Cara menggunakan urutan
Untuk menggunakan urutan cukup gunakan kolom semu CURRVAL dan NEXTVAL
Kolom semu BERIKUTNYA
Ini digunakan untuk menghasilkan nomor urut berurutan dari urutan yang ditentukan
Kolom semu CURRVAL
Ini memegang urutan yang baru saja dibuat pengguna
PILIH TEST_TECH.NEXTVAL DARI DUAL;
PILIH TEST_TECH.CURRVAL DARI DUAL; PILIH TEST_TECH.NEXTVAL DARI DUAL; |
Cara Memodifikasi urutan
Kita bisa memodifikasi urutannya menggunakan alter sequence.
SQL> MENGUBAH URUTAN tech_test1 PENINGKATAN 50; |
Perubahan hanya berdampak pada penggunaan urutan di masa mendatang.
Anda harus menjadi pemilik atau memiliki hak istimewa untuk mengubah urutan tersebut
Kami tidak dapat mengubah mulai dengan opsi. Untuk urutan ini perlu dihapus dan dibuat ulang
Perubahan urutan juga divalidasi
Cara menghilangkan urutan
Menjatuhkan tampilan dilakukan dengan menggunakan perintah DROP sequence.
Drop sequence test_tech ; |
Tampilan Kamus untuk melihat data urutan
detail urutan dapat ditanyakan dari kamus dengan menanyakan USER_SEQUENCES, ALL_ SEQUENCES atau DBA_ SEQUENCES. Ada tiga kategori tampilan
USER_% | Tampilan ini berisi informasi objek yang hanya dimiliki oleh pengguna
Contoh USER_TABLES,USER_TAB_COLS |
SEMUA-% | Tampilan ini berisi informasi objek yang dapat diakses pengguna dalam database.
Contoh ALL_TABLES,ALL_TAB_COLS |
DBA_% | Tampilan ini berisi informasi semua objek dalam sistem dan ini adalah tampilan terbatas yang dapat diakses oleh pengguna yang memiliki peran DBA
Contoh DBA_TABLES,DBA_TAB_COLS |
DBA_% tampilan tentang informasi urutan | SEMUA_% tampilan tentang informasi urutan | USER_% tampilan tentang informasi urutan | |
Lihat tentang urutan informasi | dba_sequences | semua_ urutan | urutan_pengguna |
Untuk membuat daftar semua urutan yang dimiliki oleh penggunaan saat ini
pilih sequence_name dari user_sequences;
Untuk membuat daftar semua urutan dalam database:
Pilih pemilik, sequence_name dari dba_sequences;
Untuk membuat daftar urutan yang dapat diakses oleh pengguna saat ini:
pilih sequence_name dari all_sequences
Bagaimana cara menentukan semua informasi tentang barisan?
pilih sequence_name,min_value,max_value,increment_by,last_number
DARI DBA_SEQUENCES
di mana OWNER =‘
dan sequence_NAME =‘
Cara mengambil nilai saat ini dari urutan oracle tanpa menaikkannya
Kolom last_number menampilkan nomor urut berikutnya yang tersedia jika tidak ada cache yang ditentukan
SELECT last_number
DARI user_sequences
WHERE sequence_name =‘ |
Cara mengekstrak definisi urutan (pernyataan DDL) dari database Oracle tanpa harus melalui setumpuk tampilan kamus
Sintaks:
SQL> setel panjang 1000 SQL> setel ukuran halaman 0pilih DBMS_METADATA.GET_DDL(‘SEQUENCE’,'
|
Cara menyetel nilai LASTVALUE di Oracle Sequence
UBAH URUTAN tech_seq_name PENINGKATAN 250;
PILIH tech_seq_name.nextval FROM dual; ALTER URUTAN tech_seq_name NAIK 1; |
Cara Mengatur Ulang Urutan di Oracle
Ada banyak cara.
a) Kita dapat menjatuhkan dan membuat ulang urutannya. Namun, ini membatalkan semua objek dependen (pemicu/prosedur tersimpan, dll.)
b) Kami dapat menyetel ulang dengan langkah-langkah sederhana ini
Langkah 1:Temukan nilai terbaru dari barisan
Pilih tech_seq_name.nextval FROM dual; Langkah 2:ubah urutan dengan penambahan nilai negatif dari nilai terbaru
ALTER SEQUENCE tech_seq_name PENINGKATAN MENURUT - Langkah 3 Lakukan nextval untuk menyetelnya kembali ke nol PILIH tech_seq_name.nextval FROM dual; Langkah 4:Ubah kenaikan kembali ke 1 ALTER URUTAN tech_seq_name NAIK 1; Contoh PILIH tech_seq_name.nextval FROM dual; —————————————— 250 ALTER SEQUENCE tech_seq_name PENINGKATAN OLEH -250; PILIH tech_seq_name.nextval FROM dual; ALTER URUTAN tech_seq_name NAIK 1; |
Anda dapat menemukan lebih banyak di tautan ini
Cara mengatur ulang urutan
Dampak caching urutan
Urutan di-cache dengan tujuan meningkatkan kinerja pengambilan. Di RAC, setiap instance menyimpan nilai cache
Kami dapat memiliki celah secara berurutan saat menggunakan cache karena alasan berikut
- Pembalikan terjadi
- Sistem crash atau instance crash
- Urutan digunakan di tabel lain
Ada fitur baru di Oracle 12c untuk sequence
Urutan sesi
Dengan kata kunci baru Oracle Database 12C SESSION, tersedia GLOBAL yang dapat ditentukan selama pembuatan urutanCREATE SEQUENCE test_session_seq MULAI DENGAN 1 INCREMENT BY 1 SESSION;
CREATE SEQUENCE test_global_seq MULAI DENGAN 1 PENINGKATAN DENGAN 1 GLOBAL;
Global | Sesi |
membuat urutan standar yang terkenal di rilis sebelumnya. Ini adalah default. | membuat urutan sesi jenis baru, yang merupakan jenis urutan khusus yang dirancang khusus untuk digunakan dengan tabel sementara global yang memiliki visibilitas sesi. Urutan sesi mengembalikan rentang unik nomor urut hanya dalam satu sesi, tetapi tidak di seluruh sesi. Perbedaan lainnya adalah bahwa urutan sesi tidak persisten. Jika sesi hilang, begitu juga keadaan urutan sesi yang diakses selama sesi. |