Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana menemukan baris yang terkunci di Oracle

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan baris terakhir dari tabel Oracle

  2. Apakah ada ekspresi CASE seperti itu di JPQL?

  3. ORA-16205 Meningkatkan ke 11.2.0.3

  4. Apakah pernyataan DDL selalu memberi Anda komit implisit, atau bisakah Anda mendapatkan rollback implisit?

  5. Kebingungan Zona Waktu Oracle 10g