Heim Datenbank MySQL-Tutorial RAC环境下的阻塞(blockingblocked)

RAC环境下的阻塞(blockingblocked)

Jun 07, 2016 pm 03:58 PM
rac 环境 阻塞

RAC环境下的阻塞不同于单实例情形,因为我们需要考虑到位于不同实例的session。也就是说之前查询的v$session,v$lock相应的应变化为全局范围来查找。本文提供了2个查询脚本,并给出实例演示那些session为阻塞者,哪些为被阻塞者。有关阻塞的概念以及单实例环

RAC环境下的阻塞不同于单实例情形,因为我们需要考虑到位于不同实例的session。也就是说之前查询的v$session,v$lock相应的应变化为全局范围来查找。本文提供了2个查询脚本,并给出实例演示那些session为阻塞者,哪些为被阻塞者。有关阻塞的概念以及单实例环境下的阻塞请参考:Oracle 阻塞(blocking blocked)

1、演示环境

scott@DEVDB> select * from v$version where rownum<2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

--在scott session中发布SQL语句,并未提交
scott@DEVDB> begin
  2  update emp set sal=sal+100 where empno=7788;
  3  update dept set dname=&#39;DBA&#39; where deptno=10;
  4  end;
  5  /

PL/SQL procedure successfully completed.

--在leshami session中更新emp对象
leshami@DEVDB> update scott.emp set sal=sal-200 where empno=7788;

--在usr1 session中更新emp对象
usr1@DEVDB> update scott.dept set dname=&#39;DEV&#39; where deptno=10;
Nach dem Login kopieren

2、寻找阻塞

scott@DEVDB> @block_session_rac

USER_STATUS     SID_SERIAL      CONN_INSTANCE     SID PROGRAM                        OSUSER  MACHINE         LOCK_TYPE       LOCK_MODE        CTIME OBJECT_NAME
--------------- --------------- ---------------- ---- ------------------------------ ------- --------------- --------------- ----------- ---------- -------------------------
Blocking ->     &#39;20,1545&#39;       devdb1             20 sqlplus@Linux-01 (TNS V1-V3)   oracle  Linux-01        Transaction     Exclusive          666 DEPT
Blocking ->     &#39;20,1545&#39;       devdb1             20 sqlplus@Linux-01 (TNS V1-V3)   oracle  Linux-01        Transaction     Exclusive          666 EMP
Waiting         &#39;49,1007&#39;       devdb1             49 sqlplus@Linux-01 (TNS V1-V3)   oracle  Linux-01        Transaction     None               618 EMP
Waiting         &#39;933,11691&#39;     devdb2            933 sqlplus@Linux-02 (TNS V1-V3)   oracle  Linux-02        Transaction     None               558 DEPT

--通过上述脚本我们可以看到session &#39;20,1545&#39; 锁住了对象DEPT以及EMP,而此时session &#39;49,1007&#39;与&#39;933,11691&#39;处于等待状态。

--下面是另外的一种方式来获取阻塞的情形
scott@DEVDB> @block_session_rac2

