Oracle [ASM] 使用RMAN修复(restore/recovery)的方法(非OMF)

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

   [ASM] disk group破损时,使用RMAN修复的方法(restore/ recovery)以及使用RMAN执行restore/recovery的顺序的文章。

ASM环境中,因为某些原因(H/W故障等),从包含数据库的结构文件的disk group破损的状态恢复的Document 1732736.1(KROWN:105100) 的操作顺序如下所示。

03. 制成disk group以及目录

04. 从备份中restore

05. 执行恢复

[适用版本]

Oracle 10g Database Release 1 (10.1.0)

Oracle 10g Database Release 2 (10.2.0)

[前提条件]

请满足以以下条件为前提来执行。

・数据库的版本在 PSR 10.1.0 以上。

・通RMAN获得的备份不仅是发生故障的disk group,在正常的disk group或者文件系统上也配置,并且可以使用。

・通RMAN获得备份如果是online备份的话,还应该准备归档日志文件的备份

・控制文件、数据文件、online REDO文件,并没有变成OMF的形式(*1)

・包含控制文件、数据文件、online REDO文件、归档日志文件的所有disk group会发生故障。

・以通RMAN获得的备份为基础,尽可能以最新状态来恢复。

(*1)

OMF的形式是指,制成ASM文件时,用户不指定其他名字来制作时,就会指定自动添加名字。

OMF 的形式可以通过参考 v$controlfilev$logfilev$datafilev$tempfile 来查看。

没有变成OMF的形式时,路径如下所示

>

  控制文件         : +ASMDG1/control01.ctl

  数据文件       : +ASMDG1/system01.dbf

  Online REDO日志文件: +ASMDG1/redo01.log

[顺序概要]

ASM文件的名字如果不是OMF的形式时,因为无法处理Document 1730749.1(KROWN:98490)的问题,可以存储相同名字的disk group

01. DB实例:shutdown

02. ASM实例:删除破损的disk group

03. ASM实例:重新制成disk group

04. ASM实例:重新制成目录

05. 启动rman,连接目标数据库以及Recovery catalog(如果使用的话)

06. DB实例:startup nomount

07. DB实例:控制文件的restore

08. DB实例:执行alter database mount

09. 查看可以恢复的要点

10. ASM实例:重新制成目录

11. DB实例:restore日志文件

12. DB实例:执行RECOVER命令

13. DB实例:执行alter database open resetlogs

14. DB实例:恢复本地管理临时表区域

15. DB实例:执行备份

[顺序详细内容]

以下的例子中,设定如下所示。

ORACLE_SID/dbnameasmora104

・控制文件、数据文件、online REDO 日志文件配置在disk groupASMDG1」上

归档日志文件的输出地址也是「ASMDG1

发生故障的disk group是「ASMDG1

・制成同样名字的「ASMDG1disk group,执行恢复

RMAN 的备份是从控制文件、数据文件、归档文件中获得的。因为不是在ASMDG1上配置的,所以可以使用

设定以下参数

  control_files     = ‘+ASMDG1/control01.ctl’

  log_archive_dest  = ‘+ASMDG1/arcora104’

  log_archive_format= ‘archive_%t_%S_%r.arch’

01. DB实例:shutdown

=============================

详细内容请参考 Document 1732736.1(KROWN:105100)

02. ASM实例:删除破损disk group

====================================================

详细内容请参考 Document 1732736.1(KROWN:105100)

03. ASM实例:重新制成disk group

==============================================

连接ASM实例,制成disk group

制成disk group通过CREATE DISKGROUP 命令来执行。

ASM文件的名字如果不是 OMF形式的话因为Document 1730749.1(KROWN:98490)的问题与这无关,所以制成相同名字的disk group

  >

   % setenv ORACLE_SID +ASM

   % sqlplus “/ as sysdba”

   SQL> create diskgroup asmdg1 disk

          ‘/dev/vgs16/rasm1024_01’ name asmdg1dsk01,

          ‘/dev/vgs16/rasm1024_02’ name asmdg1dsk02,

          ‘/dev/vgs16/rasm1024_03’ name asmdg1dsk03;

同时请参考 Document 1732736.1(KROWN:105100)

04. ASM实例:重新制成目录

==========================================

由此,存储的ASM文件如果是在用户制成的目录下制成的话,就需要重新制成目录。首先,在此只能制成实现就已经知道的东西(作为init参数来指定,控制文件以及归档日志文件的地址)

比如,这次的案例中,因为会输出归档日志文件变成了‘+ASMDG1/arcora104’,制成这个目录。

  >

   SQL> alter diskgroup asmdg1 add directory ‘+ASMDG1/arcora104’;

05. 启动rman,连接目录数据库以及恢复日志

===============================================================

