Heim Datenbank MySQL-Tutorial Oracle锁表故障处理一例

Oracle锁表故障处理一例

Jun 07, 2016 pm 04:46 PM
oracle Sperrtabelle

一次开发人员直接在数据库服务器上做deletetable操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据

一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。  
询问操作过程知道了是由锁表造成,,最终处理;本文只是模拟锁表处理过程,下次遇到相同问题可以快速处理。

1. 查看数据库的等待事件

如果不清楚原因,可以通过先通过等待事件进行分析。

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;

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was tun, wenn das Orakel nicht geöffnet werden kann Was tun, wenn das Orakel nicht geöffnet werden kann Apr 11, 2025 pm 10:06 PM

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.

So löschen Sie alle Daten von Oracle So löschen Sie alle Daten von Oracle Apr 11, 2025 pm 08:36 PM

Für das Löschen aller Daten in Oracle sind die folgenden Schritte erforderlich: 1. Erstellen Sie eine Verbindung; 2. Deaktivieren Sie fremde Schlüsselbeschränkungen; 3.. Tabellendaten löschen; 4. Transaktionen einreichen; 5. Aktivieren Sie fremde Schlüsselbeschränkungen (optional). Stellen Sie sicher, dass Sie die Datenbank vor der Ausführung sichern, um den Datenverlust zu verhindern.

So lösen Sie das Problem des Schließens von Oracle Cursor So lösen Sie das Problem des Schließens von Oracle Cursor Apr 11, 2025 pm 10:18 PM

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.

So paginieren Sie die Oracle -Datenbank So paginieren Sie die Oracle -Datenbank Apr 11, 2025 pm 08:42 PM

Oracle Database Paging verwendet Rownum Pseudo-Säulen oder Abrufanweisungen zum Implementieren: Rownum Pseudo-Säulen werden verwendet, um Ergebnisse nach Zeilennummern zu filtern und für komplexe Abfragen geeignet sind. Die Abrufanweisung wird verwendet, um die angegebene Anzahl der ersten Zeilen zu erhalten, und eignet sich für einfache Abfragen.

So erstellen Sie Cursor in Oracle Loop So erstellen Sie Cursor in Oracle Loop Apr 12, 2025 am 06:18 AM

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.

So stoppen Sie die Oracle -Datenbank So stoppen Sie die Oracle -Datenbank Apr 12, 2025 am 06:12 AM

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.

So erstellen Sie Oracle Dynamic SQL So erstellen Sie Oracle Dynamic SQL Apr 12, 2025 am 06:06 AM

SQL -Anweisungen können basierend auf der Laufzeiteingabe erstellt und ausgeführt werden, indem die dynamische SQL von Oracle verwendet wird. Zu den Schritten gehören: Vorbereitung einer leeren Zeichenfolgenvariable zum Speichern von dynamisch generierten SQL -Anweisungen. Verwenden Sie die sofortige Ausführung oder Vorbereitung, um dynamische SQL -Anweisungen zu kompilieren und auszuführen. Verwenden Sie die Bind -Variable, um die Benutzereingabe oder andere dynamische Werte an dynamische SQL zu übergeben. Verwenden Sie sofortige Ausführung oder führen Sie aus, um dynamische SQL -Anweisungen auszuführen.

So öffnen Sie eine Datenbank in Oracle So öffnen Sie eine Datenbank in Oracle Apr 11, 2025 pm 10:51 PM

Die Schritte zum Öffnen einer Oracle -Datenbank sind wie folgt: Öffnen Sie den Oracle -Datenbank -Client und stellen Sie eine Verbindung zum Datenbankserver her: Verbinden Sie Benutzername/Passwort@sservername Verwenden Sie den Befehl SQLPLUS, um die Datenbank zu öffnen: SQLPLUS

See all articles