rman异地不同路径下恢复简单手记

目标:使用rman将数据库A备份,并恢复到到数据库B,目录由 d:\oracle 变更为 d:\oracle_rman

步骤:

一、对数据库A进行rman全量备份:

C:\Documents and Settings\xGss2000> rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 8月 15 21:51:08 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1286878859)
RMAN> backup database plus archivelog;

启动 backup 于 15-8月 -11
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =1 记录 ID=13 时间戳=759275353
输入存档日志线程 =1 序列 =2 记录 ID=14 时间戳=759275439
输入存档日志线程 =1 序列 =3 记录 ID=15 时间戳=759277330
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_ANNNN_TAG20110815T222210_74LBWN0Z_.BKP 标记=TAG20110815T222210 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:09
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =1 记录 ID=6 时间戳=759272681
输入存档日志线程 =1 序列 =4 记录 ID=10 时间戳=759272898
输入存档日志线程 =1 序列 =5 记录 ID=11 时间戳=759272899
输入存档日志线程 =1 序列 =6 记录 ID=12 时间戳=759272899
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_ANNNN_TAG20110815T222210_74LBWW8S_.BKP 标记=TAG20110815T222210 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04
完成 backup 于 15-8月 -11
启动 backup 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_NNNDF_TAG20110815T222223_74LBX0VC_.BKP 标记=TAG20110815T222223 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_NCSNF_TAG20110815T222223_74LBZQ3X_.BKP 标记=TAG20110815T222223 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 15-8月 -11
启动 backup 于 15-8月 -11
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =4 记录 ID=16 时间戳=759277432
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_ANNNN_TAG20110815T222352_74LBZT0H_.BKP 标记=TAG20110815T222352 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 15-8月 -11

二、将备份文件复制到要恢复的机器上

三、以下操作均在新系统操作

使用dbca创建数据库,shutdown,删除orcl目录下所有文件,然后启动到nomount状态,注意sid要相同。

SQL> shutdown immediate;
ORACLE 例程已经关闭。

此时,删除orcl目录下所有文件。注意:要保留orcl目录,即orcl目录状态为空。

SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 171966464 bytes
Fixed Size 1247924 bytes
Variable Size 71304524 bytes
Database Buffers 96468992 bytes
Redo Buffers 2945024 bytes
SQL>

通过rman的备份文件 恢复control文件

C:\Documents and Settings\xGss2000>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 8月 15 23:17:23 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: orcl (未装载)
RMAN> restore controlfile from 'D:\oracle_rman\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2011_08_15\O1_MF_NCSNF_TAG20110815T222223_74LBZQ3X_.BKP';
启动 restore 于 15-8月 -11
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:05
输出文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
输出文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
输出文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
完成 restore 于 15-8月 -11

将数据库mount,并且备份control文件到trace(为了重建control文件,因为目录变更,control文件内容是错误的。)

SQL> alter database mount;
数据库已更改。
SQL> alter database backup controlfile to trace as 'd:\control_new.trc';
数据库已更改。

再次登录rman,观察backup file,此时,我们已经可以看到backupset了。

RMAN> list backup;

备份集列表
BS 关键字 大小 设备类型占用时间 完成时间
17 30.81M DISK 00:00:06 15-8月 -11
BP 关键字: 17 状态: AVAILABLE 已压缩: NO 标记: TAG20110815T222210
段名:D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_ANNNN_TAG20110815T222210_74LBWN0Z_.BKP
备份集 17 中的已存档日志列表
Thrd Seq 低 SCN 短时间 下一个 SCN 下一次
1 1 646698 15-8月 -11 648491 15-8月 -11
1 2 648491 15-8月 -11 648533 15-8月 -11
1 3 648533 15-8月 -11 655356 15-8月 -11
BS 关键字 大小 设备类型占用时间 完成时间
18 3.15M DISK 00:00:02 15-8月 -11
BP 关键字: 18 状态: AVAILABLE 已压缩: NO 标记: TAG20110815T222210
段名:D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_ANNNN_TAG20110815T222210_74LBWW8S_.BKP
备份集 18 中的已存档日志列表
Thrd Seq 低 SCN 短时间 下一个 SCN 下一次
1 1 581730 14-8月 -11 602775 14-8月 -11
1 4 641802 15-8月 -11 642356 15-8月 -11
1 5 642356 15-8月 -11 642477 15-8月 -11
1 6 642477 15-8月 -11 646698 15-8月 -11
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
19 Full 609.91M DISK 00:01:19 15-8月 -11
BP 关键字: 19 状态: AVAILABLE 已压缩: NO 标记: TAG20110815T222223
段名:D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_NNNDF_TAG20110815T222223_74LBX0VC_.BKP
备份集 19 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
1 Full 655370 15-8月 -11 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
2 Full 655370 15-8月 -11 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
3 Full 655370 15-8月 -11 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
4 Full 655370 15-8月 -11 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
5 Full 655370 15-8月 -11 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

我们发现,backup中datafile路径是错误的,需要修正。

RMAN> run {
2> set newname for datafile 1 to 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF';
3> set newname for datafile 2 to 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF';
4> set newname for datafile 3 to 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF';
5> set newname for datafile 4 to 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF';
6> set newname for datafile 5 to 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF';
7> restore database;
8> switch datafile all;
9> }
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正将数据文件00005恢复到D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE_RMAN\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_NNNDF_TAG20110815T222223_74LBX0VC_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE_RMAN\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2011_08_15\O1_MF_NNNDF_TAG20110815T222223_74LBX0VC_.BKP 标记 = TAG20110815T222223
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:35
完成 restore 于 15-8月 -11
数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=16 stamp=759282825 文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=17 stamp=759282825 文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=18 stamp=759282825 文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=19 stamp=759282825 文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=20 stamp=759282825 文件名=D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

通过刚才的trc文件重建control 文件,注意需要修改相关路径。

重建control需要nomount状态

SQL> shutdown immediate;
ORA-01109: ??????
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。
Total System Global Area 171966464 bytes
Fixed Size 1247924 bytes
Variable Size 71304524 bytes
Database Buffers 96468992 bytes
Redo Buffers 2945024 bytes

重建control文件脚本(从backup to trace 的文件得来)

CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
'D:\ORACLE_RMAN\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF'
CHARACTER SET ZHS16GBK
;

recover and open

RMAN> recover database;
启动 recover 于 15-8月 -11
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
正在开始介质的恢复
无法找到存档日志
存档日志线程 =1 序列=4
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 08/15/2011 23:59:52 上) 失败
RMAN-06054: 介质恢复正请求未知的日志: 线程 1 seq 4 lowscn 655370
RMAN> alter database open resetlogs;
数据库已打开

你可能感兴趣的:(rman异地不同路径下恢复简单手记)