当前位置:  数据库>oracle

Currentonline Redo 和 Undo 损坏的处理方法

    来源: 互联网  发布时间:2017-05-04

    本文导语: Oracle 不同故障的恢复方案 Oracle undo 表空间管理 上面的2篇文章讲到了Oracle 一些故障下的恢复方法,但是还有2点,之前没有做详述。即current online redo 损坏的情况和undo的损坏情况。 之所以把他们放一起讲,是因为他们之间有联...

Oracle 不同故障的恢复方案
Oracle undo 表空间管理

上面的2篇文章讲到了Oracle 一些故障下的恢复方法,但是还有2点,之前没有做详述。即current online redo 损坏的情况和undo的损坏情况。 之所以把他们放一起讲,是因为他们之间有联系。

在做操作之前,最好把控制文件,redo log 和数据文件做一个冷备份,以防万一.

一.  UNDO 的补充信息

所以这里补充说明一下。 在补充之前先讲一下undo segment的概念。

 

在 Oracle undo 管理

 

中提到了Oracle 的undo 有两种管理方式,通过参数undo_management来设置auto 和 manual。

 

1.1 当undo_management被设置成MENUAL时使用系统回滚段, 即将undo records 记录到SYSTEM 表空间下的SYSTEM段。

 

SQL> col segment_name format a10

SQL> select segment_name,tablespace_name,bytes,next_extent  from dba_segments where segment_type='ROLLBACK';

 

SEGMENT_NA TABLESPACE_NAME       BYTES NEXT_EXTENT

---------- ------------------------------ ---------- -----------

SYSTEM     SYSTEM                 393216     1048576

 

       通过上面的这条语句,我们查到了这个用于rollback 的system segment 存在与system 表空间。 默认情况下,只有一个segment,并且它还比较小,所以,如果使用system 段来存储undo records。肯定会影响数据库的性能。 所以Oracle 是建议使用Undo tablespace 来管理undo records。

 

1.2  当undo_management设置成AUTO时使用UNDO tablespace来管理回滚段。 这个时候,我们将有多个undo segment,并且这些segment 是存放在UNDO 表空间里的。 这样对DB的性能就会提高。

 

SQL> select segment_name,tablespace_name,bytes,next_extent  from dba_segments where segment_type='TYPE2 UNDO';

 

SEGMENT_NAME    TABLESPACE_NAME    BYTES NEXT_EXTENT

-------------------- -------------------- ---------- -----------

_SYSSMU1$            UNDOTBS1                1179648       65536

_SYSSMU2$            UNDOTBS1                1179648       65536

_SYSSMU3$            UNDOTBS1                2228224       65536

_SYSSMU4$            UNDOTBS1                1179648       65536

_SYSSMU5$            UNDOTBS1                 262144       65536

_SYSSMU6$            UNDOTBS1                1179648       65536

_SYSSMU7$            UNDOTBS1                1179648       65536

_SYSSMU8$            UNDOTBS1                1179648       65536

_SYSSMU9$            UNDOTBS1                1179648       65536

_SYSSMU10$           UNDOTBS1                1179648       65536

 

通过以上SQL的查询结果,我们可以看出,有10个undo segment来存放undo records。

 

       以上我们是通过dba_segment 表查看的结果。 也可以通过v$rollstat和v$rollname 两个视图来查看信息。 这2个视图会显示所有rollback 段的信息。 包括system段和undo段。

 

SQL> col name format a15

SQL> select s.usn,n.name,s.extents,s.hwmsize,s.status from v$rollstat s, v$rollname n where s.usn=n.usn;

 

       USN NAME               EXTENTS    HWMSIZE STATUS

---------- --------------- ---------- ---------- ---------------

         0 SYSTEM                   6     385024 ONLINE

         1 _SYSSMU1$                3    7659520 ONLINE

         2 _SYSSMU2$                3    9691136 ONLINE

         3 _SYSSMU3$                4    7462912 ONLINE

         4 _SYSSMU4$                3   76668928 ONLINE

         5 _SYSSMU5$                4    8511488 ONLINE

         6 _SYSSMU6$                3    7462912 ONLINE

         7 _SYSSMU7$                3   33480704 ONLINE

         8 _SYSSMU8$                3    8577024 ONLINE

         9 _SYSSMU9$                3    7462912 ONLINE

        10 _SYSSMU10$               3   13754368 ONLINE

 

11 rows selected.


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,