Oracle--锁

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

 

结果:

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

 

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

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

posted @ 2019-11-09 17:19  兜里还剩五块出头  阅读(131)  评论(0)    收藏  举报