RMAN备份与恢复—将数据文件或表空间还原到新位置

1、将数据文件还原到新位置。当磁盘发生故障时,才会把数据未见恢复到其他位置。
首先删除数据文件,模拟磁盘故障,丢失数据文件。

[sql] view plaincopyprint?

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb1.dbf  
  4.   
  5. SQL> conn u1/u1  
  6. 已连接。  
  7. SQL> select * from t;  
  8. select * from t  
  9.               *  
  10. 第 1 行出现错误:  
  11. ORA-01116: 打开数据库文件 5 时出错  
  12. ORA-01110: 数据文件 5: '/u01/app/oracle/oradata/orcl/tb1.dbf'  
  13. ORA-27041: 无法打开文件  
  14. Linux Error: 2: No such file or directory  
  15. Additional information: 3  
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


 

然后恢复

[sql] view plaincopyprint?

  1. RMAN> run {  
  2. 2> sql "alter database datafile 5 offline";  
  3. 3> set newname for datafile 5 to '/u01/app/oracle/datafile/tb1.dbf';  
  4. 4> restore datafile 5;  
  5. 5> switch datafile 5;  
  6. 6> recover datafile 5;  
  7. 7> sql "alter database datafile 5 online"; }  
  8.   
  9. sql 语句: alter database datafile 5 offline  
  10.   
  11. 正在执行命令: SET NEWNAME  
  12.   
  13. 启动 restore 于 12-10月-11  
  14. 分配的通道: ORA_DISK_1  
  15. 通道 ORA_DISK_1: sid=142 devtype=DISK  
  16.   
  17. 通道 ORA_DISK_1: 正在开始恢复数据文件备份集  
  18. 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件  
  19. 正将数据文件00005还原到/u01/app/oracle/datafile/tb1.dbf  
  20. 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp  
  21. 通道 ORA_DISK_1: 已还原备份片段 1  
  22. 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp 标记 = TAG20111012T144251  
  23. 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01  
  24. 完成 restore 于 12-10月-11  
  25.   
  26. 数据文件 5 已转换成数据文件副本  
  27. 输入数据文件副本 recid=7 stamp=764352437 文件名=/u01/app/oracle/datafile/tb1.dbf  
  28.   
  29. 启动 recover 于 12-10月-11  
  30. 使用通道 ORA_DISK_1  
  31.   
  32. 正在开始介质的恢复  
  33.   
  34. 通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复  
  35. 通道 ORA_DISK_1: 正在恢复存档日志  
  36. 存档日志线程 =1 序列=10  
  37. 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp  
  38. 通道 ORA_DISK_1: 已还原备份片段 1  
  39. 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 标记 = TAG20111012T144328  
  40. 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01  
  41. 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bloq8c_.arc 线程 =1 序列 =10  
  42. 通道 default: 正在删除存档日志  
  43. 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bloq8c_.arc 记录 ID=11 时间戳 =764352439  
  44. 介质恢复完成, 用时: 00:00:01  
  45. 完成 recover 于 12-10月-11  
  46.   
  47. sql 语句: alter database datafile 5 online  
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] view plaincopyprint?

  1. SQL> conn u1/u1  
  2. 已连接。  
  3. SQL> select * from t;  
  4.   
  5.         ID VALUE  
  6. ---------- ------------------------------  
  7.          1 a  
  8.   
  9. SQL> conn /as sysdba  
  10. 已连接。  
  11.   
  12. SQL> select file_name from dba_data_files;  
  13.   
  14. FILE_NAME  
  15. --------------------------------------------------  
  16. /u01/app/oracle/oradata/orcl/users01.dbf  
  17. /u01/app/oracle/oradata/orcl/sysaux01.dbf  
  18. /u01/app/oracle/oradata/orcl/undotbs01.dbf  
  19. /u01/app/oracle/oradata/orcl/system01.dbf  
  20. /u01/app/oracle/datafile/tb1.dbf  
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] view plaincopyprint?

  1. SQL> ! rm -rf /u01/app/oracle/datafile/tb1.dbf  
  2.   
  3. SQL> conn u1/u1  
  4. 已连接。  
  5.   
  6. SQL> insert into t values(2,'b');  
  7. insert into t values(2,'b')  
  8.             *  
  9. 第 1 行出现错误:  
  10. ORA-01116: 打开数据库文件 5 时出错  
  11. ORA-01110: 数据文件 5: '/u01/app/oracle/datafile/tb1.dbf'  
  12. ORA-27041: 无法打开文件  
  13. Linux Error: 2: No such file or directory  
  14. Additional information: 3  
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

 

恢复

  1. RMAN> run {  
  2. 2> sql "alter tablespace tb1 offline immediate";  
  3. 3> set newname for datafile '/u01/app/oracle/datafile/tb1.dbf' to '/u01/app/oracle/oradata/orcl/tb1.dbf';  
  4. 4> restore tablespace tb1;  
  5. 5> switch datafile all;  
  6. 6> recover tablespace tb1;  
  7. 7> sql "alter tablespace tb1 online"; }  
  8.   
  9. sql 语句: alter tablespace tb1 offline immediate  
  10.   
  11. 正在执行命令: SET NEWNAME  
  12.   
  13. 启动 restore 于 12-10月-11  
  14. 使用通道 ORA_DISK_1  
  15.   
  16. 通道 ORA_DISK_1: 正在开始恢复数据文件备份集  
  17. 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件  
  18. 正将数据文件00005还原到/u01/app/oracle/oradata/orcl/tb1.dbf  
  19. 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp  
  20. 通道 ORA_DISK_1: 已还原备份片段 1  
  21. 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_nnndf_TAG20111012T144251_79bfqccl_.bkp 标记 = TAG20111012T144251  
  22. 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01  
  23. 完成 restore 于 12-10月-11  
  24.   
  25. 数据文件 5 已转换成数据文件副本  
  26. 输入数据文件副本 recid=9 stamp=764352980 文件名=/u01/app/oracle/oradata/orcl/tb1.dbf  
  27.   
  28. 启动 recover 于 12-10月-11  
  29. 使用通道 ORA_DISK_1  
  30.   
  31. 正在开始介质的恢复  
  32.   
  33. 通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复  
  34. 通道 ORA_DISK_1: 正在恢复存档日志  
  35. 存档日志线程 =1 序列=10  
  36. 通道 ORA_DISK_1: 正在读取备份片段 /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp  
  37. 通道 ORA_DISK_1: 已还原备份片段 1  
  38. 段句柄 = /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_10_12/o1_mf_annnn_TAG20111012T144328_79bfrkcf_.bkp 标记 = TAG20111012T144328  
  39. 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01  
  40. 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bm6o60_.arc 线程 =1 序列 =10  
  41. 通道 default: 正在删除存档日志  
  42. 存档日志文件名 =/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_12/o1_mf_1_10_79bm6o60_.arc 记录 ID=12 时间戳 =764352981  
  43. 介质恢复完成, 用时: 00:00:03  
  44. 完成 recover 于 12-10月-11  
  45.   
  46. sql 语句: alter tablespace tb1 online  
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

 

验证恢复结果

  1. SQL> conn u1/u1  
  2. 已连接。  
  3. SQL> insert into t values(2,'b');  
  4.   
  5. 已创建 1 行。  
  6.   
  7. SQL> commit;  
  8.   
  9. 提交完成。  
  10.   
  11. SQL> select * from t;  
  12.   
  13.         ID VALUE  
  14. ---------- ------------------------------  
  15.          1 a  
  16.          2 b  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值