In Oracle besteht der Grund für das Sperren der Tabelle darin, dass, wenn ein Programm eine Einfügung für eine Tabelle ausführt und noch kein Commit durchgeführt wurde, ein anderes Programm ebenfalls eine Einfügung für dieselbe Tabelle ausführt, dann eine Ausnahme wegen Ressourcenauslastung auftritt , Tisch sperren.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.
Die Hauptgründe für das Sperren der Tabelle sind:
(1) Programm A führt die Einfügung von TabelleA aus, und vor dem Festschreiben fügt Programm B auch TabelleA ein Dieses Mal ist die Ausnahme, wenn die Ressource ausgelastet ist, die Sperrtabelle /o-Zuweisungsprinzip)
Methoden zur Verringerung der Wahrscheinlichkeit, die Tabelle zu sperren:
(1) Reduzieren Sie die Zeit zwischen der Ausführung von Einfügungs-, Aktualisierungs- und Löschanweisungen und dem Festschreiben. Insbesondere wird die Stapelausführung in Einzelausführung geändert und die Nichtausführungsgeschwindigkeit von SQL selbst optimiert
(2) Wenn die Transaktion abnormal zurückgesetzt wird
Der Grund für das Sperren der Tabelle kann sein, dass die Zeilendaten geändert wurden und Es wird vergessen, die Zeilendaten zu übermitteln, 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;
2. Überprüfen Sie, welche Tabelle gesperrt ist
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;
3 Überprüfen Sie, welche Sitzung die Sperre verursacht
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;
5. Kill Löschen Sie den entsprechenden Prozess.
Führen Sie den Befehl aus: alter system kill session'1025,41'; , es fordert: Testbenutzer ist gesperrt. Melden Sie sich als Benutzer mit der zu entsperrenden Datenbankrolle an. Stellen Sie zunächst das spezifische Zeitformat ein, um die spezifische Zeit anzuzeigen Zeit
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.
Empfohlenes Tutorial: „
Oracle Video Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Grund, warum Oracle die Tabelle sperrt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!