Oracle
Konsep penguncian sangat berbeda dari sistem lainnya.
Ketika sebuah baris di Oracle
dikunci, catatan itu sendiri diperbarui dengan nilai baru (jika ada) dan, sebagai tambahan, kunci (yang pada dasarnya adalah penunjuk ke kunci transaksi yang berada di segmen rollback) ditempatkan tepat ke dalam catatan.
Ini berarti mengunci record di Oracle
berarti memperbarui metadata catatan dan mengeluarkan penulisan halaman logis. Misalnya, Anda tidak dapat melakukan SELECT FOR UPDATE
pada tablespace hanya-baca.
Lebih dari itu, catatan itu sendiri tidak diperbarui setelah komit:sebagai gantinya, segmen rollback diperbarui.
Ini berarti bahwa setiap record menyimpan beberapa informasi tentang transaksi yang terakhir diperbarui, bahkan jika transaksi itu sendiri sudah lama mati. Untuk mengetahui apakah transaksi itu hidup atau tidak (dan, karenanya, apakah catatan itu hidup atau tidak), diperlukan untuk mengunjungi segmen rollback.
Oracle tidak memiliki manajer kunci tradisional, dan ini berarti memperoleh daftar semua kunci memerlukan pemindaian semua catatan di semua objek. Ini akan memakan waktu terlalu lama.
Anda dapat memperoleh beberapa kunci khusus, seperti objek metadata yang dikunci (menggunakan v$locked_object
), kunci menunggu (menggunakan v$session
) dll, tetapi bukan daftar semua kunci pada semua objek dalam database.