[每日一题] 11gOCP 1z0-052 :2013-09-25 Lock ――for update.................................C23
来源:互联网 发布:佳能cp1200安装软件 编辑:程序博客网 时间:2024/06/05 03:29
转载请注明出处: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---------- 125gyj@OCM> SELECT ename 2 FROM emp 3 WHERE job='CLERK' FOR UPDATE OF empno;ENAME----------SMITHADAMSJAMESMILLER
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 000000000910D91F8 00000000910D9250 125 AE 100 0 4 0 993 000002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 145 0000000008FB4E7E0 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---------- 22gyj@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 000000000910D91F8 00000000910D9250 125 AE 100 0 4 0 1277 000000000910DA0F0 00000000910DA148 22 AE 100 0 4 0 304 000002B18F6AFD318 00002B18F6AFD378 22 TM 77522 0 0 4 107 000002B18F6AFD318 00002B18F6AFD378 125 TM 77522 0 3 0 429 1000000008FB4E7E0 000000008FB4E858 125 TX 196640 1474 6 0 389 0
答案B正确,会被阻塞。开另一个会话:17号会话,执行如下:
gyj@OCM> select sid from v$mystat where rownum=1; SID---------- 17gyj@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 000000000910D91F8 00000000910D9250 125 AE 100 0 4 0 1446 000000000910D99F0 00000000910D9A48 17 AE 100 0 4 0 91 000002B18F6AFC2E0 00002B18F6AFC340 17 TM 77522 0 0 6 70 000002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 598 1000000008FB4E7E0 000000008FB4E858 125 TX 196640 1474 6 0 558 0
答案C不正确,不会被阻塞。开一另会话148号会话,操作如下:
gyj@OCM> select sid from v$mystat where rownum=1; SID---------- 148gyj@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 000000000910D91F8 00000000910D9250 125 AE 100 0 4 0 2404 000000000910D92D8 00000000910D9330 148 AE 100 0 4 0 265 000002B18F6AFC2E0 00002B18F6AFC340 148 TM 77522 0 3 0 108 000002B18F6AFC2E0 00002B18F6AFC340 125 TM 77522 0 3 0 121 0000000008FB01218 000000008FB01290 148 TX 327685 1488 6 0 65 0000000008FB4E7E0 000000008FB4E858 125 TX 131082 1475 6 0 121 0
答案D不正确,不会被阻塞。与答案C一样的情况,这里就不再说了。
答案E正确,会被阻塞。开另一会话 143号会话,执行如下
gyj@OCM> select sid from v$mystat where rownum=1; SID---------- 143gyj@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 000000000910D91F8 00000000910D9250 125 AE 100 0 4 0 2739 000000000910D98F8 00000000910D9950 143 TX 131082 1475 0 6 82 000000000910D9D70 00000000910D9DC8 143 AE 100 0 4 0 114 000002B18F6AFD318 00002B18F6AFD378 125 TM 77522 0 3 0 456 000002B18F6AFD318 00002B18F6AFD378 143 TM 77522 0 3 0 82 0000000008FB4E7E0 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
- [每日一题]11gOCP 1z0-052 :2013-09-11 MGR_ROLE role..........................................A66
- [每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20
- [每日一题] 11gOCP 1z0-052 :2013-09-3 Because of frequent checkpoints...........................A30
- [每日一题] 11gOCP 1z0-052 :2013-09-4 block header grows............................................A33
- [每日一题] 11gOCP 1z0-052 :2013-09-6 DBMS_STATS.SET_TABLE_PREFS()使用...............................A37
- [每日一题] 11gOCP 1z0-052 :2013-09-9 PL/SQL package body...........................................A46
- [每日一题] 11gOCP 1z0-052 :2013-09-10 ABOUT ALERTS...............................................A50
- [每日一题] 11gOCP 1z0-052 :2013-09-12 SELECT_CATALOG_ROLE角色....................................A68
- [每日一题] 11gOCP 1z0-052 :2013-09-13 FAST_START_MTTR_TARGET.........................................A69
- [每日一题] 11gOCP 1z0-052 :2013-09-14 repeated parsing activity.................................A70
- [每日一题] 11gOCP 1z0-052 :2013-09-15 Enterprise Manager Support Workbench..................B9
- [每日一题] 11gOCP 1z0-052 :2013-09-16 shared server mode........................................B21
- [每日一题] 11gOCP 1z0-052 :2013-09-17 DRA--Data Recovery Advisor.............................B31
- [每日一题] 11gOCP 1z0-052 :2013-09-18 理解EXPDP/IMPDP.......................................B36
- [每日一题] 11gOCP 1z0-052 :2013-09-19 创建用户...................................................B41
- [每日一题] 11gOCP 1z0-052 :2013-09-20 BIGFILE | SMALLFILE TABLESPACE.....................B43
- [每日一题] 11gOCP 1z0-052 :2013-09-21 automatic maintenance window..........................B53
- 电脑ip绑定,vm虚拟机上网u
- 如何设计一个LRU Cache?
- android 获取外置卡的方法
- ZOJ Candies
- oracle 数据类型详解---日期型
- [每日一题] 11gOCP 1z0-052 :2013-09-25 Lock ――for update.................................C23
- 学习贴:看360公关如何把控搜狗投资案舆论
- 测试QQ邮箱开放平台
- Android service 学习
- 新炬网络Oracle 11g rac 删除节点
- 以跑马拉松心态分批买基金
- DEDE中如何过滤掉Html标签,并且截取字符串长度
- 利用map文件找到程序崩溃代码行
- C++ 线程的创建,挂起,唤醒,终止