1、记录一下源数据库的DBID
SQL> select DBID from v$database; DBID ---------- 1292118315
[oracle@linux flash_recovery_area]$ rman target / 恢复管理器: Release 10.2.0.4.0 - Production on 星期三 10月 12 14:28:10 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. 连接到目标数据库: ORCL (DBID=1292118315)
2、在源数据库端执行一次备份(包含数据文件、控制文件、归档日志文件)
RMAN> backup database include current controlfile plus archivelog; 启动 backup 于 12-10月-11 当前日志已存档 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=143 devtype=DISK 通道 ORA_DISK_1: 正在启动存档日志备份集 通道 ORA_DISK_1: 正在指定备份集中的存档日志 输入存档日志线程 =1 序列 =2 记录 ID=1 时间戳=764337959 输入存档日志线程 =1 序列 =3 记录 ID=2 时间戳=764338050 输入存档日志线程 =1 序列 =4 记录 ID=3 时间戳=764338051 输入存档日志线程 =1 序列 =5 记录 ID=4 时间戳=764338057 输入存档日志线程 =1 序列 =6 记录 ID=5 时间戳=764338066 输入存档日志线程 =1 序列 =7 记录 ID=6 时间戳=764346610 通道 ORA_DISK_1: 正在启动段 1 于 12-10月-11 通道 ORA_DISK_1: 已完成段 1 于 12-10月-11 段句柄=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T143011_79bdzo31_.bkp 标记=TAG20111012T143011 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03 完成 backup 于 12-10月-11 启动 backup 于 12-10月-11 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件 fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf 输入数据文件 fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf 输入数据文件 fno=00002 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf 输入数据文件 fno=00005 name=/u01/app/oracle/oradata/orcl/tb1.dbf 输入数据文件 fno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf 通道 ORA_DISK_1: 正在启动段 1 于 12-10月-11 通道 ORA_DISK_1: 已完成段 1 于 12-10月-11 段句柄=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T143014_79bdzph0_.bkp 标记=TAG20111012T143014 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35 通道 ORA_DISK_1: 启动全部数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 备份集中包括当前控制文件 在备份集中包含当前的 SPFILE 通道 ORA_DISK_1: 正在启动段 1 于 12-10月-11 通道 ORA_DISK_1: 已完成段 1 于 12-10月-11 段句柄=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_ncsnf_TAG20111012T143014_79bf0v75_.bkp 标记=TAG20111012T143014 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03 完成 backup 于 12-10月-11 启动 backup 于 12-10月-11 当前日志已存档 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在启动存档日志备份集 通道 ORA_DISK_1: 正在指定备份集中的存档日志 输入存档日志线程 =1 序列 =8 记录 ID=7 时间戳=764346652 通道 ORA_DISK_1: 正在启动段 1 于 12-10月-11 通道 ORA_DISK_1: 已完成段 1 于 12-10月-11 段句柄=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T143052_79bf0xqr_.bkp 标记=TAG20111012T143052 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02 完成 backup 于 12-10月-11
这里由于环境限制,我就在一台机器上面做实验了,在实际环境中要求源数据库和目标数据库版本一样。我这里当然满足要求了。
为后面的实验能够继续,在这里我删除了源数据库相关的所有文件,参数文件除外。在实际环境中还要copy备份集到目标数据库对应的目录下面(这里就是flash_recovery_area下面的东东)。
SQL> conn /as sysdba 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> ! rm -rf /u01/app/oracle/oradata/orcl
4、还原控制文件(这里需要创建相应的控制文件目录)
[oracle@linux oracle]$ rman target / 恢复管理器: Release 10.2.0.4.0 - Production on 星期三 10月 12 14:51:43 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. 已连接到目标数据库 (未启动) RMAN> set DBID=1292118315; 正在执行命令: SET DBID RMAN> startup nomount; Oracle 实例已启动 系统全局区域总计 167772160 字节 Fixed Size 1266392 字节 Variable Size 71306536 字节 Database Buffers 92274688 字节 Redo Buffers 2924544 字节 RMAN> restore controlfile from autobackup; 启动 restore 于 12-10月-11 使用通道 ORA_DISK_1 恢复区目标: /u01/app/oracle/flash_recovery_area 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区域中找到自动备份 通道 ORA_DISK_1: 已找到的自动备份: /u01/app/oracle/flash_recovery_area/ORCL/autobackup/2011_10_12/o1_mf_s_764347410_79bfrlqs_.bkp 通道 ORA_DISK_1: 从自动备份复原控制文件已完成 输出文件名=/u01/app/oracle/oradata/orcl/control01.ctl 输出文件名=/u01/app/oracle/oradata/orcl/control02.ctl 输出文件名=/u01/app/oracle/oradata/orcl/control03.ctl 完成 restore 于 12-10月-11
5、还原数据文件(这里需要创建相应的数据文件目录)
RMAN> alter database mount; 数据库已装载 释放的通道: ORA_DISK_1 RMAN> restore database; 启动 restore 于 12-10月-11 启动 implicit crosscheck backup 于 12-10月-11 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=156 devtype=DISK 已交叉检验的 4 对象 完成 implicit crosscheck backup 于 12-10月-11 启动 implicit crosscheck copy 于 12-10月-11 使用通道 ORA_DISK_1 完成 implicit crosscheck copy 于 12-10月-11 搜索恢复区中的所有文件 正在编制文件目录... 目录编制完毕 已列入目录的文件的列表 ======================= 文件名: /u01/app/oracle/flash_recovery_area/ORCL/autobackup/2011_10_12/o1_mf_s_764347410_79bfrlqs_.bkp 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件00001还原到/u01/app/oracle/oradata/orcl/system01.dbf 正将数据文件00002还原到/u01/app/oracle/oradata/orcl/undotbs01.dbf 正将数据文件00003还原到/u01/app/oracle/oradata/orcl/sysaux01.dbf 正将数据文件00004还原到/u01/app/oracle/oradata/orcl/users01.dbf 正将数据文件00005还原到/u01/app/oracle/oradata/orcl/tb1.dbf 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp 标记 = TAG20111012T144251 通道 ORA_DISK_1: 还原完成, 用时: 00:00:25 完成 restore 于 12-10月-11
6、不完全恢复数据库(因为online redo logfile是没有的。)
SQL> recover database using backup controlfile until cancel; ORA-00279: 更改 474700 (在 10/12/2011 14:43:28 生成) 对于线程 1 是必需的 ORA-00289: 建议: /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_11_%u_.arc ORA-00280: 更改 474700 (用于线程 1) 在序列 #11 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} cancel 介质恢复已取消。
7、打开数据库
SQL> alter database open resetlogs; 数据库已更改。 SQL> select status from v$instance; STATUS ------------ OPEN