如果自己搞不定可以找诗檀软件专业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$controlfile、v$logfile、v$datafile、v$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/dbname:asmora104
・控制文件、数据文件、online REDO 日志文件配置在disk group「ASMDG1」上
・归档日志文件的输出地址也是「ASMDG1」
・发生故障的disk group是「ASMDG1」
・制成同样名字的「ASMDG1」disk 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