Oracle锁表故障处理一例
一次开发人员直接在数据库服务器上做deletetable操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据
一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。
询问操作过程知道了是由锁表造成,,最终处理;本文只是模拟锁表处理过程,下次遇到相同问题可以快速处理。
如果不清楚原因,可以通过先通过等待事件进行分析。
SQL> select sid,EVENT from v$session_wait where wait_class'Idle';
SID EVENT
---------- ----------------------------------------------------------------
158 SQL*Net message to client
159 enq: TX - row lock contention
SQL>
2. 查看数据库是否有锁
SQL> select * from v$lock where block=1;
3. 查询lock锁, 看谁锁谁
说明:BLOCK为1的行,表示资源由它锁定。REQUEST表示需要这个锁。
SQL> SELECT sid, id1, id2, lmode, block,request, type
FROM V$LOCK
WHERE id1 IN (SELECT id1 FROM V$LOCK WHERE lmode = 0)
ORDER BY id1, request;
SID ID1 ID2 LMODE BLOCK REQUEST TY
---------- ---------- ---------- ---------- ---------- ---------- --
153 655397 308 6 1 0 TX
157 655397 308 0 0 6 TX
4. 查询锁表的SID,Serial#,用户、开始时间,然后就可以杀掉该进程了。
SQL> select t1.sid,t1.serial#,t1.username,t1.logon_time from v$session t1,v$locked_object t2 where t1.sid = t2.session_id order by t1.logon_time ;
SID SERIAL# USERNAME LOGON_TIME
---------- ---------- ------------------------------ -------------------
153 12 ABC 2014-11-17 09:19:33
157 106 ABC 2014-11-17 09:54:24
5. 可以进一步查询出SID,SPID等信息
SQL> select s.username, s.osuser, s.sid, s.serial#, p.spid, s.program,s.STATUS
from v$session s,v$process p
where s.paddr = p.addr and s.username is not null;
USERNAME OSUSER SID SERIAL# SPID PROGRAM STATUS
------------------------------ ------------------------------ ---------- ---------- ------------ ------------------------------------------------ --------
ABC oracle 153 12 4290 sqlplus@oradb (TNS V1-V3) INACTIVE
SYS oracle 150 12 4417 sqlplus@oradb (TNS V1-V3) ACTIVE
ABC oracle 157 119 4830 sqlplus@oradb (TNS V1-V3) ACTIVE
要么在oracle进行杀掉,以及在操作系统下杀掉,对于status为killed的语句,应用通过操作系统kill命令才能最终最快杀掉。
alter system kill session '153,12';
alter system kill session '157,119';
或操作系统中
kill -9 4290
kill -9 4830
6. 查询被锁的表的SID及相关资源
说明:出被锁的表及SQL,还是要结合上面的查询进行手工处理, 也可以通过SID找到SQL语句。
set pagesize 999;
set linesize 200;
col PROGRAM for a25;
col TERMINAL for a10;

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Lösungen für Oracle können nicht geöffnet werden, einschließlich: 1. Starten Sie den Datenbankdienst; 2. Starten Sie den Zuhörer; 3.. Hafenkonflikte prüfen; 4. Umgebungsvariablen korrekt einstellen; 5. Stellen Sie sicher, dass die Firewall- oder Antivirus -Software die Verbindung nicht blockiert. 6. Überprüfen Sie, ob der Server geschlossen ist. 7. Verwenden Sie RMAN, um korrupte Dateien wiederherzustellen. 8. Überprüfen Sie, ob der TNS -Dienstname korrekt ist. 9. Netzwerkverbindung prüfen; 10. Oracle Software neu installieren.

Die Methode zur Lösung des Oracle Cursor Closeure -Problems umfasst: explizit den Cursor mithilfe der Close -Anweisung schließen. Deklarieren Sie den Cursor in der für Aktualisierungsklausel so, dass er nach Beendigung des Umfangs automatisch schließt. Deklarieren Sie den Cursor in der Verwendung der Verwendung so, dass er automatisch schließt, wenn die zugehörige PL/SQL -Variable geschlossen ist. Verwenden Sie die Ausnahmebehandlung, um sicherzustellen, dass der Cursor in jeder Ausnahmesituation geschlossen ist. Verwenden Sie den Verbindungspool, um den Cursor automatisch zu schließen. Deaktivieren Sie die Automatikübermittlung und Verzögerung des Cursors Schließen.

In Oracle kann die For -Loop -Schleife Cursors dynamisch erzeugen. Die Schritte sind: 1. Definieren Sie den Cursortyp; 2. Erstellen Sie die Schleife; 3.. Erstellen Sie den Cursor dynamisch; 4. Führen Sie den Cursor aus; 5. Schließen Sie den Cursor. Beispiel: Ein Cursor kann mit dem Zyklus für Kreislauf erstellt werden, um die Namen und Gehälter der Top 10 Mitarbeiter anzuzeigen.

Das Erstellen eines Hadoop -verteilten Dateisystems (HDFS) auf einem CentOS -System erfordert mehrere Schritte. Dieser Artikel enthält einen kurzen Konfigurationshandbuch. 1. Bereiten Sie sich auf die Installation von JDK in der frühen Stufe vor: Installieren Sie JavadevelopmentKit (JDK) auf allen Knoten, und die Version muss mit Hadoop kompatibel sein. Das Installationspaket kann von der offiziellen Oracle -Website heruntergeladen werden. Konfiguration der Umgebungsvariablen: Bearbeiten /etc /Profildatei, setzen Sie Java- und Hadoop -Umgebungsvariablen, damit das System den Installationspfad von JDK und Hadoop ermittelt. 2. Sicherheitskonfiguration: SSH-Kennwortfreie Anmeldung zum Generieren von SSH-Schlüssel: Verwenden Sie den Befehl ssh-keygen auf jedem Knoten

Wenn Oracle -Protokolldateien voll sind, können die folgenden Lösungen übernommen werden: 1) alte Protokolldateien reinigen; 2) die Größe der Protokolldatei erhöhen; 3) die Protokolldateigruppe erhöhen; 4) automatische Protokollverwaltung einrichten; 5) die Datenbank neu initialisieren. Vor der Implementierung einer Lösung wird empfohlen, die Datenbank zu sichern, um den Datenverlust zu verhindern.

Oracle ist nicht nur ein Datenbankunternehmen, sondern auch ein führender Anbieter von Cloud -Computing- und ERP -Systemen. 1. Oracle bietet umfassende Lösungen von der Datenbank bis zu Cloud -Diensten und ERP -Systemen. 2. Oraclecloud fordert AWS und Azure heraus und liefert IaaS-, PaaS- und SaaS -Dienste. 3. ERP-Systeme von Oracle wie E-Businesssuite und Fusion Applications helfen Unternehmen dabei, den Betrieb zu optimieren.

Führen Sie die folgenden Schritte aus, um eine Oracle -Datenbank zu stoppen: 1. Eine Verbindung zur Datenbank herstellen; 2. Sofort herunterfahren; 3.. Herunterfahren vollständig.

Oracle -Ansichten können über das Exp -Dienstprogramm exportiert werden: Melden Sie sich in der Oracle -Datenbank an. Starten Sie das EXP -Dienstprogramm und geben Sie das Ansichtsname und das Exportverzeichnis an. Geben Sie Exportparameter ein, einschließlich Zielmodus, Dateiformat und Tablespace. Mit dem Export beginnen. Überprüfen Sie den Exportieren mithilfe des IMPDP -Dienstprogramms.
