1、将数据文件还原到新位置。
首先删除数据文件,模拟磁盘故障,丢失数据文件。
SQL> conn /as sysdba 已连接。 SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb1.dbf SQL> conn u1/u1 已连接。 SQL> select * from t; select * from t * 第 1 行出现错误: ORA-01116: 打开数据库文件 5 时出错 ORA-01110: 数据文件 5: '/u01/app/oracle/oradata/orcl/tb1.dbf' ORA-27041: 无法打开文件 Linux Error: 2: No such file or directory Additional information: 3
然后恢复
RMAN> run { 2> sql "alter database datafile 5 offline"; 3> set newname for datafile 5 to '/u01/app/oracle/datafile/tb1.dbf'; 4> restore datafile 5; 5> switch datafile 5; 6> recover datafile 5; 7> sql "alter database datafile 5 online"; } sql 语句: alter database datafile 5 offline 正在执行命令: SET NEWNAME 启动 restore 于 12-10月-11 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=142 devtype=DISK 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件00005还原到/u01/app/oracle/datafile/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:01 完成 restore 于 12-10月-11 数据文件 5 已转换成数据文件副本 输入数据文件副本 recid=7 stamp=764352437 文件名=/u01/app/oracle/datafile/tb1.dbf 启动 recover 于 12-10月-11 使用通道 ORA_DISK_1 正在开始介质的恢复 通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复 通道 ORA_DISK_1: 正在恢复存档日志 存档日志线程 =1 序列=10 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 标记 = TAG20111012T144328 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bloq8c_.arc 线程 =1 序列 =10 通道 default: 正在删除存档日志 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bloq8c_.arc 记录 ID=11 时间戳 =764352439 介质恢复完成, 用时: 00:00:01 完成 recover 于 12-10月-11 sql 语句: alter database datafile 5 online
检查恢复结果
SQL> conn u1/u1 已连接。 SQL> select * from t; ID VALUE ---------- ------------------------------ 1 a SQL> conn /as sysdba 已连接。 SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------- /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/oradata/orcl/sysaux01.dbf /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/datafile/tb1.dbf
2、将表空间还原到新位置。
首先删除数据文件,模拟磁盘故障,丢失数据文件。(这次我打算将数据文件恢复到原地方。)
SQL> ! rm -rf /u01/app/oracle/datafile/tb1.dbf SQL> conn u1/u1 已连接。 SQL> insert into t values(2,'b'); insert into t values(2,'b') * 第 1 行出现错误: ORA-01116: 打开数据库文件 5 时出错 ORA-01110: 数据文件 5: '/u01/app/oracle/datafile/tb1.dbf' ORA-27041: 无法打开文件 Linux Error: 2: No such file or directory Additional information: 3
恢复
RMAN> run { 2> sql "alter tablespace tb1 offline immediate"; 3> set newname for datafile '/u01/app/oracle/datafile/tb1.dbf' to '/u01/app/oracle/oradata/orcl/tb1.dbf'; 4> restore tablespace tb1; 5> switch datafile all; 6> recover tablespace tb1; 7> sql "alter tablespace tb1 online"; } sql 语句: alter tablespace tb1 offline immediate 正在执行命令: SET NEWNAME 启动 restore 于 12-10月-11 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始恢复数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 正将数据文件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:01 完成 restore 于 12-10月-11 数据文件 5 已转换成数据文件副本 输入数据文件副本 recid=9 stamp=764352980 文件名=/u01/app/oracle/oradata/orcl/tb1.dbf 启动 recover 于 12-10月-11 使用通道 ORA_DISK_1 正在开始介质的恢复 通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复 通道 ORA_DISK_1: 正在恢复存档日志 存档日志线程 =1 序列=10 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 通道 ORA_DISK_1: 已还原备份片段 1 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 标记 = TAG20111012T144328 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bm6o60_.arc 线程 =1 序列 =10 通道 default: 正在删除存档日志 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bm6o60_.arc 记录 ID=12 时间戳 =764352981 介质恢复完成, 用时: 00:00:03 完成 recover 于 12-10月-11 sql 语句: alter tablespace tb1 online
验证恢复结果
SQL> conn u1/u1 已连接。 SQL> insert into t values(2,'b'); 已创建 1 行。 SQL> commit; 提交完成。 SQL> select * from t; ID VALUE ---------- ------------------------------ 1 a 2 b