Heim > häufiges Problem > Hauptteil

Wann sperrt Oracle eine Tabelle?

DDD
Freigeben: 2023-06-13 09:46:04
Original
3287 Leute haben es durchsucht

Oracle-Sperrtabellensituationen umfassen: 1. Programm A führt eine Einfügung für TabelleA durch, aber vor dem Festschreiben führt Programm B auch eine Einfügung für TabelleA durch. Zu diesem Zeitpunkt tritt eine Ausnahme wegen Ressourcenauslastung auf, bei der es sich um eine Tabellensperre handelt. Sperrtabellen treten häufig bei Parallelität und nicht bei Parallelität auf. Wenn ein Thread die Datenbank betreibt, kann der andere Thread die CPU- und E/A-Zuweisungsprinzipien nicht bedienen.

Wann sperrt Oracle eine Tabelle?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle Version 19c, Dell G3-Computer.

Die Hauptgründe für das Sperren der Tabelle sind:

1. Programm A führt die Einfügung in TabelleA aus. Zu diesem Zeitpunkt tritt eine Ausnahme für die Ressourcenauslastung auf .

2. Tabellensperren erfolgen häufig in Parallelität und nicht in Parallelität (wenn ein Thread die Datenbank betreibt, kann der andere Thread das Prinzip der Datenbank-, CPU- und E/A-Zuweisung nicht ausführen).

Methoden zur Reduzierung der Wahrscheinlichkeit von Tabellensperre:

1. Reduzieren Sie die Zeit zwischen der Ausführung von Einfügungs-, Aktualisierungs- und Löschanweisungen und dem Festschreiben. Insbesondere wird die Stapelausführung auf Einzelausführung umgestellt und die Nichtausführungsgeschwindigkeit von SQL selbst optimiert.

2 Wenn eine Ausnahme auftritt, wird die Tabelle möglicherweise gesperrt wird geändert und die Zeilendaten werden nicht übermittelt, was ebenfalls dazu führt, dass die Tabelle gesperrt wird.

1. Es wird empfohlen, den Grund für die Sperrung der Uhr zu prüfen, bevor Sie eine Entscheidung treffen.

1. Der Code für die Sperrtabellenabfrage hat die folgende Form:

select count(*) from v$locked_object;
select * from v$locked_object;
Nach dem Login kopieren

3. Überprüfen Sie, welche Sitzung die Sperre verursacht

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;
Nach dem Login kopieren

5. Beenden Sie den entsprechenden Prozess. Führen Sie den Befehl aus: alter system kill session'1025,41'; Anmelden: Test Der Benutzer ist gesperrt

1. Melden Sie sich als Benutzer mit der DBA-Rolle an, um die bestimmte Zeit anzuzeigen.

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;
Nach dem Login kopieren

Sitzung geändert.

2

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;
Nach dem Login kopieren

3. Entsperren

SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
Nach dem Login kopieren

Benutzer geändert.

Das obige ist der detaillierte Inhalt vonWann sperrt Oracle eine Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage