设为首页 收藏本站
查看: 1282|回复: 0

[经验分享] OCP考题解析_007:DDL和ROLLBACK

[复制链接]

尚未签到

发表于 2016-9-4 10:13:22 | 显示全部楼层 |阅读模式
   DDL为什么不能rollback?

   在Oracle中DDL语句将转化为对数据字典表的DML语句;比如,一个简单的修改表的DDL语句,会导致Oracle在后台通过递归SQL语句进行大量的查询和修改的操作

     --DDL伪代码
  

begin
commit;
DDL_statement;
commit;
end;


   为什么前后有2个commit?
   道理很简单,Oracle是为了将用户的读写操作和数据字典的修改隔离开,用户数据的读写不应该和数据字典的操作放在同一个事务中
  
  

     ㈠ 并发性

   下面用反证法证明之

   假设Oracle可以回滚DDL语句,也就是,DDL并不会自动提交,而是事务中的一部分
   那么DDL就要满足READ COMMIT隔离机制,也就是说,用户执行的DDL语句在提交前,其他用户是无法看到的
   比如A用户执行CREATE TABLE T的语句,然后对T执行了一些DML。而这时其他会话是无法看到T表的


  

Session A>create table t (id number);--A没有commit!
Table created.
Session B>insert into t values (1);--此时T表对B是透明的
--这里应该会返回"ORA-00942: table or view does not exist"

   Oracle为了实现DDL可以回滚的功能,且实现多版本读一致性,那么就必须在DDL发生后,将修改的表锁定,避免其他会话的访问造成不一致
   这会导致Oracle中出现锁升级的情况,并且严重的影响Oracle的并发性,而且会大大增加死锁产生的几率
   要知道,Oracle的锁机制和多版本读一致性使得Oracle的并发性在所有数据库产品中首屈一指
   显然为了实现DDL的回滚而损失最值得称道的并发性,Oracle认为得不偿失  


㈡ 成本论

   因为DDL操作在数据库里都被解析为一系列的DML操作,操作的对象都是如obj$,seg$等数据字典表,这些东西都存储在系统表空间
   这个如果回滚的话,导致递归的操作,估计系统也就垮了而且性能会下降

   经济学上,有个"比较成本论",举个例子:
   如果两个人都能制鞋和帽,其中一人在两种职业上都比另一个人强一些,不过制帽子时只强1/5或20%,而制鞋时则强1/3或33%
   那么这个较强的人专门制鞋,而那个较差的人则专门制帽,岂不是对双方都有利么?

   推及到Oracle上,业务的读写操作和数据字典的读写操作如能按上述个人之间的分工原理进行协同工作,也必将会使各方获得利益


   OCP考题--007:

  
  

Q: 4 Evaluate the set of SQL statements:
CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
ROLLBACK;
DESCRIBE DEPT
What is true about the set?
A. The DESCRIBE DEPT statement displays the structure of the DEPT table.
B. The ROLLBACK statement frees the storage space occupied by the DEPT table.
C. The DESCRIBE DEPT statement returns an error ORA-04043: object DEPT does not exist.
D. The DESCRIBE DEPT statement displays the structure of the DEPT table only if there is a COMMIT
statement introduced before the ROLLBACK statement.
Answer: A  


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-267409-1-1.html 上篇帖子: OCP 1Z0_043 TK及相关材料 下篇帖子: 编程模式---“开--闭”原则(OCP)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表