데이터 베이스 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 복구 환경으로 부팅할 수 없습니다 Windows 복구 환경으로 부팅할 수 없습니다 Feb 19, 2024 pm 11:12 PM

WinRE(Windows 복구 환경)는 Windows 운영 체제 오류를 복구하는 데 사용되는 환경입니다. WinRE에 들어간 후 시스템 복원, 공장 초기화, 업데이트 제거 등을 수행할 수 있습니다. WinRE로 부팅할 수 없는 경우 이 문서에서는 문제 해결을 위한 수정 사항을 안내합니다. Windows 복구 환경으로 부팅할 수 없습니다. Windows 복구 환경으로 부팅할 수 없는 경우 아래 제공된 수정 사항을 사용하십시오. Windows 복구 환경 상태 확인 다른 방법을 사용하여 Windows 복구 환경으로 들어가십시오. 실수로 Windows 복구 파티션을 삭제하셨습니까? 아래에서 전체 업그레이드 또는 Windows 새로 설치를 수행하십시오. 이러한 모든 수정 사항에 대해 자세히 설명했습니다. 1] Wi-Fi 확인

Python과 Anaconda의 차이점은 무엇입니까? Python과 Anaconda의 차이점은 무엇입니까? Sep 06, 2023 pm 08:37 PM

이번 포스팅에서는 Python과 Anaconda의 차이점에 대해 알아보겠습니다. 파이썬이란 무엇입니까? Python은 줄을 들여쓰고 공백을 제공하여 코드를 읽고 이해하기 쉽게 만드는 데 중점을 둔 오픈 소스 언어입니다. Python의 유연성과 사용 용이성은 과학 컴퓨팅, 인공 지능, 데이터 과학은 물론 온라인 애플리케이션 생성 및 개발을 포함하되 이에 국한되지 않는 다양한 애플리케이션에 이상적입니다. Python은 해석된 언어이기 때문에 테스트를 하면 즉시 기계어로 번역됩니다. C++와 같은 일부 언어를 이해하려면 컴파일이 필요합니다. Python에 대한 능숙도는 이해, 개발, 실행 및 읽기가 매우 쉽기 때문에 중요한 이점입니다. 이는 파이썬을

Oracle RAC 소개 및 핵심 개념 Oracle RAC 소개 및 핵심 개념 Mar 07, 2024 am 11:39 AM

OracleRAC(RealApplicationClusters)의 소개 및 핵심 개념 기업의 데이터 양이 지속적으로 증가하고 고가용성, 고성능에 대한 요구가 부각되면서 데이터베이스 클러스터 기술은 점점 더 중요해지고 있습니다. OracleRAC(RealApplicationClusters)는 이러한 문제를 해결하기 위해 설계되었습니다. OracleRAC는 오라클이 출시한 고가용성, 고성능 클러스터 데이터베이스 솔루션입니다.

Windows 3에서 환경 변수를 설정하는 11가지 방법 Windows 3에서 환경 변수를 설정하는 11가지 방법 Sep 15, 2023 pm 12:21 PM

Windows 11에서 환경 변수를 설정하면 시스템을 사용자 지정하고, 스크립트를 실행하고, 애플리케이션을 구성하는 데 도움이 될 수 있습니다. 이 가이드에서는 시스템을 원하는 대로 구성할 수 있도록 단계별 지침과 함께 세 가지 방법을 설명합니다. 환경 변수에는 세 가지 유형이 있습니다. 시스템 환경 변수 - 전역 변수는 우선 순위가 가장 낮고 Windows의 모든 사용자 및 응용 프로그램에 액세스할 수 있으며 일반적으로 시스템 전체 설정을 정의하는 데 사용됩니다. 사용자 환경 변수 – 우선 순위가 더 높은 이러한 변수는 현재 사용자 및 해당 계정에서 실행되는 프로세스에만 적용되며 해당 계정에서 실행되는 사용자 또는 응용 프로그램에 의해 설정됩니다. 프로세스 환경 변수 – 우선 순위가 가장 높고 임시적이며 현재 프로세스와 해당 하위 프로세스에 적용되어 프로그램을 제공합니다.

PHP 통합 환경 패키지란 무엇입니까? PHP 통합 환경 패키지란 무엇입니까? Jul 24, 2023 am 09:36 AM

PHP 통합 환경 패키지에는 다음이 포함됩니다. 1. 강력한 PHP 통합 환경인 PhpStorm 2. 오픈 소스 통합 개발 환경인 Eclipse 3. 경량 오픈 소스 코드 편집기인 Visual Studio Code 4. 인기 있는 텍스트 편집기 다양한 프로그래밍 언어에서 널리 사용됩니다. 5. Apache Software Foundation에서 개발한 통합 개발 환경인 NetBeans 6. PHP 개발자를 위해 설계된 통합 개발 환경인 Zend Studio.

Go 언어로 차단하는 구현 방법과 장점을 이해합니다. Go 언어로 차단하는 구현 방법과 장점을 이해합니다. Mar 24, 2024 am 08:36 AM

Go 언어는 매우 강력한 동시성 기능을 갖춘 프로그래밍 언어로, 동시성을 달성하기 위해 고루틴 개념을 사용하고 차단을 처리할 수 있는 풍부한 도구와 방법도 제공합니다. Go 언어에서 차단의 구현 방법과 장점은 우리가 이해해야 할 중요한 사항입니다. 이 기사에서는 Go 언어의 차단 구현 방법과 그 장점을 소개하고, 독자의 이해를 돕기 위해 구체적인 코드 예제를 제공합니다. 차단 구현 방법 Go 언어에서는 채널, 상호 등 다양한 방식으로 차단을 구현할 수 있습니다.

Oracle RAC의 아키텍처와 기능에 대한 심층 분석 Oracle RAC의 아키텍처와 기능에 대한 심층 분석 Mar 07, 2024 pm 03:18 PM

OracleRAC(RealApplicationClusters)는 Oracle 데이터베이스 인스턴스가 여러 서버에서 실행되고 여러 서버가 결합되어 고가용성과 확장성을 제공할 수 있도록 Oracle Corporation에서 제공하는 확장성 솔루션입니다. OracleRAC의 아키텍처와 기능은 매우 독특합니다. 이 기사에서는 OracleRAC의 아키텍처, 기능 및 특정 코드 예를 자세히 살펴보겠습니다. 1. OracleRAC 아키텍처 오라클

Laravel 환경 구성 파일 .env에 대한 일반적인 문제 및 해결 방법 Laravel 환경 구성 파일 .env에 대한 일반적인 문제 및 해결 방법 Mar 10, 2024 pm 12:51 PM

Laravel 환경 구성 파일 .env에 대한 일반적인 문제 및 해결 방법 Laravel 프레임워크를 사용하여 프로젝트를 개발할 때 환경 구성 파일 .env에는 데이터베이스 연결 정보, 애플리케이션 키 등과 같은 프로젝트의 주요 구성 정보가 포함되어 있습니다. 그러나 .env 파일을 구성할 때 몇 가지 일반적인 문제가 있는 경우가 있습니다. 이 문서에서는 이러한 문제를 소개하고 해결 방법을 제공하며 참조용 특정 코드 예제를 첨부합니다. 문제 1: .env 파일을 구성했는데 .env 파일을 읽을 수 없습니다.

See all articles