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.
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;
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;
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;
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;
3. Entsperren
SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss’;
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!