ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle - 回滚段

Oracle - 回滚段

原创 Linux操作系统 作者:wonphy 时间:2008-09-24 15:47:06 0 删除 编辑

一直以来对回滚段的理解都不是很清晰,更谈不上深入。今天偶然在网上看到了一篇文章,比较浅显易懂地阐述了回滚段的概念,用法和规划及问题的解决,这里主要摘录一下概念部分,以及日常管理的内容和常见问题的解决,因为自Oracle9i以后回滚段默认设置由数据库自行管理了。

“回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。”

回滚段的作用:事务回滚,事务恢复,读一致性

回滚段的种类:系统回滚段,非系统回滚段(公用和私用)

前面讲到自Oracle9i以后回滚段默认设置由数据库自行管理,这大大降低了DBA的维护成本,一般不需要进行回滚段的创建、修改、删除等动作了,只要UNDOTBS1表空间能够有足够的空间就行(自动伸展);

SQL> select segment_name as seg,tablespace_name as tab from dba_rollback_segs;
SEG                            TAB
------------------------------ ------------------------------
SYSTEM                         SYSTEM
_SYSSMU1$                      UNDOTBS1
_SYSSMU2$                      UNDOTBS1
_SYSSMU3$                      UNDOTBS1
_SYSSMU4$                      UNDOTBS1
_SYSSMU5$                      UNDOTBS1
_SYSSMU6$                      UNDOTBS1
_SYSSMU7$                      UNDOTBS1
_SYSSMU8$                      UNDOTBS1
_SYSSMU9$                      UNDOTBS1
_SYSSMU10$                     UNDOTBS1
可以发现实际上在UNDOTBS1里系统先创建了一个系统回滚段(这是SYSTEM专用的),然后又创建了其它几个公用回滚段。

日常数据库管理时,可能会出现回滚段表空间数据文件丢失或损坏的情况,这里引用一篇文章解说当数据库仍然启动时,如何修复回滚段表空间:http://www.pcvz.com/Program/Database/Oracle/Oracleyy/Program_138678.html

这种情况的两种可能的解决方法:

A) 使丢失的那个数据文件 offline, 并从备份中恢复它,这种情况适用于数据库是处于归档方式的。
B) 另一个方法是 offline 掉所有的那个文件所属表空间的回滚段, drop 那个表空间 , 然后得建它们。你可能不得不杀掉那些使用着回滚段的进程,以便使它 offline.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/108247/viewspace-462898/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-09-17

  • 博文量
    10
  • 访问量
    40423