首页 > 数据库技术 > 详细

Oracle--锁

时间:2019-11-09 18:50:12      阅读:82      评论:0      收藏:0      [点我收藏+]

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,查看(sidserial#)的步骤如下:

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

 

结果:

这里我们刚才所作的操作现在也显示出来了。

 

---------------------------------------------------------------------------------------------------

后面没贴截图的部分,希望看到我这篇文章的同学,可以自己实验一下,因为我是电脑原因,突然卡住了,所以就不贴截图了。

Oracle--锁

原文:https://www.cnblogs.com/hmy-666/p/11826936.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!