首頁 資料庫 mysql教程 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;
登入後複製

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
登入後複製

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; 
登入後複製

更多参考

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语句执行计划

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Python和Anaconda之間有什麼區別? Python和Anaconda之間有什麼區別? Sep 06, 2023 pm 08:37 PM

在本文中,我們將了解Python和Anaconda之間的差異。 Python是什麼? Python是一種開源語言,非常重視使程式碼易於閱讀並透過縮進行和提供空白來理解。 Python的靈活性和易於使用使其非常適用於各種應用,包括但不限於對於科學計算、人工智慧和數據科學,以及創造和發展的線上應用程式。當Python經過測試時,它會立即被翻譯轉化為機器語言,因為它是一種解釋性語言。有些語言,例如C++,需要編譯才能被理解。精通Python是一個重要的優勢,因為它非常易於理解、開發,執行並讀取。這使得Pyth

無法引導到Windows復原環境 無法引導到Windows復原環境 Feb 19, 2024 pm 11:12 PM

Windows復原環境(WinRE)是用來修復Windows作業系統錯誤的環境。進入WinRE後,您可以執行系統還原、出廠重設、卸載更新等操作。如果無法引導到WinRE,本文將指導您使用修復程式解決此問題。無法引導至Windows復原環境如果無法引導至Windows復原環境,請使用下方提供的修復程式:檢查Windows復原環境的狀態使用其他方法進入Windows復原環境您是否意外刪除了Windows復原分割區?執行Windows的就地升級或全新安裝下面,我們已經詳細解釋了所有這些修復。 1]檢查Wi

Oracle RAC 簡介及核心概念 Oracle RAC 簡介及核心概念 Mar 07, 2024 am 11:39 AM

OracleRAC(RealApplicationClusters)簡介及核心概念隨著企業資料量的不斷增長和對高可用性、高效能的需求日益突出,資料庫叢集技術變得越來越重要。 OracleRAC(RealApplicationClusters)就是為了解決這個問題而設計的。 OracleRAC是Oracle公司推出的一種高可用性、高效能的叢集資料庫解

在 Windows 3 上設定環境變數的 11 種方法 在 Windows 3 上設定環境變數的 11 種方法 Sep 15, 2023 pm 12:21 PM

在Windows11上設定環境變數可以幫助您自訂系統、執行腳本和設定應用程式。在本指南中,我們將討論三種方法以及逐步說明,以便您可以根據自己的喜好配置系統。有三種類型的環境變數系統環境變數–全域變數處於最低優先權,可由Windows上的所有使用者和應用程式訪問,通常用於定義系統範圍的設定。使用者環境變數–優先順序越高,這些變數僅適用於在該帳戶下執行的目前使用者和進程,並由在該帳戶下執行的使用者或應用程式設定。進程環境變數–具有最高優先權,它們是臨時的,適用於當前進程及其子進程,為程式提供

深入探討 Oracle RAC 的架構與特點 深入探討 Oracle RAC 的架構與特點 Mar 07, 2024 pm 03:18 PM

OracleRAC(RealApplicationClusters)是Oracle公司提供的可擴展性解決方案,允許在多台伺服器上執行Oracle資料庫實例,將多個伺服器組合在一起以提供高可用性和擴充性。 OracleRAC的架構和特點非常獨特,本文將深入探討OracleRAC的架構、特點和具體程式碼範例。一、OracleRAC的架構Oracle

php整合環境包有哪些 php整合環境包有哪些 Jul 24, 2023 am 09:36 AM

php整合環境套件有:1、PhpStorm,功能強大的PHP整合環境;2、Eclipse,開放原始碼的整合開發環境;3、Visual Studio Code,輕量級的開源程式碼編輯器;4、Sublime Text,受歡迎的文本編輯器,廣泛用於各種程式語言;5、NetBeans,由Apache軟體基金會開發的整合開發環境;6、Zend Studio,為PHP開發者設計的整合開發環境。

Laravel環境設定檔.env的常見問題及解決方法 Laravel環境設定檔.env的常見問題及解決方法 Mar 10, 2024 pm 12:51 PM

Laravel環境設定檔.env的常見問題及解決方法在使用Laravel框架開發專案時,環境設定檔.env是非常重要的,它包含了專案的關鍵配置信息,如資料庫連接資訊、應用程式金鑰等。然而,有時在配置.env檔案時會出現一些常見問題,本文將針對這些問題進行介紹並提供解決方法,同時附上具體的程式碼範例供參考。問題一:無法讀取.env檔當我們設定好了.env文件

了解Go語言中阻塞的實作方法與優勢 了解Go語言中阻塞的實作方法與優勢 Mar 24, 2024 am 08:36 AM

Go語言是一種並發特性十分強大的程式語言,它採用了goroutine的概念來實現並發,同時也提供了豐富的工具和方法來處理阻塞。在Go語言中,阻塞的實作方法與優勢是我們需要了解的重要內容。本文將介紹Go語言中阻塞的實作方法及其優勢,並提供具體的程式碼範例來幫助讀者更好地理解。阻塞的實作方法在Go語言中,阻斷可以透過多種方式實現,其中包括通道(channel)、互

See all articles