Rumah> masalah biasa> teks badan

Bilakah Oracle mengunci meja?

DDD
Lepaskan: 2023-06-13 09:46:04
asal
3197 orang telah melayarinya

Situasi jadual kunci Oracle termasuk: 1. Program A melakukan sisipan pada jadualA, tetapi sebelum komit, program B juga melakukan sisipan pada jadualA Pada masa ini, pengecualian sibuk sumber akan berlaku, iaitu jadual kunci ; 2. Penguncian jadual selalunya berlaku secara serentak dan bukannya selari, apabila satu utas mengendalikan pangkalan data, utas lain tidak boleh mengendalikan prinsip peruntukan CPU dan I/O.

Bilakah Oracle mengunci meja?

Persekitaran pengendalian tutorial ini: sistem Windows 10, Oracle versi 19c, komputer Dell G3.

Sebab utama untuk mengunci jadual ialah:

1 Program A melaksanakan sisipan pada jadualA, tetapi sebelum komit, program B juga memasukkan jadual A. pengecualian bahawa sumber sibuk akan berlaku, iaitu jadual kunci

2. Jadual kunci selalunya berlaku secara serentak dan bukannya selari (secara selari, apabila satu utas mengendalikan pangkalan data, utas lain tidak boleh mengendalikan pangkalan data, cpu dan prinsip peruntukan i/o)

Kaedah untuk mengurangkan kebarangkalian mengunci jadual:

1 , dan padamkan pernyataan untuk dilakukan. Khususnya, tukar pelaksanaan kelompok kepada pelaksanaan tunggal dan optimumkan kelajuan bukan pelaksanaan sql itu sendiri

2. Balikkan perkara jika terdapat pengecualian

Sebab untuk mengunci jadual mungkin kerana data baris telah diubah suai dan terlupa untuk menyerahkan , juga akan menyebabkan penguncian jadual.

1. Adalah disyorkan untuk menyemak sebab sebelum membuat keputusan semasa mengunci meja.

1. Kod untuk pertanyaan jadual kunci mempunyai bentuk berikut:

select count(*) from v$locked_object; select * from v$locked_object;
Salin selepas log masuk

2 Semak jadual mana yang dikunci

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
Salin selepas log masuk

3

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
Salin selepas log masuk

4. Periksa SQL mana yang menyebabkan masalah

select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid and b.SQL_ID = c.sql_id and c.sql_id = '' order by b.logon_time;
Salin selepas log masuk

5 Matikan proses yang sepadan

Laksanakan arahan: alter system kill session'1025,41';

Antaranya, 1025 ialah sid dan 41 ialah siri#.

2 Sebab mengapa pengguna Oracle sering dikunci

Apabila log masuk, ia menggesa: pengguna ujian dikunci

1. Gunakan peranan dba Pengguna log masuk untuk membuka kunci, mula-mula tetapkan format masa tertentu untuk melihat masa tertentu

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
Salin selepas log masuk

Sesi diubah.

2

SQL> select username,lock_date from dba_users where username='TEST'; USERNAME LOCK_DATE ------------------------------ ------------------- TEST 2021-03-10 08:51:03
Salin selepas log masuk

3. Buka kunci

SQL> alter user test account unlock;
Salin selepas log masuk
Pengguna diubah.

Atas ialah kandungan terperinci Bilakah Oracle mengunci meja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!