Oracle数据库的DML命令的处理过程详解

Oracle数据库的DML命令的处理过程是本文我们主要要介绍的内容,从Oracle 9i起,有两种undo的管理方式:自动Undo管理(Automatic Undo Management,简称AUM)和手工Undo管理(Manual Undo Management,简称MUM)。Oracle 9i之前只能使用MUM,而且在MUM中,undo segment又叫做rollback segment。从Oracle 9i起,Oracle就建议使用AUM,而不应再使用MUM了。

在龙马潭等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需求定制设计,公司网站建设,企业网站建设,品牌网站建设,营销型网站,成都外贸网站建设,龙马潭网站建设费用合理。

DML语句与undo

当我们发出一条DML(比如update tab set col1='A' where col1='B')语句时,其执行过程可大致概括为以下几步。

1、在shared pool里进行解析,从而生成执行计划。

2、假设根据执行计划,得出col1='B'的记录存放在10号数据文件的54号数据块里。

3、服务器进程在buffer cache里找一个可用的undo数据块,如果没有发现,则到undo表空间里找一个可用的undo块,并调入buffer cache。假设获得的undo数据块号为24号,位于11号undo数据文件里。

4、将改变前的值,也就是A放入11号undo数据块。

5、由于undo数据块发生了变化,于是产生重做记录,假设重做记录号为120。

行号 事务id file# block# row column value

120 T1 24 11 10 col1 A

6、在buffer cache里找到54号数据块。如果没有发现,则从10号数据文件里调入。

7、将改变后的值,也就是B放入54号数据块。

8、由于数据块发生了变化,于是产生重做记录,假设重做记录号为121。

行号 事务id file# block# row column value

121 T1 10 54 10 col1 B

9、控制权返回给用户,如果在SQL*Plus里执行DML,则表现为光标返回。

10、当用户发出commit命令时,触发LGWR进程,将120与121这两个重做记录写入联机日志文件,并将54号数据块和11号undo数据块头部所记录的事务状态标记设置为已提交。然后控制权返回给用户,如果在SQL*Plus里执行DML操作,则表现为光标返回。

11、这个时候,54号数据块以及11号undo块并不一定被DBWn写入数据文件。只有在脏数据块的数量达到一定程度才会被写入。

事务只要被提交或回滚,那么该事务所使用的undo块就可以被覆盖。对于上面的例子来说,当第10步,用户发出commit命令以后,11号undo块里的数据就可以被其他事务所覆盖。

关于Oracle数据库的DML命令的处理过程的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. Oracle学习笔记之DECODE及常用窗口函数
  2. Oracle数据库各类控制语句的使用详细介绍
  3. Oracle数据库日期范围查询的两种实现方式
  4. Oracle数据库只读模式的CACHE BUFFERS CHAINS测试
  5. Oracle 10g数据库中UNDO_RETENTION参数的使用详解

文章题目:Oracle数据库的DML命令的处理过程详解
链接分享:http://www.36103.cn/qtweb/news39/14489.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联