无论什么时候进程或者用户回话修改过数据库里面的数据,Oracle把它(数据库中的数据)被修改以前的存在过的旧值保存为undo data。这种设计为数据库使用者提供给了很多好处。
理解UNDO段(undo segments)
Undo Segments 也叫做rollback segments,在数据库中和其他的段的概念相似,就像表段,索引段。因为undo segments 也是用扩展(extents)组成,这也是有数据块依次组成。一个undo段也是装载的数据和表的数据类似。然而,这是相似之处。undo段必须被保存在的定类型的表空间,乘坐 undo tablespace。 尽管一个数据库可以拥有超过一个undo 表空间,但是同一个时刻只能有一个表空间是活动状态。undo 段搜集包含在一个事物中的一个或者许多表的undo信息。而且undo表空间按照需要自动增大或者减小,就像循环缓冲区。在一个undo段中填满扩展的是能回到段的开始,如果段的第一个扩展没有被活跃的事物使用。
在每个事物的开始,换句话说,当地一个数据库操纵语言(DML)命令在预先的一个提交前被发起,或者用户第一次请求数据库链接——事物被指派给一个在undo表空间的undo段。对任何表的任何改变在事物中,被记录到指派的undo段中。目前活跃的undo段的名字能被从动态性能视图v$rollname查询,你应该能看到类似下面的内容。