oracle 模拟阻塞,Oracle 阻塞(blocking blocked)介绍和实例演示

本文通过示例深入探讨了数据库并发控制的问题,展示了当多个会话同时更新同一行数据时,如何产生阻塞以及如何查询和分析阻塞情况。通过SQL查询,揭示了锁的持有状态和等待情况,帮助理解数据库的锁机制和事务处理。
摘要由CSDN通过智能技术生成

update emp set sal=sal*1.1 where empno=7788;

1 row updated.

scott@CNMMBO> @my_env

SPID SID SERIAL# USERNAME PROGRAM

11205 1073 4642 robin oracle@SZDB (TNS V1-V3)

--另起两个session更新同样的行,这两个session都会处于等待,直到第一个session提交或回滚

leshami@CNMMBO> update scott.emp set sal=sal+100 where empno=7788;

goex_admin@CNMMBO> update scott.emp set sal=sal-50 where empno=7788;

--下面在第一个session 查询阻塞情况

scott@CNMMBO> @blocker

BLOCK_MSG BLOCK

pts/5 ('1073,4642') is blocking 1067,10438 1

pts/5 ('1073,4642') is blocking 1065,4464 1

--上面的结果表明session 1073,4642 阻塞了后面的2个

--即session 1073,4642是阻塞者,后面2个session是被阻塞者

--Author : Leshami

--Blog : http://blog.csdn.net/leshami

--下面查询正在阻塞的session id,sql语句以及被阻塞的时间

scott@CNMMBO> @blocking_session_detail.sql

'SID='||A.SID||'WAITCLASS='||A.WAIT_CLASS||'TIME='||A.SECONDS_IN_WAIT||CHR(10)||'QUERY='||B.sql_TEXT

sid=1067 Wait Class=Application Time=5995

Query=update scott.emp set sal=sal+100 where empno=7788

sid=1065 Wait Class=Application Time=225

Query=update scott.emp set sal=sal-50 where empno=7788

--下面的查询阻塞时锁的持有情况

scott@CNMMBO> @request_lock_type

USERNAME SID TY LMODE REQUEST ID1 ID2

SCOTT 1073 TX Exclusive None 524319 27412

LESHAMI 1067 TX None Exclusive 524319 27412

GOEX_ADMIN 1065 TX None Exclusive 524319 27412

--可以看到LESHAMI,GOEX_ADMIN 2个用户都在请求524319/27412上的Exclusive锁,而此时已经被SCOTT加了Exclusive锁

--查询阻塞时锁的持有详细信息

scott@CNMMBO> @request_lock_detail

SID USERNAME OSUSER TERMINAL OBJECT_NAME TY Lock Mode Req_Mode

1065 GOEX_ADMIN robin pts/1 EMP TM Row Excl

1065 GOEX_ADMIN robin pts/1 Trans-524319 TX --Waiting-- Exclusive

1067 LESHAMI robin pts/0 EMP TM Row Excl

1067 LESHAMI robin pts/0 Trans-524319 TX --Waiting-- Exclusive

1073 SCOTT robin pts/5 EMP TM Row Excl

1073 SCOTT robin pts/5 Trans-524319 TX Exclusive

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值