rman 异机备份
1 环境准备
服务器A:Linux7
ip地址:192.168.236.152
oracle版本:11.2.0.4
建库:orcl
服务器B:Linux7
ip地址:192.168.236.154
oracle版本:11.2.0.4
2 rman备份
[oracle@oracle11g ~]$ rman target /
RMAN> backup database;
RMAN> list backupset;
3 传备份文件到备库
#生成pfile文件
SQL> create pfile from spfile;
[oracle@oracle11g 2023_04_11]$ ll
总用量 1169936
-rw-r-----. 1 oracle dba 9830400 4月 11 14:35 o1_mf_ncsn0_TAG20230411T143400_l39zwtyd_.bkp
-rw-r-----. 1 oracle dba 1188184064 4月 11 14:34 o1_mf_nnnd0_TAG20230411T143400_l39ztrdr_.bkp
[oracle@oracle11g 2023_04_11]$ scp * 192.168.236.154:/opt/oracle/fast_recovery_area/ORCL/backupset/2023_04_11/
[oracle@oracle11g ~]$ cd $ORACLE_HOME
[oracle@oracle11g dbhome_1]$ cd dbs/
#将pfile文件发送到服务器B
[oracle@oracle11g dbs]$ scp initorcl.ora 192.168.236.154:/opt/oracle/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora
4 创建目录
在B服务器上创建目录
[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/admin/orcl/adump
[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/oradata/orcl/
[oracle@oracle11g_02 ~]$ mkdir -p /opt/oracle/fast_recovery_area/orcl/
5 恢复
使用a服务器上拷贝过来的pfile启动数据库到nomount状态
SQL> startup nomount pfile='/opt/oracle/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora';
恢复控制文件
[oracle@oracle11g_02 dbs]$ rman target /
RMAN> restore controlfile from '/opt/oracle/fast_recovery_area/ORCL/backupset/2023_04_11/o1_mf_ncsn0_TAG20230411T143400_l39zwtyd_.bkp';
#挂载
SQL> alter database mount;
恢复数据文件
RMAN> restore database;
RMAN> recover database;
错误:
RMAN> recover database;
Starting recover at 11-APR-23
using channel ORA_DISK_1
starting media recovery
unable to find archived log
archived log thread=1 sequence=9
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/11/2023 16:33:18
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 9 and starting SCN of 1060285
在11g官方文档error messages中对错误描述如下:
RMAN-06054: media recovery requesting unknown archived log for thread string with sequence string and starting SCN of string
Cause: Media recovery is requesting a log whose existence is not recorded in the recovery catalog or target database control file.
Action: If a copy of the log is available, then add it to the recovery catalog and/or control file via a CATALOG command and then retry the RECOVER command. If not, then a point-in-time recovery up to the missing log is the only alternative and database can be opened using ALTER DATABASE OPEN RESETLOGS command.
可见,出先此错误的原因是恢复需要的日志记录在控制文件或恢复目录中找不到。原因由于备份时有一个日志还是online redo,没有copy过来。解决方法分两种情况:
1.如果相关的日志存在且可用的话,就将此日志记录添加到控制文件或恢复目录中。
2.如果相关的日志已经被删除了或不可用了,那么就按照错误的提示scn将数据库恢复到此scn,本案例是1060285。也就是说此时数据库只能进行不完全恢复了,在打开数据库时得使用resetlogs打开。
RMAN> recover database until scn 1060285;