`

oracle锁机制的模拟试验

阅读更多
首先我们用pl sql模拟3个用户

conn system/beyondsanli
select sys_context('userenv','sessionid') from dual;

SYS_CONTEXT('USERENV','SESSIONID')

--------------------------------------------------------------------------------
1009


conn system/beyondsanli


select sys_context('userenv','sessionid') from dual;

SYS_CONTEXT('USERENV','SESSIONID')

--------------------------------------------------------------------------------
1010




select sid, serial#, audsid, paddr, username, lockwait, ROW_WAIT_OBJ#
  from v$session
where audsid in (1009, 1010);


  SID    SERIAL#     AUDSID PADDR    USERNAME                       LOCKWAIT ROW_WAIT_OBJ#

---------- ---------- ---------- -------- ------------------------------ -------- -------------
1 132 852 1010 1EE5015C SYSTEM -1
2 147 1192 1009 1EE4FB6C SYSTEM -1

(查询得知,session1的sid=1009,session2的sid=1010)


session 1中

update czk_locktest set modulename='locktest here' where id=1


select sid, serial#, audsid, paddr, username, lockwait, ROW_WAIT_OBJ#
  from v$session
where audsid in (1009, 1010);


  SID    SERIAL#     AUDSID PADDR    USERNAME                       LOCKWAIT ROW_WAIT_OBJ#

---------- ---------- ---------- -------- ------------------------------ -------- -------------
1 132 852 1010 1EE5015C SYSTEM -1
2 147 1192 1009 1EE4FB6C SYSTEM 52547


(查询得知,session1的sid=132,session2的sid=147)  这里row_wait_obj# 不是-1



  select XIDUSN,XIDSLOT,XIDSQN,OBJECT_ID,SESSION_ID,PROCESS,LOCKED_MODE from v$locked_object;

1 7 8 362 52547 147 3012:1336 3

session2
update czk_locktest set modulename='locktest here 2' where id=2



  select XIDUSN,XIDSLOT,XIDSQN,OBJECT_ID,SESSION_ID,PROCESS,LOCKED_MODE from v$locked_object;


1 10 9 357 52547 131 2268:1228 3
2 9 2 380 52547 141 3328:5164 3




select XIDUSN,XIDSLOT,XIDSQN,a.OBJECT_ID,ub.object_name,SESSION_ID,PROCESS,LOCKED_MODE from v$locked_object a left outer join user_objects ub on ub.object_id=a.OBJECT_ID;



1 7 8 362 52547 CZK_LOCKTEST 147 3012:1336 3







分享到:
评论
1 楼 beyondsanli 2008-04-07  
强行关闭锁定的状态
select sid, serial#, audsid, paddr, username, lockwait, ROW_WAIT_OBJ#
from v$session
where audsid in (446, 449);

1 145 121 446 1EE4E99C SYSTEM -1
2 146 366 449 1EE5015C SYSTEM -1

select XIDUSN,XIDSLOT,XIDSQN,OBJECT_ID,SESSION_ID,PROCESS,LOCKED_MODE from v$locked_object;

alter system kill session '145,121'


附加:

select * from tablename for update no wait
select * from tablename  for update wait 10

相关推荐

    oracle锁机制探讨

    在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁(用来保证表的结构不被用户修改),TX锁称为事务锁或行级锁。当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统...

    Oracle 锁机制问题详解

    ### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...

    Oracle的锁机制

    Oracle的锁机制是数据库管理系统中一个关键的组成部分,它的主要目标是确保在多用户环境下,数据的读一致性、完整性和并行性。Oracle提供了多种类型的锁来满足这些需求。 首先,按照是否独占,锁分为排它锁(X锁)...

    oracle数据库中的锁机制

    ### Oracle数据库中的锁机制 #### 引言 在Oracle数据库中,锁机制是确保数据一致性和并发控制的关键组件。本文将深入探讨Oracle数据库中的锁如何工作,以及它们在多用户环境中如何防止数据冲突,保障事务的正确...

    oracle锁机制

    关于oracle锁以及并发的详细描述。

    oracle并发和锁机制

    oracle并发和锁机制,oracle并发锁,oracle锁

    oracle锁机制_bzm整理1

    Oracle数据库的锁机制是其并发控制的关键组成部分,旨在确保数据的一致性和完整性,同时允许多个用户或事务并发访问数据库。以下是对Oracle锁机制的详细解释: 1. **锁的存在原因**: - 并发控制:在多用户环境下...

    Oracle锁机制

    Oracle数据库多粒度锁机制介绍概述.内容简单易懂,容易掌握

    Oracle的锁表与解锁

    本文将深入探讨Oracle中的锁机制,特别是如何锁表与解锁,以及相关的SQL查询语句,帮助数据库管理员和开发人员更好地理解和管理Oracle数据库的锁状态。 #### 锁的类型 在Oracle中,锁主要分为两种类型: 1. **TX...

    oracle解锁,死锁

    在深入讨论Oracle解锁和死锁之前,我们首先需要了解Oracle数据库中的锁机制。 1. **共享锁(S)**:允许多个用户读取行,但不允许修改。 2. **排他锁(X)**:允许单个用户修改行,其他用户只能等待。 3. **共享更新锁...

    oracle 锁的概念

    ### Oracle锁的概念与分类 #### 一、锁的基本概念 在Oracle数据库中,锁是一种用于管理并发事务的重要机制。通过锁机制,Oracle...此外,深入学习Oracle内部锁的工作机制也有助于更好地理解Oracle的并发控制机制。

    oracle锁表处理

    Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?

    数据库,oracle机制,Oracle数据库机制

    ### Oracle数据库机制详解 在深入探讨Oracle数据库机制之前,我们先简单回顾一下Oracle数据库的基本概念。Oracle数据库是一款高性能的关系型数据库管理系统,广泛应用于各种企业级应用中。它提供了丰富的功能来确保...

    oracle锁机制了解和学习电网项目学习

    oracle数据库锁机制常备大家所诟病,希望对学习者有帮助,大家自觉学习

    ORACLE锁机制深入理解

    Oracle数据库的锁机制是确保多用户并发访问时数据一致性的重要工具。在数据库环境中,当多个事务同时尝试访问和修改同一数据对象时,如果没有适当的控制,可能会导致数据的不一致性和并发问题。为了解决这些问题,...

    oracle锁表及解锁

    在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁类型 Oracle中的锁主要有两...

Global site tag (gtag.js) - Google Analytics