我是靠谱客的博主 多情母鸡,最近开发中收集的这篇文章主要介绍oracle 锁的作用,oracle中锁的分类及作用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在大概了解oracle的锁机制之后,我们来解决几个基本的问题:

1.UPDATE/DELETE操作会将RS锁定,直至操作被COMMIT或者ROLLBACK;

若操作未COMMIT之前其他session对同样的RS做变更操作,则操作会被hold,直至前session的UPDATE/DELETE操作被COMMIT;

2.session内外SELECT的RS范围

前提:INSERT、UPDATE操作未COMMIT之前进行SELECT;

若在同一session内,SELECT出来的RS会包括之前INSERT、UPDATE影响的记录;

若不在同一session内,SELECT出来的RS不会包括未被COMMIT的记录;

3.SELECT.... FOR UPDATE [OF cols] [NOWAIT/WAIT] [SKIP LOCKED]

OF cols:只锁定指定字段所在表的RS,而没有指定的表则不会锁定,只会在多表联合查询时出现;

NOWAIT:语句不会hold,而是直接返回错误ORA-00054: resource busy and acquire with

NOWAIT specified;

WAIT N:语句被hold N秒,之后返回错误ORA-30006: resource busy; acquire with WAIT

timeout expired;

SKIP LOCKED:不提示错误,而是直接返回no rows selected;

以上几个选项可以联合使用的,比较推荐的有:

SELECT.... FOR UPDATE NOWAIT:对同一RS执行该SQL时,直接返回错误;

SELECT.... FOR UPDATE NOWAIT SKIP LOCKED:对同一RS执行该SQL时,直接返回空行;

PS:当RS被LOCK住之后,只对同样请求LOCK的语句有效,对无需LOCK的SELECT语句并没有任何影响;

最后

以上就是多情母鸡为你收集整理的oracle 锁的作用,oracle中锁的分类及作用的全部内容,希望文章能够帮你解决oracle 锁的作用,oracle中锁的分类及作用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部