Kaedah Oracle untuk menanyakan sama ada jadual dikunci termasuk menanyakan pandangan DBA_OBJECTS, menanyakan paparan DBA_LOCKS, menanyakan paparan V$LOCKED_OBJECT, menyoal paparan V$SESSION, menanyakan paparan DBA_BLOCKERS dan DBA_WAITERS introduksi: 1 Pandangan DBA_OBJECTS, dan dalam hasil yang dikembalikan Nilai lajur OBJECT_TYPE ialah "JADUAL", yang bermaksud bahawa jadual dikunci 2. Tanya pandangan DBA_LOCKS, dsb.
Persekitaran pengendalian tutorial ini: sistem Windows 10, Oracle versi 19c, komputer DELL G3.
Pangkalan data Oracle menyediakan berbilang kaedah untuk bertanya sama ada jadual dikunci. Berikut ialah beberapa kaedah yang biasa digunakan:
1. Tanya paparan DBA_OBJECTS:
Anda boleh menggunakan lajur OBJECT_NAME dan OBJECT_TYPE dalam paparan DBA_OBJECTS untuk bertanya sama ada jadual dikunci. Jika jadual dikunci, maka nilai lajur OBJECT_TYPE akan menjadi 'JADUAL', jika tidak ia akan menjadi beberapa nilai lain.
SELECT OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_NAME = '表名';
Jika nilai lajur OBJECT_TYPE dalam hasil yang dikembalikan ialah 'JADUAL', ini bermakna jadual itu dikunci.
2. Tanya paparan DBA_LOCKS:
Anda boleh menggunakan paparan DBA_LOCKS untuk menanyakan maklumat kunci dalam pangkalan data. Dengan menanyakan pandangan ini, anda boleh mengetahui jadual yang dikunci dan jenis kunci.
SELECT OBJECT_NAME, LOCK_TYPE FROM DBA_LOCKS WHERE OBJECT_NAME = '表名';
Jika terdapat nama jadual yang sepadan dalam hasil yang dikembalikan, ini bermakna jadual itu dikunci. Lajur LOCK_TYPE boleh memberitahu anda jenis kunci, seperti kunci kongsi (Dikongsi) atau kunci eksklusif (Eksklusif).
3. Pandangan V$LOCKED_OBJECT: Pandangan
V$LOCKED_OBJECT memberikan maklumat tentang objek terkunci. Dengan menanyakan pandangan ini, anda boleh mengetahui objek (termasuk jadual) yang dikunci.
SELECT OBJECT_NAME FROM V$LOCKED_OBJECT WHERE OBJECT_NAME = '表名';
Jika terdapat nama jadual yang sepadan dalam hasil yang dikembalikan, ini bermakna jadual itu dikunci.
4 Tanya paparan V$SESSION:
Anda boleh bertanya pada paparan V$SESSION untuk melihat maklumat sesi yang sedang dilaksanakan, termasuk sama ada sesi memegang kunci.
SELECT s.SID, s.SERIAL#, s.STATUS, l.TYPE, l.LMODE, l.REQUEST FROM V$SESSION s, V$LOCKED_OBJECT l WHERE s.SID = l.SESSION_ID AND l.OBJECT_NAME = '表名';
Jika terdapat maklumat sesi yang sepadan dalam hasil yang dikembalikan, ini bermakna jadual dikunci.
5. Pertanyaan paparan DBA_BLOCKERS dan DBA_WAITERS:
Anda boleh menggunakan paparan DBA_BLOCKERS dan DBA_WAITERS untuk bertanya maklumat sesi yang sedang menunggu atau menahan kunci. Dengan menanyakan dua paparan ini, anda boleh mengetahui sesi yang sedang menunggu atau memegang kunci di atas meja.
SELECT b.SID, b.SERIAL#, b.ORACLE_USERNAME, w.SID, w.SERIAL#, w.ORACLE_USERNAME FROM DBA_BLOCKERS b, DBA_WAITERS w WHERE b.SID = w.BLOCKING_SESSION AND w.WAITING_SESSION = (SELECT SID FROM V$SESSION WHERE USERNAME = '用户名') AND w.OBJECT_ID = (SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME = '表名');
Jika terdapat maklumat sesi yang sepadan dalam hasil yang dikembalikan, ini bermakna jadual dikunci.
Di atas ialah beberapa kaedah yang biasa digunakan untuk bertanya sama ada jadual dalam pangkalan data Oracle dikunci. Pilih kaedah yang sesuai untuk membuat pertanyaan mengikut situasi sebenar untuk memahami status kunci jadual.
Atas ialah kandungan terperinci Bagaimana untuk bertanya sama ada jadual dikunci dalam Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!