模拟环境
1. 做操作之前先备份数据库
RMAN> run {
# Hot database level 0 whole backup
allocate channel t1 type disk;
backup
incremental level 0
skip inaccessible
format ‘/oracle/backup/back_%s_%p_%T_%d‘
#AS COMPRESSED backupset
database plus archivelog
format ‘/oracle/backup/arclogback_%s_%p_%t_%d‘
delete input;
delete obsolete;
release CHANNEL t1 ;
}2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14>
释放的通道: ORA_DISK_1
分配的通道: t1
通道 t1: sid=529 devtype=DISK
启动 backup 于 19-4月 -15
当前日志已存档
通道 t1: 正在启动存档日志备份集
通道 t1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =724 记录 ID=782 时间戳=877409229
通道 t1: 正在启动段 1 于 19-4月 -15
通道 t1: 已完成段 1 于 19-4月 -15
段句柄=/oracle/backup/arclogback_42_1_877409229_NETDATA 标记=TAG20150419T044709 注释=NONE
通道 t1: 备份集已完成, 经过时间:00:00:02
通道 t1: 正在删除存档日志
存档日志文件名 =/u02/archive/1_724_873224460.dbf 记录 ID=782 时间戳 =877409229
完成 backup 于 19-4月 -15
启动 backup 于 19-4月 -15
通道 t1: 启动增量级别 0 数据文件备份集
通道 t1: 正在指定备份集中的数据文件
输入数据文件 fno=00004 name=/u02/oradata/netdata/users01.dbf
输入数据文件 fno=00001 name=/u02/oradata/netdata/system01.dbf
输入数据文件 fno=00002 name=/u02/oradata/netdata/undotbs01.dbf
输入数据文件 fno=00003 name=/u02/oradata/netdata/sysaux01.dbf
输入数据文件 fno=00005 name=/u02/oradata/netdata/example01.dbf
输入数据文件 fno=00006 name=/u02/oradata/netdata/netdata01.dbf
通道 t1: 正在启动段 1 于 19-4月 -15
通道 t1: 已完成段 1 于 19-4月 -15
段句柄=/oracle/backup/back_43_1_20150419_NETDATA 标记=TAG20150419T044711 注释=NONE
通道 t1: 备份集已完成, 经过时间:00:05:36
完成 backup 于 19-4月 -15
启动 backup 于 19-4月 -15
当前日志已存档
通道 t1: 正在启动存档日志备份集
通道 t1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =725 记录 ID=783 时间戳=877409569
通道 t1: 正在启动段 1 于 19-4月 -15
通道 t1: 已完成段 1 于 19-4月 -15
段句柄=/oracle/backup/arclogback_44_1_877409569_NETDATA 标记=TAG20150419T045249 注释=NONE
通道 t1: 备份集已完成, 经过时间:00:00:02
通道 t1: 正在删除存档日志
存档日志文件名 =/u02/archive/1_725_873224460.dbf 记录 ID=783 时间戳 =877409569
完成 backup 于 19-4月 -15
启动 Control File and SPFILE Autobackup 于 19-4月 -15
段 handle=/u02/flash_recovery_area/PNETDATA/autobackup/2015_04_19/o1_mf_s_877409572_bm5k14p1_.bkp comment=NONE
完成 Control File and SPFILE Autobackup 于 19-4月 -15
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
删除以下已废弃的备份和副本:
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
控制文件副本 3 02-3月 -15 /u02/oradata/backup/standby.ctl
控制文件副本 4 02-3月 -15 /tmp/sby_control01.ctl
备份集 38 19-4月 -15
备份片段 38 19-4月 -15 /oracle/backup/arclogback_42_1_877409229_NETDATA
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除备份片段
备份段 handle=/oracle/backup/arclogback_42_1_877409229_NETDATA recid=38 stamp=877409230
1 对象已删除
RMAN-06207: 警告: 由于状态不匹配, 所以不能删除 2 对象 (对于 DISK 通道)。
RMAN-06208: 请用 CROSSCHECK 命令修正状态
RMAN-06210: 不匹配对象的列表
RMAN-06211: ==========================
RMAN-06212: 对象类型 文件名/句柄
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Datafile Copy /u02/oradata/backup/standby.ctl
RMAN-06214: Datafile Copy /tmp/sby_control01.ctl
释放的通道: t1
RMAN> list backup of database;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
39 Incr 0 5.57G DISK 00:05:35 19-4月 -15
BP 关键字: 39 状态: AVAILABLE 已压缩: NO 标记: TAG20150419T044711
段名:/oracle/backup/back_43_1_20150419_NETDATA
备份集 39 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/system01.dbf
2 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/undotbs01.dbf
3 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/sysaux01.dbf
4 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/users01.dbf
5 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/example01.dbf
6 0 Incr 7862138 19-4月 -15 /u02/oradata/netdata/netdata01.dbf
2.模拟文件删除,物理删除文件
[[email protected] backup]$ cd /u02/oradata/netdata/
[[email protected] 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
[[email protected] 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>