`
zzhonghe
  • 浏览: 243690 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle的Redo和Undo

    博客分类:
  • DB
 
阅读更多
延迟段创建:  
create table的时候,并没有真正分配段,而已等真正需要insert的时候才进行分配空间。
 
 
Update+ Commit所做的工作:

update:
  1. 生成undo信息
  2. 修改数据块
  3. 给数据块加锁标记,得到锁
  4. 生成Redo信息
commit:
  1. 为事务生成SCN,计数
  2. LGWR把Redo日志写入到磁盘 -- IO最花时间,  PLSQL中的Commit不会等LGWR写入磁盘,立刻返回。而其他的调用则需等待
  3. V$Transaction中删除事务记录
  4. V$Lock中记录的锁释放
  5. 清除块上的锁信息
所以commit过程的工作确实不多。
 
 
Update + Rollback所做的工作:
 
update:
  1. 生成undo信息
  2. 修改数据块
  3. 给数据块加锁标记,得到锁
  4. 生成Redo信息
rollback:
  1. 从undo读取数据,应用到数据块
  2. V$Transaction中删除事务记录
  3. V$Lock中记录的锁释放
  4. 清除块上的锁信息
  5. 清除Redo的缓存
Redo的测量
Redo语句以测量, redo的数量越多,系统就越慢。从DB Trace里面可以跟踪到, Redo是DB中的一个串行点,
 
 
Nologging:
不使用日志的情况,也就是不需要恢复数据。 比如索引的创建,即使介质出问题,索引还是可以重建。
 
 
临时表:
oracle的临时表,不会生成redo, 但是会生成undo.  所以他是不能恢复的。
临时表有支持多版本控制和并发,能够回滚,所以undo是必须的。
 
 
Truncate table和Delete Table:
我们都知道truncate table是很快,而delete table很慢。 一个主要原因是truncate是DDL,没有undo信息生成
 
 
 
Undo信息生成的DML排名
Insert语句生成很少的Undo,因为只为rowid生成Undo
update语句的Undo集中在被修改的字段上面, 而如果是带索引的字段修改,那么Undo是2.5倍
delete生成的Undo最多,整行的生成,所以开销是最大。  
 
所以避免在同步过程中执行delete的操作是一个好的编程习惯。
 
 
ORA-1555 Snapshot Too Old
这是一个经常见到的问题, 影响到查询语句,使收到这个错误的查询语句不能继续,它和数据破坏或者数据丢失完全没有关系,根本原因是提交得太过频繁。
由于读一致的存在,一个较长时间的查询访问到了一个undo块,但是由于undo的空间太少,这个undo块在后来的查询等待中,被其他的session所修改,那么这个查询就会返回这个错误。
 
为了避免这个问题,可以设置自动管理Undo  UNDO_RETENTION,让DB内置的"DBA"根据动态的数据来管理空间分配。
 
0
0
分享到:
评论

相关推荐

    NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...

    oracle_redo_undo

    oracle_redo_undo

    Oracle_Undo与Redo的通俗

    Oracle_Undo与Redo的通俗

    ORACLE redo undo.docx

    Oracle redo undo的说明解释

    oracle的undo与redo

    oracle日志,Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。

    Oracle中如何对超大规模数据(如超过2亿条)直接用SQL语句入库?

    在实际生产环境下,有时需将超大... from tab的Oracle SQL方式直接执行将导致redo、undo日志暴增,使数据库容易假死。针对此问题,采用文中方法可完美解决,且对系统性能几乎无影响(不管是分区表还是普通堆表均可)。

    Oracle 9i 10g编程艺术:深入数据库体系结构

    然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redo和undo,还会解释为什么了解这些内容很重要。最后,我们再来分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。

    oracle undo

    如果说Redo是用来保证在故障时事务可以被恢复,那么Undo则是用来保证事务可以被回退或者撤销。 在修改操作中,对于回退段的操作存在多处,在事务开始时,首先需要在回滚段表空间获得一个事务槽,分配空间,然后创建...

    浅谈oracle存储结构

    oracle文件学习精华课件,美创公开课内容 参数文件、控制文件、redo、undo、数据文件等等均有详细阐述。

    双数据库(Oracle+MySQL)大神级系列教程分享(实战超越OCP.OCM)

    双数据库(Oracle+MySQL)大神级系列教程分享1.3-11(实战超越OCP.OCM)

    深入oracle体系结构

    数据库体系结构,并强调数据库本身如何工作。深入地分析Oracle数据库体系结构,...讨论锁定、并发控制、事务、redo和undo,分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。

    Expert Oracle Database Architecture 2nd 原版PDF by Kyte

    undo, and why it is important for you to know about these things. Lastly, I examine the physical structures in the database such as tables, indexes, and datatypes, covering techniques for making ...

    深入解析OracleDBA入门进阶与诊断案例 4/4

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

    深入解析OracleDBA入门进阶与诊断案例 3/4

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

    深入解析OracleDBA入门进阶与诊断案例 2/4

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

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

    9.5.7 临时表和redo/undo 317 9.6 分析undo 321 9.6.1 什么操作会生成最多和最少的undo? 321 9.6.2 ORA-01555: snapshot too old错误 323 9.7 小结 334 第10章 数据库表 335 10.1 表类型 335 10.2 术语 337 ...

    Oracle常用技术资料合集.zip

    二、《Oracle数据库SQL执行计划的取得和解析》PPT(附SQL文件) 三、Oracle 常用脚本 2pc_clean.txt ash_sql_line_id.txt ash_top_sql_event.txt ash_used awr_db_time.txt awr_event_histogram.txt awr_metric_...

    ORACLE数据库体系架构视频教程详细完整版

    第四章:redo日志 1 第五章:归档日志 archivelog 第六章:日志挖掘 logminer 第七章:管理undo 第八章: 检查点 checkpoint 第九章:实例恢复机制 第二部分:Oracle存储架构 第十章: 数据字典和动态视图 第十一章...

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

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

    linux系统给oracle数据库增加新的实例.pdf

    size 10m, GROUP 2 ('/u01/app/oracle/oradata/exchange/redo2.dbf') size 10m, GROUP 3 ('/u01/app/oracle/oradata/exchange/redo3.dbf') size 10m CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16;...

Global site tag (gtag.js) - Google Analytics