查询锁定记录2020-09-27

oracle 给表加锁

lock table 表名 exclusive mode nowait;   -- 锁整个表
select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录

 

使用for update 对表进行锁行操作

--查询锁定记录,这条SQL没有认真研究,只是知道它可以查出数据库中哪些session中含有锁?

                   SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;

--kill掉带锁的session

ALTER system KILL session 'SID,serial#'

 

 

update语句同理

上边的例子都是在查询时加上for update来加锁,如果是更新的时候呢。其实是一样的,通过试验发现,当我们在session1中操作一条update语句(但是不commit)时,在session2中是无法更新这条数据的,原因就是这条数据已经被session1加上了锁,只有在session1提交或放弃锁后,session2才可以更新这条数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值