Rumah > pangkalan data > Oracle > Apakah sebab mengapa Oracle mengunci meja?

Apakah sebab mengapa Oracle mengunci meja?

WBOY
Lepaskan: 2022-02-17 17:49:53
asal
14576 orang telah melayarinya

Dalam Oracle, sebab untuk mengunci jadual ialah apabila atur cara melakukan sisipan pada jadual dan belum melakukan lagi, dan atur cara lain juga melakukan sisipan pada jadual yang sama, sumber akan berlaku pada ini masa. Pengecualian sibuk, iaitu, kunci meja.

Apakah sebab mengapa Oracle mengunci meja?

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Apakah sebab Oracle mengunci jadual

Sebab utama untuk mengunci jadual ialah:

(1) Apabila program A melaksanakan sisipan jadualA dan mempunyai belum komited, Program B juga memasukkan jadualA Pada masa ini, pengecualian sibuk sumber akan berlaku, iaitu jadual kunci

(2) Jadual kunci sering berlaku serentak dan bukannya selari (secara selari, apabila satu utas. mengendalikan pangkalan data, Thread lain tidak boleh mengendalikan pangkalan data, CPU dan prinsip peruntukan I/O)

Kaedah untuk mengurangkan kebarangkalian mengunci jadual:

(1) Kurangkan masa antara pelaksanaan daripada memasukkan, mengemas kini dan memadamkan kenyataan untuk memberikan masa. Khususnya, pelaksanaan kelompok ditukar kepada pelaksanaan tunggal, dan kelajuan bukan pelaksanaan SQL itu sendiri dioptimumkan

(2) Jika terdapat pengecualian, perkara itu digulung semula

Sebab untuk mengunci jadual mungkin data baris telah diubah suai dan terlupa Menyerahkan juga akan menyebabkan jadual dikunci.

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 Semak sesi yang menyebabkannya.

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. Semak mana SQL 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

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

1025 ialah sid dan 41 ialah siri#.

2 Sebab pengguna Oracle sering dikunci

Apabila log masuk, ia menggesa: pengguna ujian ialah. dikunci

1 Log masuk sebagai pengguna dengan peranan dba 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. Lihat masa terkunci tertentu

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.

Tutorial yang disyorkan: "Tutorial Video Oracle "

Atas ialah kandungan terperinci Apakah sebab mengapa 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan