暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

RMAN的镜像COPY功能和基于镜像COPY的表空间恢复

原创 eygle 2019-11-21
1774

RMAN的镜像COPY功能

RMAN除了可以创建备份集进行数据库备份外,还可以进行数据文件的镜像拷贝。镜像拷贝是单个数据文件、归档日志或者控制文件的额外拷贝,不以RMAN的格式存储。

镜像拷贝的文件和执行操作系统级拷贝的文件一样,以数据文件的固有格式存储,RMAN进行重建或者恢复操作时,可以使用镜像拷贝,当然镜像拷贝也可以通过手工操作执行恢复。

当发出一个RESTORE命令时,缺省的RMAN恢复一个数据文件或者控制文件的镜像拷贝到原来的位置,镜像拷贝优先于备份集被采用,因为使用备份集进行恢复会有额外的开销。并且,如果需要使用镜像拷贝恢复数据文件或者控制文件,无需把文件COPY到原来位置,RMAN的SWITCH命令可以通知数据库使用当前位置的文件,这类似于ALTER DATABASE RENAME FILE命令的功能。

Oracle允许我们使用RMAN进行镜像COPY备份,例如:

$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Wed Dec 22 17:15:22 2010
Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: RAC (DBID=2310943069)

RMAN> run {
2> copy datafile 1 to '/opt/oracle/system01.dbf',
3> current controlfile to '/opt/oracle/control01.dbf';
4> }

Starting backup at 22-DEC-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=124 instance=rac1 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=+DATADG/rac/datafile/system.259.722961061
output filename=/opt/oracle/system01.dbf tag=TAG20101222T171601 recid=4 stamp=738436571
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
copying current control file
output filename=/opt/oracle/control01.dbf tag=TAG20101222T171601 recid=5 stamp=738436578
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 22-DEC-10

从Oracle 10g开始,Oracle还允许使用单条命令“backup as copy”进行全数据库镜像拷贝备份,这可以极大地简化全库镜像备份工作,如:

RMAN> run {
2> backup as copy tag "03280501_copy" database;
3> }

Starting backup at 28-MAR-05
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00009 name=/data1/oradata/systemfile/bigtbs.dbf
output filename=/data5/flash_recovery_area/EYGLE/datafile/o1_mf_bigtbs_14h9rwv9_.dbf tag=03280501_COPY recid=12 stamp=554136129
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=/opt/oracle/oradata/eygle/system01.dbf
output filename=/data5/flash_recovery_area/EYGLE/datafile/o1_mf_system_14h9tbms_.dbf tag=03280501_COPY recid=13 stamp=554136158
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile copy
………

RMAN基于镜像COPY的表空间恢复

很多时候数据库会由于存储问题或者用户的误操作损失了表空间或数据文件,此时就可以通过RMAN的镜像拷贝进行恢复。
通过list copy命令可以查看数据库的拷贝文件列表:

RMAN> list copy ;    
List of Datafile Copies
Key     File S Completion Time Ckp SCN    Ckp Time        Name
------- ---- - --------------- ---------- --------------- ----
13      1    A 28-MAR-05       10557893   28-MAR-05       /data5/flash_recovery_area/EYGLE/datafile/o1_mf_system_14h9tbms_.dbf
………

如果是由于硬件故障导致的数据文件损坏,对于需要恢复的文件,就可以通过SETNEWNAME指定恢复文件到不同的位置,SETNEWNAME需要用在RUN命令块中执行:

RMAN> run {
2> SET NEWNAME FOR DATAFILE 8 TO '/opt/oracle/oradata/eygle/trans01.dbf';
3> RESTORE DATAFILE 8;
4> SWITCH DATAFILE ALL;
5> RECOVER DATAFILE 8;
6> }

executing command: SET NEWNAME
using target database controlfile instead of recovery catalog

Starting restore at 28-MAR-05
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=160 devtype=DISK

channel ORA_DISK_1: restoring datafile 00008
input datafilecopy recid=25 stamp=554139614 
   filename=/data5/flash_recovery_area/EYGLE/datafile/o1_mf_trans_14h9ymw3_.dbf
destination for restore of datafile 00008: /opt/oracle/oradata/eygle/trans01.dbf
channel ORA_DISK_1: copied datafilecopy of datafile 00008
output filename=/opt/oracle/oradata/eygle/trans01.dbf recid=26 stamp=554142136
Finished restore at 28-MAR-05

datafile 8 switched to datafile copy
input datafilecopy recid=27 stamp=554142139 
   filename=/opt/oracle/oradata/eygle/trans01.dbf

Starting recover at 28-MAR-05
using channel ORA_DISK_1

starting media recovery
media recovery complete

Finished recover at 28-MAR-05

RMAN> alter database open;
database opened

这样就完成了这个表空间的恢复,对于整个恢复过程,alert文件中记录了详细的信息:

Mon Mar 28 16:21:09 2005
Database mounted in Exclusive Mode.
Completed: alter database mount
Mon Mar 28 16:22:16 2005
Copy of datafile copy 
 /data5/flash_recovery_area/EYGLE/datafile/o1_mf_trans_14h9ymw3_.dbf complete 
to datafile copy /opt/oracle/oradata/eygle/test01.dbf  checkpoint is 4544220
Mon Mar 28 16:22:20 2005
Switch of datafile 8 complete to datafile copy checkpoint is 4544220
Mon Mar 28 16:22:22 2005
alter database recover datafile list clear
Completed: alter database recover datafile list clear
Mon Mar 28 16:22:22 2005
alter database recover if needed datafile 8
Media Recovery Datafile: 8
Media Recovery Start
ORA-264 signalled during: alter database recover if needed datafile 8
...
Mon Mar 28 16:22:35 2005
alter database open

以上的恢复过程,仅供参考。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论