1.背景
软件环境:操作系统:Windows Server 2008 R2,数据库:Oracle 11g 11.2.0.4
服务器网络:服务器A:172.16.22.144,服务器B:172.16.22.145
应用场景:从服务器A,将RMAN备份;恢复到服务器B上。
2.RMAN备份
2.1脚本修改为符合本机实际情况
1)rman.bat
-
@echo off
-
set oracle_sid=orcl
-
set da=%date:~0,4%%date:~5,2%%date:~8,2%
-
set oraclepath=\"D:\\oracle\\product\\11.2.0\\dbhome_1\\BIN\"
-
%oraclepath%\\rman target / msglog D:\\DB_backup\\Oracle_DB\\rmanlog\\%da% cmdfile=D:\\DB_backup\\Oracle_DB\\sql.rman
(1)设置rman.bat中的oracle_sid,oraclepath,备份路径,cmdfile路径。
2)sql.man
-
RUN {
-
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
-
CONFIGURE CONTROLFILE AUTOBACKUP ON;
-
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO \'D:/DB_backup/Oracle_DB/%F\';
-
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT \'D:/DB_backup/Oracle_DB/%U\';
-
BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
-
PLUS ARCHIVELOG FILESPERSET 20
-
DELETE ALL INPUT;
-
RELEASE CHANNEL CH1;
-
}
-
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
-
CROSSCHECK BACKUPSET;
-
DELETE NOPROMPT OBSOLETE
(1)设置sql.man中的备份路径('D:/DB_backup')。
2.2切换数据库为归档模式(归档模式跳过此步)
在"mount"状态下,alter database archivlog,切换为归档模式,再将数据库改为"open"状态。更具备的代码如下:
-
SQL〉shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SQL> startup mount;
-
ORACLE instance started.
-
-
Total System Global Area 2572144640 bytes
-
Fixed Size 2283984 bytes
-
Variable Size 1056966192 bytes
-
Database Buffers 1509949440 bytes
-
Redo Buffers 2945024 bytes
-
Database mounted.
-
SQL> alter database archivelog;
-
-
Database altered.
-
-
SQL> alter database open;
-
-
Database altered.
2.3cmd环境下执行rman.bat文件,执行完毕后,备份路径中会生成相关如下图的文件:

其中“C-1399XXX”为控制文件。
3.RMAN恢复
3.1备份文件拷贝到目标机器
将备份文件从服务器A的备份目录拷贝到目标机器B中。
3.2查询服务器A中的数据库的dbid。
-
select dbid from v$database;
上述语句查出的dbid后期会用到。
3.3创建数据库实例
用DBCA(图形界面比命令创建简单,暂且介绍图形界面)创建与源服务器A中同版本、同SID、主目录相同的Oracle实例。实例创建完毕后,停止实例名服务,删除Oracle主目录下\oradata\实例名\下的所有文件[此步还需要再验证]。
3.4恢复控制文件
(1)启动实例为nomount状态
-
sqplus \"/as sysdba\"
-
shutdown immediate;--已经打开先关闭
-
startup nomout;
(2)进入RAMN环境,恢复控制文件
-
RMAN target /
-
restore controlfile from\'目标机器存放备份路径\\XXX\';
恢复成功会提示如下:
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04
输出文件名=D:\ORADATA\OCP\CONTROL01.CTL
完成 restore 于 17-3月 -12
(3)设置目标数据源的DBID
-
set dbid=\"3.2查询出的dbid的值\"
(4)启动数据库到mount状态
(5)Catalog Start with 命令,向‘‘控制文件’’中加载备份集,通过此命令,Oracle可搜索指定目录中的备份文件,并将这些文件加载到控制文件中,使这些文件有恢复的可能。
RMAN> catalog start with '目标机器存放备份路径’;
注意:控制文件不要加到这个目录下。
catalog start with 过程时发现提示如下(跳过执行 restore):
点击(此处)折叠或打开
-
using target database control file instead fo recovery catalog
-
searching for all files that mathc the parttern D:\\DB_backup\\Oracle_DB\\
-
no files found to be unknown to the database;
(6)恢复数据文件
restore database;
(7)恢复数据文件
recover database;
-
Starting recover at 03-MAR-15
-
using channel ORA_DISK_1
-
-
starting media recovery
-
-
archived log for thread 1 with sequence 1 is already on disk as file D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_0
-
3_03\\O1_MF_1_1_BHBNQ7NR_.ARC
-
archived log for thread 1 with sequence 2 is already on disk as file D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_0
-
3_03\\O1_MF_1_2_BHBQWGXX_.ARC
-
channel ORA_DISK_1: starting archived log restore to default destination
-
channel ORA_DISK_1: restoring archived log
-
archived log thread=1 sequence=1047
-
channel ORA_DISK_1: reading from backup piece D:\\DB_BACKUP\\ORACLE_DB\\07Q0R4V6_1_1
-
channel ORA_DISK_1: piece handle=D:\\DB_BACKUP\\ORACLE_DB\\07Q0R4V6_1_1 tag=TAG20150302T164422
-
channel ORA_DISK_1: restored backup piece 1
-
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
-
archived log file name=D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_03_03\\O1_MF_1_1047_BHBVD63J_.ARC thread=1 seque
-
nce=1047
-
archived log file name=D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_03_03\\O1_MF_1_1_BHBNQ7NR_.ARC thread=1 sequence
-
=1
-
channel default: deleting archived log(s)
-
archived log file name=D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_03_03\\O1_MF_1_1047_BHBVD63J_.ARC RECID=6 STAMP=
-
873389702
-
archived log file name=D:\\ORACLE\\FAST_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2015_03_03\\O1_MF_1_2_BHBQWGXX_.ARC thread=1 sequence
-
=2
-
unable to find archived log
-
archived log thread=1 sequence=3
-
RMAN-00571: ===========================================================
-
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
-
RMAN-00571: ===========================================================
-
RMAN-03002: failure of recover command at 03/03/2015 16:15:04
-
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 3 and starting SCN of 1755988
RMAN-06054错误,重新来一遍recover database until scn 1755988。
(8)打开数据库
alter database open resetlogs;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8043290/viewspace-1455361/
,如需转载,请注明出处,否则将追究法律责任。