看了一篇关于oralce的undo段的一些知识。希望通过写日志加深印象。所谓的undo段就是当执行dml操作(insert、update、delete)时 oracle回将原来的旧数据写到undo段中。undo数据即回滚数据。主要作用有4点
1.回退事务。 这个作用的最经常用到。 经常的会存在误操作。比如说你delete一条记录忘记了where条件。把所有记录都删了。在undo段就有你删除的数据也就是回滚数据。通过回退事务即可。
2.读的一致性。当一个用户对某个表数据进行dml操作时,另外一个用户同时对该表查询。这个时候另外那个用户即去undo段去读取数据。这样就保持数据的读一致。
3.事务恢复 当对表进行dml操作时,中途发生意外比如断电、电脑死机等等。在你重启oracle的数据恢复即从undo获取数据。
4.倒叙查询(flashback query)。查询早于当前时间(允许时间范围)的记录数据。
还有几个undo的参数
1.undo_MANAGEMENT(管理方式)
(1)自动管理模式(auto) 使用undo表空间管理undo管理
(2)手工管理模式(manual) 使用回滚段管理undo管理
注意:自动管理模式下。如果没有配置初始化的undo_tablespace.oralce自动选择第一个可用的undo表空间存放undo数据。若没有可用undo空间,oracle回使用system回滚段存放undo记录,并在alter文件中记载警告。
2.undo_tablespace(指定例程所要的undo空间)
在RAC结构中 一个undo表空间不能由多个例程同时使用。所要必须指定配置一个独立的undo表空间
3.undo_retention
控制undo数据最大保留时间。默认为900秒。从而确定倒叙的最早时间点。