BLOCKING_STATUS
----------------------------------------------------------------------------------------------------------------------------
SCOTT@Linux-01 ( INST=1 SID=20 Serail#=1545 ) IS BLOCKING USR1@Linux-02 ( INST=2 SID=933 Serial#=11691 )
SCOTT@Linux-01 ( INST=1 SID=20 Serail#=1545 ) IS BLOCKING LESHAMI@Linux-01 ( INST=1 SID=49 Serial#=1007 )

--Author : Leshami
--Blog   : http://blog.csdn.net/leshami
Nach dem Login kopieren

3、演示中用到的脚本

[oracle@Linux-01 ~]$ more block_session_rac.sql 
set linesize 180
col user_status format a15
col sid_serial format  a15
col program format a30 wrapped
col machine format a15 wrapped
col osuser format a15 wrapped
col conn_instance format a15
col object_name format a25 wrapped
 SELECT DECODE (l.block, 0, &#39;Waiting&#39;, &#39;Blocking ->&#39;) user_status,
         CHR (39) || s.sid || &#39;,&#39; || s.serial# || CHR (39) sid_serial,
         (SELECT instance_name
            FROM gv$instance
           WHERE inst_id = l.inst_id)
            conn_instance,
         s.sid,
         s.program,
         s.osuser,
         s.machine,
         DECODE (l.TYPE,
                 &#39;RT&#39;, &#39;Redo Log Buffer&#39;,
                 &#39;TD&#39;, &#39;Dictionary&#39;,
                 &#39;TM&#39;, &#39;DML&#39;,
                 &#39;TS&#39;, &#39;Temp Segments&#39;,
                 &#39;TX&#39;, &#39;Transaction&#39;,
                 &#39;UL&#39;, &#39;User&#39;,
                 &#39;RW&#39;, &#39;Row Wait&#39;,
                 l.TYPE)
            lock_type--,id1
                     --,id2
         ,
         DECODE (l.lmode,
                 0, &#39;None&#39;,
                 1, &#39;Null&#39;,
                 2, &#39;Row Share&#39;,
                 3, &#39;Row Excl.&#39;,
                 4, &#39;Share&#39;,
                 5, &#39;S/Row Excl.&#39;,
                 6, &#39;Exclusive&#39;,
                 LTRIM (TO_CHAR (lmode, &#39;990&#39;)))
            lock_mode,
         ctime--,DECODE(l.BLOCK, 0, &#39;Not Blocking&#39;, 1, &#39;Blocking&#39;, 2, &#39;Global&#39;) lock_status
         ,
         object_name
    FROM gv$lock l
         JOIN gv$session s ON (l.inst_id = s.inst_id AND l.sid = s.sid)
         JOIN gv$locked_object o
            ON (o.inst_id = s.inst_id AND s.sid = o.session_id)
         JOIN dba_objects d ON (d.object_id = o.object_id)
   WHERE (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE
                                      FROM gv$lock
                                     WHERE request > 0)
ORDER BY id1, id2, ctime DESC;

[oracle@Linux-01 ~]$ more block_session_rac2.sql 
SELECT DISTINCT
          s1.username
       || &#39;@&#39;
       || s1.machine
       || &#39; ( INST=&#39;
       || s1.inst_id
       || &#39; SID=&#39;
       || s1.sid
       || &#39; Serail#=&#39;
       || s1.serial#
       || &#39; ) IS BLOCKING &#39;
       || s2.username
       || &#39;@&#39;
       || s2.machine
       || &#39; ( INST=&#39;
       || s2.inst_id
       || &#39; SID=&#39;
       || s2.sid
       || &#39; Serial#=&#39;
       || s2.serial#
       || &#39; ) &#39;
          AS blocking_status
  FROM gv$lock l1,
       gv$session s1,
       gv$lock l2,
       gv$session s2
 WHERE     s1.sid = l1.sid
       AND s2.sid = l2.sid
       AND s1.inst_id = l1.inst_id
       AND s2.inst_id = l2.inst_id
       AND l1.block > 0
       AND l2.request > 0
       AND l1.id1 = l2.id1
       AND l1.id2 = l2.id2; 
Nach dem Login kopieren

更多参考

DML Error Logging 特性

PL/SQL --> 游标

PL/SQL --> 隐式游标(SQL%FOUND)

批量SQL之 FORALL 语句

批量SQL之 BULK COLLECT 子句

PL/SQL 集合的初始化与赋值

PL/SQL 联合数组与嵌套表

SQL tuning 步骤

高效SQL语句必杀技

父游标、子游标及共享游标

绑定变量及其优缺点

dbms_xplan之display_cursor函数的使用

dbms_xplan之display函数的使用

执行计划中各字段各模块描述

使用 EXPLAIN PLAN 获取SQL语句执行计划

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

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)

Die Windows-Wiederherstellungsumgebung kann nicht gestartet werden Die Windows-Wiederherstellungsumgebung kann nicht gestartet werden Feb 19, 2024 pm 11:12 PM

Windows Recovery Environment (WinRE) ist eine Umgebung zur Reparatur von Windows-Betriebssystemfehlern. Nach dem Aufrufen von WinRE können Sie eine Systemwiederherstellung, einen Werksreset, die Deinstallation von Updates usw. durchführen. Wenn Sie WinRE nicht starten können, führt Sie dieser Artikel durch Korrekturen zur Behebung des Problems. Die Windows-Wiederherstellungsumgebung kann nicht gestartet werden. Wenn Sie die Windows-Wiederherstellungsumgebung nicht starten können, verwenden Sie die unten bereitgestellten Korrekturen: Überprüfen Sie den Status der Windows-Wiederherstellungsumgebung. Verwenden Sie andere Methoden, um die Windows-Wiederherstellungsumgebung aufzurufen. Haben Sie versehentlich die Windows-Wiederherstellungspartition gelöscht? Führen Sie unten ein direktes Upgrade oder eine Neuinstallation von Windows durch. Wir haben alle diese Korrekturen ausführlich erläutert. 1] WLAN prüfen

Was sind die Unterschiede zwischen Python und Anaconda? Was sind die Unterschiede zwischen Python und Anaconda? Sep 06, 2023 pm 08:37 PM

In diesem Artikel lernen wir die Unterschiede zwischen Python und Anaconda kennen. Was ist Python? Python ist eine Open-Source-Sprache, die großen Wert darauf legt, den Code durch Einrücken von Zeilen und Leerzeichen leicht lesbar und verständlich zu machen. Aufgrund seiner Flexibilität und Benutzerfreundlichkeit eignet sich Python ideal für eine Vielzahl von Anwendungen, darunter unter anderem wissenschaftliches Rechnen, künstliche Intelligenz und Datenwissenschaft sowie die Erstellung und Entwicklung von Online-Anwendungen. Wenn Python getestet wird, wird es sofort in Maschinensprache übersetzt, da es sich um eine interpretierte Sprache handelt. Einige Sprachen, wie zum Beispiel C++, erfordern eine Kompilierung, um verstanden zu werden. Kenntnisse in Python sind ein großer Vorteil, da es sehr einfach zu verstehen, zu entwickeln, auszuführen und zu lesen ist. Das macht Python

Einführung und Kernkonzepte von Oracle RAC Einführung und Kernkonzepte von Oracle RAC Mar 07, 2024 am 11:39 AM

Einführung und Kernkonzepte von OracleRAC (RealApplicationClusters) Da die Menge an Unternehmensdaten weiter wächst und die Nachfrage nach Hochverfügbarkeit und hoher Leistung immer wichtiger wird, wird die Datenbank-Cluster-Technologie immer wichtiger. OracleRAC (RealApplicationClusters) soll dieses Problem lösen. OracleRAC ist eine von Oracle eingeführte hochverfügbare und leistungsstarke Cluster-Datenbanklösung.

11 Möglichkeiten zum Festlegen von Umgebungsvariablen unter Windows 3 11 Möglichkeiten zum Festlegen von Umgebungsvariablen unter Windows 3 Sep 15, 2023 pm 12:21 PM

Das Festlegen von Umgebungsvariablen unter Windows 11 kann Ihnen dabei helfen, Ihr System anzupassen, Skripts auszuführen und Anwendungen zu konfigurieren. In diesem Leitfaden besprechen wir drei Methoden zusammen mit Schritt-für-Schritt-Anleitungen, damit Sie Ihr System nach Ihren Wünschen konfigurieren können. Es gibt drei Arten von Umgebungsvariablen. Systemumgebungsvariablen: Globale Variablen haben die niedrigste Priorität und sind für alle Benutzer und Anwendungen unter Windows zugänglich. Sie werden normalerweise zum Definieren systemweiter Einstellungen verwendet. Benutzerumgebungsvariablen – Höhere Priorität. Diese Variablen gelten nur für den aktuellen Benutzer und Prozess, der unter diesem Konto ausgeführt wird, und werden von dem Benutzer oder der Anwendung festgelegt, die unter diesem Konto ausgeführt wird. Prozessumgebungsvariablen – haben die höchste Priorität, sind temporär und gelten für den aktuellen Prozess und seine Unterprozesse und stellen das Programm bereit

Was sind die integrierten PHP-Umgebungspakete? Was sind die integrierten PHP-Umgebungspakete? Jul 24, 2023 am 09:36 AM

Zu den integrierten PHP-Umgebungspaketen gehören: 1. PHPStorm, eine leistungsstarke integrierte PHP-Entwicklungsumgebung; 3. Visual Studio Code, ein leichter Open-Source-Code-Editor; 4. Sublime Text, ein beliebter Texteditor , weit verbreitet in verschiedenen Programmiersprachen; 5. NetBeans, eine integrierte Entwicklungsumgebung, die von der Apache Software Foundation entwickelt wurde; 6. Zend Studio, eine integrierte Entwicklungsumgebung für PHP-Entwickler;

Verstehen Sie die Implementierungsmethoden und Vorteile des Blockierens in der Go-Sprache Verstehen Sie die Implementierungsmethoden und Vorteile des Blockierens in der Go-Sprache Mar 24, 2024 am 08:36 AM

Die Go-Sprache ist eine Programmiersprache mit sehr leistungsstarken Parallelitätsfunktionen. Sie nutzt das Konzept der Goroutine, um Parallelität zu erreichen, und bietet außerdem eine Fülle von Tools und Methoden für den Umgang mit Blockierungen. In der Go-Sprache sind die Implementierungsmethoden und Vorteile des Blockierens wichtige Dinge, die wir verstehen müssen. In diesem Artikel werden die Implementierungsmethode des Blockierens in der Go-Sprache und ihre Vorteile vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern. Implementierungsmethoden für die Blockierung In der Go-Sprache kann die Blockierung auf verschiedene Arten implementiert werden, einschließlich Kanälen und gegenseitiger Blockierung

Ein tiefer Einblick in die Architektur und Funktionen von Oracle RAC Ein tiefer Einblick in die Architektur und Funktionen von Oracle RAC Mar 07, 2024 pm 03:18 PM

OracleRAC (RealApplicationClusters) ist eine Skalierbarkeitslösung der Oracle Corporation, die es ermöglicht, Oracle-Datenbankinstanzen auf mehreren Servern auszuführen und mehrere Server miteinander zu kombinieren, um eine hohe Verfügbarkeit und Skalierbarkeit zu gewährleisten. Die Architektur und Funktionen von OracleRAC sind sehr einzigartig. In diesem Artikel werden die Architektur, Funktionen und spezifischen Codebeispiele von OracleRAC eingehend untersucht. 1. OracleRAC-Architektur Oracle

Häufige Probleme und Lösungen für die Laravel-Umgebungskonfigurationsdatei .env Häufige Probleme und Lösungen für die Laravel-Umgebungskonfigurationsdatei .env Mar 10, 2024 pm 12:51 PM

Häufige Probleme und Lösungen für die Laravel-Umgebungskonfigurationsdatei .env Bei der Verwendung des Laravel-Frameworks zur Entwicklung von Projekten ist die Umgebungskonfigurationsdatei .env sehr wichtig. Sie enthält wichtige Konfigurationsinformationen des Projekts, wie z. B. Datenbankverbindungsinformationen, Anwendungsschlüssel usw. Manchmal treten jedoch einige häufige Probleme beim Konfigurieren der .env-Datei auf. In diesem Artikel werden diese Probleme vorgestellt, Lösungen bereitgestellt und spezifische Codebeispiele als Referenz beigefügt. Problem 1: Die .env-Datei kann nicht gelesen werden, wenn wir die .env-Datei konfiguriert haben

See all articles