备份与恢复之三:使用RMAN异地恢复数据库 -- 简易版

环境:A机A库,B机B库

操作系统:Redhat

Oracle: 11.2.0.4

内容:在A机上做备份,到B机上做恢复

 

1,A机使用RMAN做全库备份

Command:  backup as compressed backupset database include current controlfile plus archivelog;

Output:

这里稍微做一下解释:

Starting backup at 2019-06-30 23:21:47
current log archived  --当前日志归档
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set --做的是归档日志的备份
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=96 RECID=85 STAMP=1012342987  --
input archived log thread=1 sequence=97 RECID=86 STAMP=1012343146  --
input archived log thread=1 sequence=98 RECID=87 STAMP=1012346482  --
input archived log thread=1 sequence=99 RECID=88 STAMP=1012346507  --包含了85,86,87,88四个归档日志
channel ORA_DISK_1: starting piece 1 at 2019-06-30 23:21:47
channel ORA_DISK_1: finished piece 1 at 2019-06-30 23:21:50
piece handle=/u01/app/oracle/fast_recovery_area/RYAN1/backupset/2019_06_30/o1_mf_annnn_TAG20190630T232147_gkknwcjy_.bkp tag=TAG20190630T232147 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 2019-06-30 23:21:50

Starting backup at 2019-06-30 23:21:50
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set --接着做数据文件全备
channel ORA_DISK_1: specifying datafile(s) in backup set --备份集里包含以下数据文件
input datafile file number=00007 name=/oradata/datafile/ryan1/cbo01.dbf
input datafile file number=00001 name=/oradata/datafile/ryan1/system01.dbf
input datafile file number=00002 name=/oradata/datafile/ryan1/sysaux01.dbf
input datafile file number=00005 name=/oradata/datafile/ryan1/ryan01.dbf
input datafile file number=00003 name=/oradata/datafile/ryan1/undotbs01.dbf
input datafile file number=00004 name=/oradata/datafile/ryan1/users01.dbf
input datafile file number=00006 name=/oradata/datafile/ryan1/undotbs2_01.dbf
channel ORA_DISK_1: starting piece 1 at 2019-06-30 23:21:51
channel ORA_DISK_1: finished piece 1 at 2019-06-30 23:24:06
piece handle=/u01/app/oracle/fast_recovery_area/RYAN1/backupset/2019_06_30/o1_mf_nnndf_TAG20190630T232150_gkknwhd6_.bkp tag=TAG20190630T232150 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:15
channel ORA_DISK_1: starting compressed full datafile backup set --另一个数据文件备份
channel ORA_DISK_1: specifying datafile(s) in backup set --没有数据文件,只剩下控制文件和SPFILE文件
including current control file in backup set  --此备份集包含了当前控制文件
including current SPFILE in backup set  --包含了SPFILE文件
channel ORA_DISK_1: starting piece 1 at 2019-06-30 23:24:07
channel ORA_DISK_1: finished piece 1 at 2019-06-30 23:24:08
piece handle=/u01/app/oracle/fast_recovery_area/RYAN1/backupset/2019_06_30/o1_mf_ncsnf_TAG20190630T232150_gkko0qv7_.bkp tag=TAG20190630T232150 comment=NONE  --记住这个backup piece
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2019-06-30 23:24:08

Starting backup at 2019-06-30 23:24:08
current log archived --当前日志归档
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed archived log backup set --又做了一次归档日志的备份
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=100 RECID=89 STAMP=1012346648 --可以看到这是新的归档89
channel ORA_DISK_1: starting piece 1 at 2019-06-30 23:24:09
channel ORA_DISK_1: finished piece 1 at 2019-06-30 23:24:10
piece handle=/u01/app/oracle/fast_recovery_area/RYAN1/backupset/2019_06_30/o1_mf_annnn_TAG20190630T232409_gkko0s7n_.bkp tag=TAG20190630T232409 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2019-06-30 23:24:10

 

2,把备份下来的文件全部拷贝到B机

Command:
scp /u01/app/oracle/fast_recovery_area/RYAN1/backupset/2019_06_30/* oracle@B机:/oradata/fra/ryan1

这里注意的是,备份文件在B机的位置是/oradata/fra/ryan1,和A机并不一样

[oracle@ryan2:/home/oracle]$ls -lrt
total 330476
-rw-r----- 1 oracle oinstall 2616832 Jun 30 23:35         o1_mf_annnn_TAG20190630T232147_gkknwcjy_.bkp
-rw-r----- 1 oracle oinstall 14336 Jun 30 23:35          o1_mf_annnn_TAG20190630T232409_gkko0s7n_.bkp
-rw-r----- 1 oracle oinstall 1114112 Jun 30 23:35    o1_mf_ncsnf_TAG20190630T232150_gkko0qv7_.bkp
-rw-r----- 1 oracle oinstall 334659584 Jun 30 23:35    o1_mf_nnndf_TAG20190630T232150_gkknwhd6_.bkp

3, 在$ORACLE_HOME/dbs下创建一个启动文件,initryan1.ora, 里面只需要添加一个参数 DB_NAME=ryan1

4, 启动数据库到nomount状态

5, 先恢复spfile文件

Command:

rman target /

restore spfile from "/oradata/fra/ryan1/o1_mf_ncsnf_TAG20190630T232150_gkko0qv7_.bkp";

 

然后重启数据库,不需要删除initryan1.ora文件,因为默认的参数文件优先级如下:

1. spfileORACLE_SID.ora
2. spfile.ora
3. initORACLE_SID.ora

 

6,恢复控制文件,并启动数据库到mount状态

rman target /

restore controlfile from "/oradata/fra/ryan1/o1_mf_ncsnf_TAG20190630T232150_gkko0qv7_.bkp";

sql 'alter database mount';

使用新的catalog路径,即当前备份文件路径

catalog start with "/oradata/fra/ryan1";

7,恢复数据库

run{

restore database;

recover database;

}

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/01/2019 00:09:51
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 101 and starting SCN of 1958516

偶尔还是会出现这个错误,对于Oracle来说,如果当前最后一个日志没法到达完全一致的状态,就会要求继续应用日志,可以从出库拷贝过来,然后使用一下命令来应用,直到media recovery complete之类的字眼出现

recover database using backup controlfile until cancel;

8,启动数据库,因为是新库,日志文件已经没有了,所以以resetlogs模式启动

sql 'alter database open resetlogs';

posted @ 2019-07-01 00:22  Ryan_Wo  阅读(671)  评论(0)    收藏  举报