ホームページ データベース 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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 回復環境を起動できない Windows 回復環境を起動できない Feb 19, 2024 pm 11:12 PM

Windows 回復環境 (WinRE) は、Windows オペレーティング システムのエラーを修復するために使用される環境です。 WinRE に入ると、システムの復元、出荷時設定へのリセット、アップデートのアンインストールなどを実行できます。 WinRE を起動できない場合、この記事では問題を解決するための修正方法を説明します。 Windows 回復環境を起動できない Windows 回復環境を起動できない場合は、以下の修正プログラムを使用してください。 Windows 回復環境のステータスを確認する 他の方法を使用して Windows 回復環境に入る Windows 回復パーティションを誤って削除しましたか?以下の Windows のインプレース アップグレードまたはクリーン インストールを実行します。これらすべての修正については詳しく説明しています。 1]Wiをチェックする

Python と Anaconda の違いは何ですか? Python と Anaconda の違いは何ですか? Sep 06, 2023 pm 08:37 PM

この記事では、Python と Anaconda の違いについて学びます。パイソンとは何ですか? Python は、行をインデントし空白を入れることでコードを読みやすく理解しやすくすることに重点を置いたオープンソース言語です。 Python は柔軟性と使いやすさを備えているため、オンライン アプリケーションの作成や開発だけでなく、科学コンピューティング、人工知能、データ サイエンスなどのさまざまなアプリケーションに最適です。 Python はインタープリタ言語であるため、テストされるとすぐに機械語に翻訳されます。 C++ などの一部の言語は、理解するためにコンパイルが必要です。 Python は理解、開発、実行、読み取りが非常に簡単であるため、Python の習熟度は重要な利点となります。これにより Python が作成されます

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

Windows 11 で環境変数を設定すると、システムのカスタマイズ、スクリプトの実行、アプリケーションの構成に役立ちます。このガイドでは、好みに合わせてシステムを構成できるように、3 つの方法と段階的な手順について説明します。環境変数には 3 つのタイプがあります。 システム環境変数 – グローバル変数は優先順位が最も低く、Windows 上のすべてのユーザーとアプリケーションがアクセスでき、通常はシステム全体の設定を定義するために使用されます。ユーザー環境変数 – 優先度が高く、これらの変数は現在のユーザーとそのアカウントで実行されているプロセスにのみ適用され、そのアカウントで実行されているユーザーまたはアプリケーションによって設定されます。プロセス環境変数 – 最も高い優先順位があり、一時的なもので、現在のプロセスとそのサブプロセスに適用され、プログラムを提供します。

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 Software Foundation によって開発された統合開発環境; 6. Zend Studio、PHP 開発者向けに設計された統合開発環境。

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 Corporation が提供するスケーラビリティ ソリューションで、Oracle データベース インスタンスを複数のサーバー上で実行し、複数のサーバーを組み合わせて高可用性とスケーラビリティを提供できるようにします。 OracleRAC のアーキテクチャと機能は非常にユニークです。この記事では、OracleRAC のアーキテクチャ、機能、および具体的なコード例について詳しく説明します。 1. OracleRAC アーキテクチャ Oracle

Laravel 環境設定ファイル .env に関する一般的な問題と解決策 Laravel 環境設定ファイル .env に関する一般的な問題と解決策 Mar 10, 2024 pm 12:51 PM

Laravel 環境構成ファイル .env に関する一般的な問題と解決策 Laravel フレームワークを使用してプロジェクトを開発する場合、環境構成ファイル .env は非常に重要であり、データベース接続情報、アプリケーション キーなど、プロジェクトの主要な構成情報が含まれています。ただし、.env ファイルの構成時に一般的な問題が発生する場合があります。この記事では、これらの問題の紹介と解決策を示し、参照用の具体的なコード例を添付します。問題 1: .env ファイルを構成したときに .env ファイルを読み取れない

See all articles