2.模拟文件删除,物理删除文件
[oracle@ora10g-1 backup]$ cd /u02/oradata/netdata/
[oracle@ora10g-1 netdata]$ ls
control01.ctl example01.dbf redo01.log redo03.log stredo02.log stredo04.log system01.dbf undotbs01.dbf
control02.ctl netdata01.dbf redo02.log stredo01.log stredo03.log sysaux01.dbf temp01.dbf users01.dbf
[oracle@ora10g-1 netdata]$ rm -rvf netdata01.dbf
已删除"netdata01.dbf"
SQL> conn netdata/netdata
已连接。
SQL> select * from test;
select * from test
*
第 1 行出现错误:
ORA-01116: 打开数据库文件 6 时出错 ORA-01110:
数据文件 6: ‘/u02/oradata/netdata/netdata01.dbf‘
ORA-27041: 无法打开文件
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
已经报错了。
3.将删除文件离线
SQL> conn / as sysdba
已连接。
SQL> alter database datafile 6 offline;
数据库已更改。
4.rman 恢复删除文件
RMAN> restore datafile 6;
启动 restore 于 19-4月 -15
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=529 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
正将数据文件00006还原到/u02/oradata/netdata/netdata01.dbf
通道 ORA_DISK_1: 正在读取备份片段 /oracle/backup/back_43_1_20150419_NETDATA
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 04/19/2015 04:55:36 上) 失败
ORA-19870: 读取备份段 /oracle/backup/back_43_1_20150419_NETDATA 时出错
ORA-19573: 无法获得 exclusive 入队 (数据文件 6 的)
RMAN> restore datafile 6;
启动 restore 于 19-4月 -15
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
正将数据文件00006还原到/u02/oradata/netdata/netdata01.dbf
通道 ORA_DISK_1: 正在读取备份片段 /oracle/backup/back_43_1_20150419_NETDATA
通道 ORA_DISK_1: 已还原备份片段 1
段句柄 = /oracle/backup/back_43_1_20150419_NETDATA 标记 = TAG20150419T044711
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
完成 restore 于 19-4月 -15
RMAN> recover datafile 6;
启动 recover 于 19-4月 -15
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:01
完成 recover 于 19-4月 -15
RMAN>
SQL> alter database datafile 6 oneline;
alter database datafile 6 oneline
*
第 1 行出现错误:
ORA-01916: 需要关键字 ONLINE, OFFLINE, RESIZE, AUTOEXTEND 或 END/DROP
SQL> alter database datafile 6 online;
数据库已更改。
4.验证
SQL> conn netdata/netdata
已连接。
SQL> select * from test;
ID NAME
---------- --------------------------------------------------
1 test
2 test1
SQL>
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
已选择6行。
SQL>