切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
Oracle
oracle行锁 select for update
oracle行锁 select for update
2020-06-22
Oracle
前端之家
前端之家
收集整理的这篇文章主要介绍了
oracle行锁 select for update
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果两个人同时
查询
到了一条数据,第二个的
修改
就会造成第一个人
获取
失效。为了避免这种情况的发生,我们使用了selectforupdate对
获取
到的行进行了加锁。下面简单介绍一下selectforupdate的使用
方法
。 先说明一下会用到的名词概念: statement:一个
sql
语句。 session:一个由ORACLE
用户
产生的连接,一个
用户
能产生多个SESSION,但相互之间是独立的。 transaction:所有的改动都能划分到transaction里,一个transaction包含一个或多个
sql
。当一个SESSION建立的时候就是个TRANSACTION开始的时刻,此后transaction的开始和结束由DCL控制,也就是每个COMMIT/ROLLBACK都标示着一个transaction的结束。 consistency:是对于statement级别而不是transaction级别来说的。
sql
statement得到的数据都是以
sql
statement开始的IMAGE。
用法
介绍: update,insert,delete,select...forupdate会LOCK相应的ROW。 只有一个TRANSACTION可以LOCK相应的行,也就是说如果一个ROW已经LOCKED了,那就不能被其他TRANSACTION所LOCK了。 LOCK由statement产生但却由TRANSACTION结尾(commit,rollback),也就是说一个
sql
完成后LOCK还会存在,只有在COMMIT/ROLLBACK后才会师释放。 简单举例: transactionA下面 select*fromconnectorawherea.MOBILE='13937134399'forupdata 如上,这个将会对
查询
出来的行
加上
一个行锁,如果在 transactionB下面对这一行数据进行增删改都将会等待,普通的
查询
可以,使用selectforupdate
查询
也需要等待。 需要在transactionA下面执行需要的操作之后commit或者rollback之后,在其他transaction下面才可以对此表此行进行操作。 使用这个行锁的情况一般是对并发的情况要求比较高的时候,需要锁住某行进行一些更新语句之后进行释放,再让其他transaction去操作。在这次外呼系统中很好的利用了这点
解决
了并发的问题。 forupdate后面还可以跟着[OFcols][NOWAIT] of的使用主要是针对多表关联的时候,如果不使用of,对两个表涉及到的行都将锁住,使用of可以指定锁定哪个表, 例如:selecta.MOBILE,b.NAMEfromconnectora,studentb wherea.STU_ID=b.IDanda.MOBILE='13937134399'forupdataofa.MOBILE 这样的话student表中对应的行是不加锁的,对connector一个表中行加锁 不使用两个表都加锁。 [NOWAIT]的使用是当锁冲突的时候
提示
的情况: 当有LOCK冲突时会
提示错误
并结束STATEMENT而不是在那里等待.返回
错误
是"ORA-00054:resourcebusyandacquirewithNOWAITspecified",如果不使用就会一直等待,直到锁释放之
后执行
。 在
页面
上调试的时候由于异常处理不好,把数据锁住了没有提交,也没有rollback,遇到这样的情况的时候可以通过以下方式
解决
: -----查看被锁对象的序列号、sid SELECTo.owner,o.object_name,o.object_type,s.sid,s.serial# FROMv$locked_objectl,dba_objectso,v$sessions WHEREl.object_id=o.object_id ANDl.session_id=s.sid ORDERBYo.object_id,xidusnDESC / ------利用sid和序列号
删除
altersystemkillsession'243,10265'; 243是sid10265是序列号 所以在使用锁的时候一定要做好
页面
的异常控制,不然很容易出问题。 *******************************************************
数据库
中锁类型的介绍: 有两种基本的锁类型,排它锁(ExclusiveLocks,即X锁)和共享锁(ShareLocks,即S锁)。当数据对象被
加上
排它锁时,其他的事务不能对它读取和
修改
。加了共享锁的数据对象可以被其他事务读取,但不能
修改
。
数据库
利用这两种基本的锁类型来对
数据库
的事务进行并发控制。 其中DML锁(datalocks,数据锁),用于保护数据的完整性 DML锁的目的在于保证并发情况下的数据完整性,DML锁主要
包括
TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。
上一篇:Oracle varchar2最大支持长度
下一篇:【模糊查询】oracle中带有特殊符号
猜你在找的Oracle相关文章
[Oracle]记一次由sequence引发的enq sv-contention等待事件
数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库...
作者:前端之家 时间:2021-02-21
oracle统计信息的锁定与解锁
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该...
作者:前端之家 时间:2021-02-21
【转】RMAN删除过期备份或非过期备份
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操...
作者:前端之家 时间:2021-02-21
数据恢复顾问(DRA)
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能...
作者:前端之家 时间:2021-02-21
RMAN备份与恢复(一)--认识RMAN
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(re...
作者:前端之家 时间:2021-02-21
RMAN备份与恢复(二)--RMAN常用操作学习
(1)连接目标数据库 在RMAN中可以建立与目标数据库或恢复目录数据库的连接。与目标数据库...
作者:前端之家 时间:2021-02-21
ORA-00245问题总结
(1)问题描述 在进行数据库归档备份时(备份归档日志文件和控制文件),有时成功,有时失...
作者:前端之家 时间:2021-02-21
使用RMAN对数据文件进行恢复
(1)备份数据库 在使用RMAN进行数据库恢复之前,先用RMAN进行全库备份 (2)删除数据文件...
作者:前端之家 时间:2021-02-21
Oracle使用fy_recover_data恢复truncate删除的数据
(一)truncate操作概述在生产中,truncate是使用较多的命令,在使用不当的情况下,往往会造...
作者:前端之家 时间:2021-02-21
备份与恢复(四)--RMAN使用恢复目录catalog来保存档案资料库
(一)恢复目录概述RMAN档案资料库用于存储数据库备份、修复以及恢复所需的信息。这些信息...
作者:前端之家 时间:2021-02-21
编程分类
MySQL
MsSQL
Oracle
Sqlite
Postgre SQL
Mariadb
MongoDB
NoSQL
HBase
JDBC
最新文章
• [Oracle]记一次由sequence
• oracle统计信息的锁定与解
• 【转】RMAN删除过期备份或
• 数据恢复顾问(DRA)
• RMAN备份与恢复(一)--认
• RMAN备份与恢复(三)--RM
• RMAN备份与恢复(二)--RM
• ORA-00245问题总结
• 使用RMAN对数据文件进行恢
• Oracle使用fy_recover_dat
热门标签
更多 ►
undo日志
persistent-c
mysql-error-
postal-code
sql-match-al
mysql-5.6
mysql-8.0
database-tri
安装路径
系统错误
data_dir
丢失文件
主从同步
sql_mode
数据库目录
匿名用户
character_se
ID归零
数据库位置
查询表
重复字段
查询字段
截断日志
SUSPECT
7391
Remote Serve
Linked Serve
玄学问题
登录不上
开启远程访问