没有使用恢复目录时,就仅仅只连接目标数据库。

  > 使用了恢复目录

   % setenv ORACLE_SID asmdb104

   % rman target / catalog rman1/rman1@catalogdb

  > 没有使用恢复目录

   % setenv ORACLE_SID asmdb104

   % rman target / nocatalog

06. DB实例:startup nomount

====================================

DB实例 startup nomount

RMAN product sqlplus product都可以。

  >

   RMAN> startup nomount

07. DB实例:restore控制文件

============================================

  >

   RMAN> restore controlfile;

如果没有使用恢复目录时,请添加from autobackuup 语句。上述是使用了disk 的默认通道的例子。请添加一下语句,上述是对disk使用了默认的通道的例子。对tape进行备份时,需要一边分割合适的通道一遍进行restore

08. DB实例:执行alter database mount

=============================================

假设是mount 实例的状态。

  >

   RMAN> alter database mount;

09. 查看可以恢复的point

=================================

本文章的案例中,因为归档日志文件的输出地址是损坏的disk group,归档日志文件仅限有备份的状况。

可以恢复的point是获得了备份的归档日志文件之中应用的最新版本的项目。

执行 list命令仅限备份,归档日志文件之中,查看最新的Next SCN的线程编号以及日志顺序编号

  >

   RMAN> list backup of archivelog all;

  

    备份set 40的归档日志列表

    Thrd Seq     Low SCN    Low時刻  Next SCN   Next Time

    —- ——- ———- ——– ———- ———

    1    8       159548     05-08-02 161218     05-08-02

    1    9       161218     05-08-02 161229     05-08-02

这时,最新的线程编号、日志顺序编号为9

10. ASM实例:重新制成目录

==========================================

如果现在想存储的数据文件是用户制成的目录下所制成的项目的话,需要重新制成目录。在此,需要以list命令的结果为基础来制作查看、制作。

  >

   RMAN> list backup of database;

   

   备份set列表

   ===================

   

   BS Key  Type LV Size       Device Type Elapsed Time 終了時刻

   ——- —- — ———- ———– ———— ——–

   6       Full    224M       DISK        00:00:15     05-09-22

           BP key: 6   状态: AVAILABLE  压缩: NO  标签: TAG20050922T134408

           ピース名: /mnt8/ora10104/work/nmatsumo/06gv9cl8_1_1

     备份set6的数据文件列表

     File LV Type Ckp SCN    Ckp时刻  Name

     —- — —- ———- ——– —-

     1       Full 112882     05-09-22 +ASMDG1/system01.dbf

     2       Full 112882     05-09-22 +ASMDG1/undo01.dbf

     3       Full 112882     05-09-22 +ASMDG1/sysaux01.dbf

     4       Full 112882     05-09-22 +ASMDG1/users01.dbf

     5       Full 112882     05-09-22 +ASMDG1/testdata/testdata01.dbf  <—

这个例子的情况,ASM实例中,需要制成+ASMDG1/testdata

   SQL> alter diskgroup asmdg1 add directory ‘+ASMDG1/testdata’;

11. DB实例:数据文件的restore

=============================================

Restore数据文件。

备份tape时,一边分割合适的通道一遍进行restore

  >

   根据顺序 09,这次的案例中,直到应用日志顺序编号9 为止,请执行以下命令。

   RMAN> restore database until sequence 10 thread 1;

12. DB实例:执行RECOVER命令

========================================

执行RECOVER命令,增加备份(如果获得了的话)以及应用REDO。同时需要增量备份以及归档日志文件的文件就会自动restore。对tape执行备份时,请一边分割合适的通道一边恢复

  >

   根据顺序 09,这次的案例中,直到应用日志顺序编号9 为止,命令会变成这样:

    RMAN> recover database until sequence 10 thread 1;

13. DB实例:执行alter database open resetlogs

======================================================

RECOVER命令完成的话,通过RESETLOGS选项启动数据库。自动在新的disk group中生成online REDO文件。

  >

   RMAN> alter database open resetlogs;

14. DB实例:本地管理临时表区域的恢复

======================================================

使用本地管理临时表区域时,需要追加临时文件。追加的disk group也是新的disk group

  * 查看临时表区域

  SQL> select property_value from database_properties

       where property_name like ‘%TEMP%’;

  SQL> select * from dba_tablespaces where contents=’TEMPORARY’;

  

  *追加临时文件

  SQL> alter tablespace <临时表区域名> add tempfile ‘+ASMDG1/temp01.dbf’ size XXm;

并且,使用Oracle10.2 时,就会自动追加临时表区域。所以不需要根据上述顺序来执行。

15. DB实例:执行备份

=======================================

完成所有的修复处理的话,这时,请事先获得备份。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号