从Oracle 10g开始,Oracle引入了ASM自动存储管理技术,使用了ASM技术之后,数据文件存储在ASM磁盘组上,就不能够再通过传统的方式访问ASM磁盘组上的数据文件。此时RMAN的作用就充分地发挥了出来。备份ASM数据文件和常规文件备份没有不同。
下面通过一个试验来模拟一下ASM的故障及文件恢复过程。测试表空间名称为eygle,表空间仅包含一个数据文件(数据文件号位41):
+DATADG/mmsdb/datafile/eygle.313.1
通过RMAN对这个文件进行COPY备份:
RMAN> copy datafile 41 to '/mmsback/oracle/rmanback/eygle.313.1';
Starting backup at 16-MAY-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=500 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00041 name=+DATADG/mmsdb/datafile/eygle.313.1
output filename=/mmsback/oracle/rmanback/eygle.313.1 tag=TAG20070516T091843 recid=6 stamp=622718324
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 16-MAY-07
为了模拟一次数据文件损失,可以尝试删除这个文件,但是由于操作系统的工具不能访问ASM磁盘组,所以需要通过ASM实例来执行操作。
首先连接到ASM实例:
$ export ORACLE_SID=+ASM
$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.1.0.3.0 - Production on Wed May 16 09:19:39 2007
Copyright (c) 1982, 2004, Oracle. All rights reserved.
………
然后尝试删除ASM文件,但是需要注意的是,数据文件在读写状态ASM是不能够删除的,此时报出ORA-15028错误:
SQL> alter diskgroup DATADG drop file
2 '+DATADG/mmsdb/datafile/eygle.313.1';
alter diskgroup DATADG drop file
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15028: ASM file '+DATADG/mmsdb/datafile/eygle.313.1' not dropped; currently
being accessed
在另外一个session,登录到数据库内部,先将表空间EYGLE进行offline处理:
SQL> alter tablespace eygle offline;
Tablespace altered.
此时在ASM实例中,Oracle将允许删除这个数据文件:
SQL> alter diskgroup DATADG drop file
2 '+DATADG/mmsdb/datafile/eygle.313.1';
Diskgroup altered.
由于操作是针对磁盘组进行,并非Oracle数据库行为,所以在警告日志文件中,会马上记录一条错误信息:
Wed May 16 09:29:22 2007
Errors in file /opt/oracle/admin/mmsdb/bdump/mmsdb_dbw0_8013.trc:
ORA-01157: cannot identify/lock data file 41 - see DBWR trace file
ORA-01110: data file 41: '+DATADG/mmsdb/datafile/eygle.313.1'
ORA-17503: ksfdopn:2 Failed to open file +DATADG/mmsdb/datafile/eygle.313.1
ORA-15012: ASM file '+datadg.313.1' does not exist
接下来可以通过RMAN进行恢复尝试了:
RMAN> list copy of datafile 41;
using target database controlfile instead of recovery catalog
List of Datafile Copies
Key File S Completion Time Ckp SCN Ckp Time Name
------- ---- - --------------- ---------- --------------- ----
6 41 A 16-MAY-07 8910414694871 16-MAY-07 /mmsback/oracle/rmanback/eygle.313.1
RMAN> restore datafile '+DATADG/mmsdb/datafile/eygle.313.1';
Starting restore at 16-MAY-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=505 devtype=DISK
channel ORA_DISK_1: restoring datafile 00041
input datafilecopy recid=6 stamp=622718324 filename=/mmsback/oracle/rmanback/eygle.313.1
destination for restore of datafile 00041: +DATADG/mmsdb/datafile/eygle.313.1
channel ORA_DISK_1: copied datafilecopy of datafile 00041
output filename=+DATADG/mmsdb/datafile/eygle.313.3 recid=7 stamp=622718963
Finished restore at 16-MAY-07
RMAN> recover tablespace eygle;
Starting recover at 16-MAY-07
using channel ORA_DISK_1
starting media recovery
media recovery complete
Finished recover at 16-MAY-07
最后将表空间Online,即完成恢复:
RMAN> sql 'alter tablespace eygle online';
sql statement: alter tablespace eygle online
在警告日志中,此时记录了如下信息:
Wed May 16 09:29:23 2007
Restore of datafile copy /mmsback/oracle/rmanback/eygle.313.1 complete to
datafile 41 +DATADG/mmsdb/datafile/eygle.313.3
checkpoint is 8910414694871
注意RMAN的恢复输出及日志信息,Oracle恢复出来的文件名称和原来的文件名称并不一致,这是由于ASM文件名需要按照规则分配,不能重复。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




