当前位置:  数据库>oracle

DML操作Oracle在内部实现

    来源: 互联网  发布时间:2017-04-27

    本文导语: 对与DML操作Oracle在内部按如下顺序执行:1,相应事务分配回滚段(undo segment).2,分配回滚段后,在回滚段头上创建事务表slot(transaction table slot).3.创建事务表后会生出TXID(TransactionID),再将TXID分配给当前事务。这个值指向分给事务的...

对与DML操作Oracle在内部按如下顺序执行:
1,相应事务分配回滚段(undo segment).
2,分配回滚段后,在回滚段头上创建事务表slot(transaction table slot).
3.创建事务表后会生出TXID(TransactionID),再将TXID分配给当前事务。这个值指向分给事务的回滚段头上存在的事务表的准确位置。
4.事务对象的数据块载入到高速缓冲区,在块头的ITL(Intersted transaction list)上登记事务条目。
如果itl上没有所需空间,就会发生等待enq:TX-allocate ITL entry。
5.将需要修改的块的修改信息存储到PGA,存储的方式是change vector,之后进程将PGA中的change vector以redo record复制到重做缓冲区。
6.将之前映像信息记录到撤销块,继而修改数据块,被修改的数据块变为脏状态。而且在高速缓冲区中创建以修改的数据块的CR块。
7.执行commit后给事务分配SCN,提交信息存储在重做缓冲区。
8.回滚段头的事务表中存储已成功提交的信息,结束包括TX锁在内的所有资源占有。
9.重做缓冲区的内容记录在重做日志文件上。
下面通过转储来探究一下这个过程:










  • 会话1  
  • SQL> update emp set sal=sal+100 where rownum=1;  

  •     
     
     

    您可能感兴趣的文章:

     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Sql学习第二天——SQL DML与CTE概述
  • Oracle DDL,DML,DCL,TCL 基础概念
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  • T-SQL入门教程之获取DML语句信息
  • DDL、DML和DCL的区别与理解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,