转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12021587

正确答案:ABE

这道题需要我们了解锁的知识点。

TM锁的模式:

0-None   --没有锁 select

1-Null   --空锁

2-SS(RS) --行级共享锁(Row Shared,简称RS锁)

通过lock table t10 in row sharemode;命令添加RS锁

3-SX(RX) --行级排他锁(Row exclusive)RX锁

进行DML时,会自动在被更新的表上添加RX锁,可以执行LOCK命令显式的在表上添加RX锁

允许其他事务通过DML语句修改相同表里的其他数据行

允许使用lock table t10 in row exclusive mode;命令对表添加RX锁定;

不允许其他事务对表添加X锁

通过select … from for update命令添加RX锁

4-S --共享锁(Share,简称S锁)

通过lock table t10 in share mode;命令添加该S锁(wait for ITL release)

5-SSX(SRX) --共享行级排他锁(Share Row Exclusive,简称SRX锁)

通过lock table t10 in share rowexclusive mode;命令添加SRX锁

6-X --排他锁(Exclusive,简称X锁)

通过lock table t10 in exclusive mode命令添加X锁

根据题意,我们开起一个会话执行以上的for update的语句会产生一个3号锁(在9i是号锁,10g及以上版本是3号锁)和6号锁。操作如下,观察锁。

1、在125号会话下,执行select语句

gyj@OCM> select sid from v$mystat where rownum=1;

       SID
----------
125 gyj@OCM> SELECT ename
2 FROM emp
3 WHERE job='CLERK' FOR UPDATE OF empno; ENAME
----------
SMITH
ADAMS
JAMES
MILLER

2、查125会话的锁信息

gyj@OCM> select * from v$lock where sid=125;

ADDR             KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00000000910D8F58 00000000910D8FB0 125 TO 68064 1 3 0 273 0
00000000910D91F8 00000000910D9250 125 AE 100 0 4 0 993 0
00002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 145 0
000000008FB4E7E0 000000008FB4E858 125 TX 196640 1474 6 0 105 0

发现TM的3号锁,TX的6号锁。

OK,我们对答案一一解析:

答案A正确,会被阻塞。开另一个会话:22号会话,执行如下:

gyj@OCM> select sid from v$mystat where rownum=1;

       SID
----------
22 gyj@OCM> LOCK TABLE emp IN SHARE MODE;

被阻塞了,LOCK TABLE emp IN SHARE MODE;会产生4号锁

gyj@OCM> select * from v$lock where sid in(125,22);

ADDR             KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00000000910D8F58 00000000910D8FB0 125 TO 68064 1 3 0 557 0
00000000910D91F8 00000000910D9250 125 AE 100 0 4 0 1277 0
00000000910DA0F0 00000000910DA148 22 AE 100 0 4 0 304 0
00002B18F6AFD318 00002B18F6AFD378 22 TM 77522 0 0 4 107 0
00002B18F6AFD318 00002B18F6AFD378 125 TM 77522 0 3 0 429 1
000000008FB4E7E0 000000008FB4E858 125 TX 196640 1474 6 0 389 0

答案B正确,会被阻塞。开另一个会话:17号会话,执行如下:

gyj@OCM>  select sid from v$mystat where rownum=1;

       SID
----------
17 gyj@OCM> LOCK TABLE emp IN EXCLUSIVE MODE;

被阻塞了,LOCK TABLE emp IN EXCLUSIVE MODE;会产生6号锁

gyj@OCM> select * from v$lock where sid in(125,17);

ADDR             KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00000000910D8F58 00000000910D8FB0 125 TO 68064 1 3 0 726 0
00000000910D91F8 00000000910D9250 125 AE 100 0 4 0 1446 0
00000000910D99F0 00000000910D9A48 17 AE 100 0 4 0 91 0
00002B18F6AFC2E0 00002B18F6AFC340 17 TM 77522 0 0 6 70 0
00002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 598 1
000000008FB4E7E0 000000008FB4E858 125 TX 196640 1474 6 0 558 0

答案C不正确,不会被阻塞。开一另会话148号会话,操作如下:

gyj@OCM>  select sid from v$mystat where rownum=1;

       SID
----------
148 gyj@OCM> UPDATE emp SET sal=sal*1.2 WHERE job='MANAGER'; 3 rows updated.

没有被阻塞,可以更新,在同一个表中更新不同的行,锁不会有冲突。

gyj@OCM> select * from v$lock where sid in(125,148);

ADDR             KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00000000910D8F58 00000000910D8FB0 125 TO 68064 1 3 0 1684 0
00000000910D91F8 00000000910D9250 125 AE 100 0 4 0 2404 0
00000000910D92D8 00000000910D9330 148 AE 100 0 4 0 265 0
00002B18F6AFC2E0 00002B18F6AFC340 148 TM 77522 0 3 0 108 0
00002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 121 0
000000008FB01218 000000008FB01290 148 TX 327685 1488 6 0 65 0
000000008FB4E7E0 000000008FB4E858 125 TX 131082 1475 6 0 121 0

答案D不正确,不会被阻塞。与答案C一样的情况,这里就不再说了。

答案E正确,会被阻塞。开另一会话 143号会话,执行如下

gyj@OCM>  select sid from v$mystat where rownum=1;

       SID
----------
143 gyj@OCM> SELECT ename FROM emp WHERE job='CLERK' FOR UPDATE OF empno;

被阻塞了,更新同一行,会有行锁的冲突。

gyj@OCM> select * from v$lock where sid in(125,143);

