备份与恢复之三:使用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';
浙公网安备 33010602011771号