延迟段创建:
create table的时候,并没有真正分配段,而已等真正需要insert的时候才进行分配空间。
Update+ Commit所做的工作:
update:
update:
- 生成undo信息
- 修改数据块
- 给数据块加锁标记,得到锁
- 生成Redo信息
commit:
- 为事务生成SCN,计数
- LGWR把Redo日志写入到磁盘 -- IO最花时间, PLSQL中的Commit不会等LGWR写入磁盘,立刻返回。而其他的调用则需等待
- V$Transaction中删除事务记录
- V$Lock中记录的锁释放
- 清除块上的锁信息
所以commit过程的工作确实不多。
Update + Rollback所做的工作:
update:
- 生成undo信息
- 修改数据块
- 给数据块加锁标记,得到锁
- 生成Redo信息
rollback:
- 从undo读取数据,应用到数据块
- V$Transaction中删除事务记录
- V$Lock中记录的锁释放
- 清除块上的锁信息
- 清除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"根据动态的数据来管理空间分配。
相关推荐
BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较BLOG_Oracle_lhr_【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行...
oracle_redo_undo
Oracle_Undo与Redo的通俗
Oracle redo undo的说明解释
oracle日志,Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。
在实际生产环境下,有时需将超大... from tab的Oracle SQL方式直接执行将导致redo、undo日志暴增,使数据库容易假死。针对此问题,采用文中方法可完美解决,且对系统性能几乎无影响(不管是分区表还是普通堆表均可)。
然后讨论一些重要的数据库主题,如锁定、并发控制、事务、redo和undo,还会解释为什么了解这些内容很重要。最后,我们再来分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。
如果说Redo是用来保证在故障时事务可以被恢复,那么Undo则是用来保证事务可以被回退或者撤销。 在修改操作中,对于回退段的操作存在多处,在事务开始时,首先需要在回滚段表空间获得一个事务槽,分配空间,然后创建...
oracle文件学习精华课件,美创公开课内容 参数文件、控制文件、redo、undo、数据文件等等均有详细阐述。
双数据库(Oracle+MySQL)大神级系列教程分享1.3-11(实战超越OCP.OCM)
数据库体系结构,并强调数据库本身如何工作。深入地分析Oracle数据库体系结构,...讨论锁定、并发控制、事务、redo和undo,分析数据库这的物理结构,如表、索引和数据类型,并介绍哪些技术能最优地使用这些物理结构。
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 ...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识...
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数据库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_...
第四章:redo日志 1 第五章:归档日志 archivelog 第六章:日志挖掘 logminer 第七章:管理undo 第八章: 检查点 checkpoint 第九章:实例恢复机制 第二部分:Oracle存储架构 第十章: 数据字典和动态视图 第十一章...
针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...
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;...