Currentonline 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的查询结果,我们可以看出,有10undo segment来存放undo records

 

       以上我们是通过dba_segment 表查看的结果。 也可以通过v$rollstatv$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.

  • 1
  • 2
  • 3
  • 下一页

相关内容