`
MyDicta
  • 浏览: 18876 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DML 语句与undo

阅读更多

 

  当我们发出一条DML,(比如 update t set col1='A' where col1='B') 语句时,

  其执行过程大概可以如下概括: 

 1: 在SGA 内存的share pool 里寻找相同的解析计划,找到就直接重用;如果没有,则生成新的执行计划。(所谓 解析计划简单理解就是针对SQL语句所引用的表进行表数据分布,表数据量以及列上的索引等相关信息的搜集)

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

 3: 服务器进程在buffer cache 里找一个可用undo数据块,如果没有发现,则到undo表空间里找一个可用的undo块,并调入buffer cache。(找不到就尝试获取其他undo segment里的 expired 状态的 extends; 如果仍然没有得到,undo表空间里的数据文件启用了自动扩展,则数据文件进行自动扩展;如果不能自动扩展,就尝试使用其它undo segment里的 InActive 状态的extends,如果以上步骤均无法获得可用空间,则报错啦,undo表空间不足!)  假设获得的undo数据块号为24,位于11号undo数据文件里。

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

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

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

  120    T1      24       11        10    col1     B

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

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

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

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

  121    T1      10       54        10    col1     A

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

10: 当用户发出commit命令时,触发LGWR进程,将120与121这两个重做记录写入联机日志文件,并将54号

数据块和11号数据块头部所记录的事务状态标记设置为已提交。然后控制权返回给用户,如果在SQL*Plus里执行DML,则表现为光标返回。

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

  

 

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

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MySQL Binlog Digger 4.28 + Mysql Binlog分析 + 数据库

    当发生误删、误增、误改时,它可以帮助我们从binlog中快速定位到误操作的重做语句(redo sql),同时推理出回滚语句(undo sql)。此外,它还可以结合[mysqld]的init-connect参数做mysql 8.0的数据库审计。 ​一. 对dml...

    OCA高级班视频.zip

    OCA-1-DML语句 OCA-1-SELECT语句 OCA-1-集合运算 OCA-2-ASM实例管理 OCA-2-Oracle软件安装 OCA-2-Oracle体系结构- OCA-2-备份恢复的概念 OCA-2-存储结构管理 OCA-2-监听器配置-11-0328- OCA-2-数据的迁移 OCA-2-...

    MySQL Binlog Digger 4.17.zip

    它可以对在线binlog与离线binlog进行挖掘分析,在设定过滤条件后便可以进行精确过滤,从而得到我们所期望的redo sql重做语句与undo sql回滚语句,当发生误增、误删、误改dml操作时,就能快速把业务系统数据恢复至...

    Oracle数据库实验操作

    实验22:dml语句,插入删除和修改表的数据 49 实验23:事务的概念和事务的控制 52 实验24:在表上建立不同类型的约束 54 实验25:序列的概念和使用 58 实验26:建立和使用视图 60 实验27:查询结果的集合操作 63 ...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    15.3.3 DML语句性能调整 15.3.4临时表空间的调整 15.3.5日志文件的调整 15.3.6 UNDO表空间的调整 15.4应用系统 15.4.1应用拆分 15.4.2 SQL执行过程 15.4.3 SQL解析 15.4.4 SQL优化 15.4.5 SQL行源生成 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    第9章 redo与undo 281 9.1 什么是redo? 281 9.2 什么是undo? 282 9.3 redo和undo如何协作? 285 9.4 提交和回滚处理 289 9.4.1 COMMIT做什么? 289 9.4.2 ROLLBACK做什么? 296 9.5 分析redo 297 9.5.1 测量...

    Log Explorer for SQL Server v4.22 含注册机

    相关DML语言和DDL语言可以在Row Revision History、Row Transaction History以及View DDL Commands来查询。 2、 Export Log Report 包括Export To SQL和Export To File,根据向导即可完成。 3、 其余菜单:Undo,...

    Log Explorer for SQL Server v4.22

    相关DML语言和DDL语言可以在Row Revision History、Row Transaction History以及View DDL Commands来查询。 2、 Export Log Report 包括Export To SQL和Export To File,根据向导即可完成。 3、 其余菜单:Undo,...

    Log Explorer4.2帮助文档

    相关DML语言和DDL语言可以在Row Revision History、Row Transaction History以及View DDL Commands来查询。 2、 Export Log Report 包括Export To SQL和Export To File,根据向导即可完成。 3、 其余菜单:Undo,...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    1.2.6 Undo表空间 1.2.7 服务器参数文件 1.2.8 后台进程 1.2.9 数据库管理员 1.3 Oracle Database 11g的基本数据类型 1.3.1 varchar2 1.3.2 数字 1.3.3 日期 1.3.4 时间戳 1.3.5 clob 1.3.6 blob 1.4 表 1.5 存储...

    sql2000 Log Explorer4.2(含注册码)+汉化

    相关DML语言和DDL语言可以在Row Revision History、Row Transaction History以及View DDL Commands来查询。 2、 Export Log Report 包括Export To SQL和Export To File,根据向导即可完成。 3、 其余菜单:Undo,...

    Oracle9i的init.ora参数中文说明

    说明: 在 SQL 语句中, 应避免使用繁琐的 NLS_SORT 进程。正常情况下, WHERE 子句中进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据NLS_SORT 会话参数进行语言比较。 值范围:...

    Oracle Database 11g初学者指南--详细书签版

    1.2.6 Undo表空间 5 1.2.7 服务器参数文件 5 1.2.8 后台进程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob ...

    Oracle编程艺术

    1.3.6 DBA与开发人员的关系.........................................................119 1.4 小结....................................................................................121 第 2章体系结构概述...

Global site tag (gtag.js) - Google Analytics