https://www.it610.com/article/1762045.htm
上面是关于锁介绍的链接,作者关于锁的介绍很详细,大家可以看看。
下面是我们的实验过程。
-----------------------------------------------------------------------------------------------------------------------------------------------
3、锁机制
(1)SELECT * FROM myemp WHERE deptno=10 FOR UPDATE加锁、解锁;
S1:SCOTT用户分别登录两个SQL PLUS窗口是session1和session2;
Session1
SELECT * FROM myemp WHERE deptno=10 FOR UPDATE;
结果:
Session2
SELECT * FROM myemp WHERE deptno=10 FOR UPDATE;
结果:
发现第2个会话,一直在等待,不执行……
S2解除锁定
Session1
Commit;
Session2
结果:
Commit之后可以查询了!
(2)表级锁定和解锁;
S1:SCOTT用户分别登录两个SQL PLUS窗口是session1和session2;
Session1:
LOCK TABLE myemp IN SHARE MODE NOWAIT;
Session2:
DELETE FROM myemp;
结果:
因是共享锁,第二个SESSION应该只能查度不能修改,所以一直在等待
S2解除锁定:管理员身份登录SQL PLUS窗口session3,查看(sid,serial#)的步骤如下:
S2.1:
SELECT session_id,oracle_username,process FROM v$locked_object ;
结果:
使用语句:
SELECT sid,serial#,username,lockwait,status FROM v$session where sid IN(SESSION_ID);
即:->
S2.2 :
SELECT sid, serial#, status FROM v$session where sid IN (132,191) ;
结果:
可以查询到Serial#
最后使用
ALTER SYSTEM KILL SESSION‘sid,serial#‘;
即:->
ALTER SYSTEM KILL SESSION ‘132,711‘;
(其中132,711用S2.2查询的sid, serial#替换)
解除死锁.
session1
结果:
这里就不贴截图了,可以发现,我们刚才的锁应该解除锁定。
Session2
结果:
这里我们刚才所作的操作现在也显示出来了。
---------------------------------------------------------------------------------------------------
后面没贴截图的部分,希望看到我这篇文章的同学,可以自己实验一下,因为我是电脑原因,突然卡住了,所以就不贴截图了。
原文:https://www.cnblogs.com/hmy-666/p/11826936.html