现在的位置: 首页 > 综合 > 正文

Oracle undo 管理

2013年10月09日 ⁄ 综合 ⁄ 共 1293字 ⁄ 字号 评论关闭

在开始之前,我们先来思考几个问题?

 

1.  ora-01555错误的是怎么产生的?有什么办法解决?

      该问题,参考我的Blog: Oracle ORA-01555快照过旧

 
 
http://blog.csdn.net/xujinyang/article/details/6832722


2.  回滚段(回滚表空间)有什么作用?

3.  数据库启动的时候,如何加载回滚段(回滚段表空间)。

4.  回滚段的数量由什么公式来计算

5.  回滚表空间的大小如何确定?

 


什么是undo
Oracle数据库在回退、撤销或者改变数据所需要的维护数据库信息的一种手段。这里的数据库信息是指在数据库提交之前的记录的改变等事务信息。


Undo 信息主要有以下用途:
当系统发出rollback信息
数据库恢复
提供读一致性


当系统发出rollback命令时,undo 信息通过记录的信息将数据库的改变恢复到commit之前的状态。在数据库恢复期间,undo信息被用来从redo log中撤销任何未提交到数据文件的事务。当一个用户在访问数据时,Undo记录通过维护访问数据的前镜像数据来保证当有其他用户改变相同数据时数据库的读一致性。


以前数据库使用回滚段来存储undo信息,这种回滚段管理方式非常的复杂。现在数据库采用undo的方式降低了管理的复杂性,同时减少了dba的工作负荷。但是在数据库只能使用这两种方式的一种。可以在数据库里定义两种方式的文件,但是,同一时刻,必须指定数据使用哪一种方式。当你需要在两种方式中切换时,必须将系统重新启动


Oracle数据库一直使用系统回滚段来完成系统的事务。系统回滚段是在数据库,创建的时候产生的,系统启动后就一直在线。Dba不需要对它作任何的操作来优化。


. 指定Undo的方式
oracle 9i以后有个初始化参数:undo_management。当将undo_management设置成AUTO时系统使用重做表空间来管理回滚段,当它被设置成MENUAL时系统使用回滚段
oracle推荐使用重做表空间代替回滚段。


当系统使用auto方式管理undo信息时,系统必须指定一个undo表空间。这个表空间可以是在数据库创建时产生,也可以数据库创建后再创建。

 

当实例启动的时候,系统自动选择第一个有效的undo表空间或者是rollback segment,如果没有有效的可用的undo表空间或者是回滚段,系统使用system rollback segment。这种情况是不被推荐的,当系统运行在没有undo的情况下,系统会在alert.log中记录一条警告信息

 

 

2.1 自动管理模式(Automatic Undo Management)


如果系统使用要使用auto方式管理undo信息,那么需要通过指定初始化参数undo_tablespace的值来指定系统使用哪一个undo表空间来存放undo信息。如果指定了undo_tablespace的值,但是系统中不存在这样的表空间,那些系统启动将会失败。此时可以做的操作是,如果系统存在undo表空间,为undo_tablespace

抱歉!评论已关闭.