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

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

你可能感兴趣的:(sql,数据库,File,database,insert,disk)