ADDR             KADDR                   SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
00000000910D8F58 00000000910D8FB0 125 TO 68064 1 3 0 2019 0
00000000910D91F8 00000000910D9250 125 AE 100 0 4 0 2739 0
00000000910D98F8 00000000910D9950 143 TX 131082 1475 0 6 82 0
00000000910D9D70 00000000910D9DC8 143 AE 100 0 4 0 114 0
00002B18F6AFD318 00002B18F6AFD378 125 TM 77522 0 3 0 456 0
00002B18F6AFD318 00002B18F6AFD378 143 TM 77522 0 3 0 82 0
000000008FB4E7E0 000000008FB4E858 125 TX 131082 1475 6 0 456 1

锁的机制中有一个非常重要的概念:锁的兼容性,看下面这幅图:

QQ:252803295

技术交流QQ群:
DSI&Core Search  Ⅰ 群:127149411(2000人技术群:未满)
DSI&Core Search  Ⅱ 群:177089463(1000人技术群:未满)
DSI&Core Search  Ⅲ 群:284596437(500人技术群:未满)
DSI&Core Search  Ⅳ 群:192136702(500人技术群:未满)
DSI&Core Search  Ⅴ 群:285030382(500人闲聊群:未满)

MAIL:dbathink@hotmail.com

BLOG: http://blog.csdn.net/guoyjoe

WEIBO:http://weibo.com/guoyJoe0218

ITPUB: http://www.itpub.net/space-uid-28460966.html

OCM:   http://education.oracle.com/education/otn/YGuo.HTM

[每日一题] 11gOCP 1z0-052 :2013-09-25 Lock ――for update.................................C23的更多相关文章

  1. [每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10859315 正确答案:D 一.模拟上题的错误: 1.删除4号文件 [oracle@myd ...

  2. [每日一题] 11gOCP 1z0-053 :2013-10-9 backup with the KEEP option....................................33

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12517603 正确答案:AB 在Oracle 11g中,可以使用backup ….keep ...

  3. [每日一题] 11gOCP 1z0-053 :2013-10-12 RESULT_CACHE在哪个池?.............................44

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12657479 正确答案:B   Oracle 11g 新特性:Result Cache , ...

  4. [每日一题] 11gOCP 1z0-052 :2013-08-31 数据库的存储结构....................................................A8

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10784599 . 正确答案:A 将逻辑存储与物理存储分开是关系数据库范例的必要部分.关系数 ...

  5. [每日一题] 11gOCP 1z0-052 :2013-09-19 创建用户...................................................B41

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11834661 正确答案:BC 这道题比较简单,我就以答案来解析,如下来自官方文档创建用户的 ...

  6. [每日一题] 11gOCP 1z0-052 :2013-09-17 DRA--Data Recovery Advisor.............................B31

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11818529 正确答案:AD 数据库恢复顾问(DRA)是一个诊断和修复数据库问题的工具.共 ...

  7. [每日一题] 11gOCP 1z0-052 :2013-09-5 runInstaller oracle of no swap

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11186995 正确答案:A 我们先来看下面这张截图,这是我在安装Oracle 11.2.0 ...

  8. [每日一题] 11gOCP 1z0-053 :2013-10-11 Flashback Data Archive属性.........................43

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12656897 正确答案:BD 闪回数据归档请参考:http://blog.csdn.net ...

  9. [每日一题] 11gOCP 1z0-053 :2013-10-7 the backup of MULT_DATA................................32

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12500579 正确答案:D      RMAN 的新增功能 对超大型文件应用 Intraf ...

  10. [每日一题] 11gOCP 1z0-052 :2013-09-2 ADDM(Automatic Database Diagnostic Monitor)...................A28

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10951207 正确答案:BC AWR简称Automatic Workload Reposi ...

随机推荐

  1. poj2262

                                                                                                   Goldb ...

  2. WinForm 控件不闪烁

    1: [DllImport("user32")] 2: public static extern int SendMessage(IntPtr hwnd, int wMsg, in ...

  3. python学习之路-5 基础进阶篇

    本篇涉及内容 双层装饰器字符串格式化 双层装饰器 装饰器基础请点我 有时候一个功能需要有2次认证的时候就需要用到双层装饰器了,下面我们来通过一个案例详细介绍一下双层装饰器: 执行顺序:自上而下 解释顺 ...

  4. 页面动态数据的滚动效果——jquery滚动组件(vticker.js)

    <script language="javascript" src="lirms/Test/jquery-1.4.2.js"></script ...

  5. 在Docker中运行torch版的neural style

    相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes 敬请多多关注哈~~~ 在Docker中运行to ...

  6. .Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解

    Oracle数据访问组件 (ODAC)  全称:Oracle Data Access Components 优点:由于微软在.net framework4中会将System.Data.OracleCl ...

  7. 父元素高度为auto,子元素使用top:-50%没有效果的问题

    无意间在实现元素垂直居中的一种方式测试到,当一个元素高度没有指定的情况下,其 postion:relative;top:-50%;无效 后来查阅w3c看到这样一句话: <percentage&g ...

  8. web并发模型

    并发:cpu划分时间片,轮流执行每个请求任务,时间片到期后,换到下一个. 并行:在多核服务器上,每个cpu内核执行一个任务,是真正的并行 IO密集型的应用,由于请求过程中很多时间都是外部IO操作,CP ...

  9. 0118——UILabel和导入字体

    UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 100)]; 1.设置文字颜色 label.textC ...

  10. 漂亮回答面试官struts2的原理

    众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需要 ...