使用[ASM] RMAN修复(restore/recovery)的方法(10.1.0.4以后/OMF)

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

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

服务热线 : 13764045638   QQ号:47079569 邮箱:[email protected]

 

本文章主要说明  Document 1732736.1(KROWN:105100) [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.4 以上)

Oracle 10g Database Release 2 (10.2.0)

# 本文的对象的数据库的详细内容请查看[前提条件]

[适用平台]

所有平台

[前提条件]

我们之后将谈到的操作方法都必须满足以下前提条件。

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

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

・如果通RMAN获得的备份如果是online备份时,就已经收集完成了归档日志文件的备份

・控制文件、数据文件、online REDO日志文件为OMF形式 (*1)

・控制文件、数据文件、online REDO日志文件、归档日志文件所包含的所有disk group出现了故障

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

(*1)

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

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

OMF的形式与路径如下所示

>

制御文件         : +DG1/asmdb104/controlfile/current.267.565224183

数据文件        : +DG1/asmdb104/datafile/system.260.565218957

Online REDO日志文件: +DG1/asmdb104/onlinelog/group_1.257.565218957

[顺序概要]

使用版本为 Oracle 10.1.0.4 以上时,Document 1730749.1(KROWN:98490)中的对策无法解决,请restore相同名字的disk group

01. DB实例:shutdown

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

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

04. DB实例:准备 init参数

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

06. DB实例:startup nomount

07. DB实例:restore控制文件

08. DB实例:执行alter database mount実行

09. 查看可以恢复的point

10. DB实例:restore数据文件

11. DB实例:执行RECOVER命令

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

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

14. DB实例:重新编辑init参数

15. DB实例:执行备份

[详细顺序]

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

ORACLE_SID/dbnameasmdb104

・在DG1 disk group上配置了控制文件、数据文件、online REDO 日志文件 

归档日志文件的输出地址为DG1

发生故障的disk groupDG1

・制成相同名字的DG1disk group

RMAN的备份会获得控制文件、数据文件、归档日志文件。为了在不是DG1的文件系统上也可以使用,需要设定以下参数

  control_files       = ‘+DG1/asmdb104/controlfile/current.267.565224183’

  db_create_file_dest = ‘+DG1’

  log_archive_dest_1  = ‘location=+DG1’

01. DB实例:shutdown

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

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

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

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

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

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

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

连接ASM实例,制成disk group

通过CREATE DISKGROUP命令制成disk group

使用的版本为 Oracle 10.1.0.4 以上时,因为无法对应Document 1730749.1(KROWN:98490)的问题,制成相同名字的disk group

  >

   % setenv ORACLE_SID +ASM

   % sqlplus “/ as sysdba”

   SQL> create diskgroup DG1 disk

          ‘/dev/vgs11/rasmdisk_FA01’ name ASM1_DISK_A1,

          ‘/dev/vgs11/rasmdisk_FA02’ name ASM1_DISK_A2,

          ‘/dev/vgs11/rasmdisk_FB01’ name ASM1_DISK_B1,

          ‘/dev/vgs11/rasmdisk_FB02’ name ASM1_DISK_B2;

参考Document 1732736.1(KROWN:105100)

04. DB实例:准备init参数

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

为了restore控制文件,control_files参数仅仅指定disk group名。

  >

   control_files = ‘+DG1’

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

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

启动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控制文件

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

restore控制文件。

  >

   RMAN> restore controlfile;

没有使用恢复目录时请添加from autobackuup 语句。上述内容是使用了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

  

等输出的话,就会变成线程编号1、日志顺序编号9、。

10. DB实例:restore数据文件

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

restore数据文件。

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

  >

   通过顺序 09,这次的案例中直到应用顺序编号09为止,请执行以下命令。

    RMAN> restore database until sequence 10 thread 1;

11. DB实例:执行RECOVER命令

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

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

  >

  通过顺序 09,这次的案例中直到应用顺序编号09为止,请执行以下命令。

    RMAN> recover database until sequence 10 thread 1;

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

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

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

  >

   RMAN> alter database open resetlogs;

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

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

使用本地管理临时表区域时,需要追加一些临时文件。追加时的group disk也是新的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 ‘+DG1’ size XXm;

并且,使用Oracle10.2 时,因为会自动追加临时表区域,所以不需要执行以上操作。

14. DB实例:重新编辑init参数

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

需要重新编辑control_files参数。

  * 查看现行控制文件的路径

  SQL> select name from v$controlfile;

  

  NAME

  ——————————————————————————–

  +DG1/asmdb104/controlfile/current.256.565280849

  

  * control_file 参数中,用全路径指定使用 v$controlfile查看到的路径,重启。

   >

    control_files = ‘+DG1/asmdb104/controlfile/current.256.565280849’

15. DB实例:执行备份

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

如果完成所有恢复处理的话,就请立即进行备份。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *