SelectForupdate语句浅析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SelectForupdate语句浅析

? Select For update语句浅析 分类:?Oracle 体系结构2012-09-05 21:34?40417人阅读?评论(0)?收藏?举报oraclesessionsqlobjectreference数据库 Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 ? 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。 ? 下面是采自Oracle官方文档《SQLLanguage Reference》中关于for update子句的说明:(请双击点开图片查看) ? ? 从for update子句的语法状态图中,我们可以看出该子句分为两个部分:加锁范围子句和加锁行为子句。下面我们分别针对两个方面的进行介绍。 ? 加锁范围子句 ? 在select…for update之后,可以使用of子句选择对select的特定数据表进行加锁操作。默认情况下,不使用of子句表示在select所有的数据表中加锁。 ? //采用默认格式for update SQL select * from emp where rownum2 for update; ? EMPNO ENAME?????JOB????????MGR HIREDATE?????????SAL?????COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ ?7369 SMITH?????CLERK????12-17????800.00??????????????20 ? ? 此时,我们观察v$lock和v$locked_object视图,可以看到锁信息。 //事务信息视图 SQL select addr,xidusn,xidslot,xidsqn from v$transaction; ? ADDR????????XIDUSN???XIDSLOT????XIDSQN -------- ---------- ---------- ---------- 377DB5D0?????????7????????19???????808 //锁对象信息 SQL select xidusn,xidslot,xidsqn,object_id,session_id, oracle_username from v$locked_object; ? ???XIDUSN???XIDSLOT????XIDSQN?OBJECT_ID SESSION_ID ORACLE_USERNAME ---------- ---------- ---------- ---------- ---------- ------------------------------ ????????7????????19???????808?????73181????????36 SCOTT // SQL select owner,object_name from dba_objects where object_id=73181; ? OWNER?????????????????????????OBJECT_NAME ------------------------------ ------------------------------------------------------------ SCOTT?????????????????????????EMP ? // SQL select addr, sid, type, id1,id2,lmode, request, block from v$lock where sid=36; ? ADDR?????SID TYPE???????ID1???????ID2?????LMODE???REQUEST?BLOCK -------- ---------- ---- ---------- ---------- ---------- ---------- ---------- 37E808F0???36 AE?????????100?????????0?????????4?????????0???0 B7DE8A44??36 TM???????73181?????????0?????????3?????????0??0 377DB5D0??36 TX??????458771???????808?????????6

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档