RMAN恢复

RMAN 完全恢复和不完全恢复只适用于ARCHIVELOG 模式。

11.1 RMAN 恢复综述

1. RMAN 完全恢复

RMAN 完全恢复是指当数据文件出现介质失败时,用RESTORE 命令转储数据文件备份,并使用RECOVER 命令将数据文件恢复到失败点的状态。

2. RMAN 不完全恢复

RMAN 不完全恢复是指当数据库出现介质失败或逻辑失败时,使用RESTORE 命令转储备份,并使用RECOVER 命令将数据库恢复到备份点与失败点之间某个时刻的状态。

3. RMAN 转储命令

(1) RESTORE DATABASE。

转储数据库的所有数据文件。该命令只能在MOUNT 下使用。

(2) RESTORE TABLESPACE。

转储特定表空间的数据文件。该命令只能在OPEN 下使用。

(3) RESTORE DATAFILE。

转储特定数据文件。该命令既可以在OPEN 下使用,也可以在MOUNT 下使用。

(4) RESTORE CONTROLFILE。

转储控制文件。该命令只能在NOMOUNT 下使用。

(5) RESTORE ARCHIVELOG。

转储归档日志。该命令既可以在MOUNT 下使用,也可以在OPEN 下使用。

(6) RESTORE SPFILE。

转储服务器参数文件。该命令只能在NOMOUNT 状态下使用。

4. RMAN 恢复命令

(1) RECOVER DATABASE。

恢复数据库所有数据文件。该命令只能在MOUNT 状态下使用。

(2) RECOVER TABLESPACE。

恢复特定表空间的所有数据文件。该命令只能在OPEN 状态下使用。

(3) RECOVER DATAFILE。

恢复特定数据文件。该命令既可以在MOUNT 状态下使用,也可以在OPEN 状态下使用。

11.2 RMAN 完全恢复

11.2.1 恢复数据库

(1) 所有数据文件被删除。

RMAN> shutdown immediate

数据库已关闭
数据库已卸载
Oracle 实例已关闭

RMAN> run
2> {
3> host "del D:\DEMO\SYSTEM01.DBF";
4> host "del D:\DEMO\SYSAUX01.DBF";
5> host "del D:\DEMO\USERS01.DBF";
6> host "del D:\DEMO\UNDOTBS01.DBF";
7> }

主机命令完成

主机命令完成

主机命令完成

主机命令完成

RMAN> startup force mount

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 79693156 字节
Database Buffers              83886080 字节
Redo Buffers                   2945024 字节

SQL * PLUS 查询需要恢复的文件。

SQL> conn / as sysdba
已连接。
SQL> select file#,error from v$recover_file;

     FILE# ERROR
---------- -----------------------------------------------------------------
         1 FILE NOT FOUND
         2 FILE NOT FOUND
         3 FILE NOT FOUND
         4 FILE NOT FOUND

RMAN> run
2> {
3> restore database;
4> recover database;
5> sql 'alter database open';
6> }

启动 restore 于 08-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_116_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1008\DEMO_116_1.DBF 标记 = TAG20081008T145913
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_116_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1008\DEMO_116_2.DBF 标记 = TAG20081008T145913
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:00
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1008\USERS_119.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1008\USERS_119.DBF 标记 = TAG20081008T150644
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:25
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1008\SYSTEM_120.DBF

故障转移到上一个备份

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_116_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1008\DEMO_116_1.DBF 标记 = TAG20081008T145913
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_116_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1008\DEMO_116_2.DBF 标记 = TAG20081008T145913
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:10
完成 restore 于 08-10月-08

启动 recover 于 08-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 25 已作为文件 C:\DEMO\ARCHIVE\25_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 26 已作为文件 C:\DEMO\ARCHIVE\26_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 27 已作为文件 C:\DEMO\ARCHIVE\27_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 28 已作为文件 C:\DEMO\ARCHIVE\28_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 29 已作为文件 C:\DEMO\ARCHIVE\29_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 30 已作为文件 C:\DEMO\ARCHIVE\30_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 31 已作为文件 C:\DEMO\ARCHIVE\31_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 32 已作为文件 C:\DEMO\ARCHIVE\32_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\25_1_667054810.LOG 线程 =1 序列 =25
存档日志文件名 =C:\DEMO\ARCHIVE\26_1_667054810.LOG 线程 =1 序列 =26
存档日志文件名 =C:\DEMO\ARCHIVE\27_1_667054810.LOG 线程 =1 序列 =27
存档日志文件名 =C:\DEMO\ARCHIVE\28_1_667054810.LOG 线程 =1 序列 =28
存档日志文件名 =C:\DEMO\ARCHIVE\29_1_667054810.LOG 线程 =1 序列 =29
存档日志文件名 =C:\DEMO\ARCHIVE\30_1_667054810.LOG 线程 =1 序列 =30
介质恢复完成, 用时: 00:00:02
完成 recover 于 08-10月-08

sql 语句: alter database open

(2) 数据文件所在磁盘出现硬件故障。

RMAN> report schema;

数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间           回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1    490      SYSTEM               ***     E:\DEMO\SYSTEM01.DBF
2    120      UNDOTBS1             ***     E:\DEMO\UNDOTBS01.DBF
3    270      SYSAUX               ***     E:\DEMO\SYSAUX01.DBF
4    241      USERS                ***     E:\DEMO\USERS01.DBF

临时文件列表
=======================
文件大小 (MB) 表空间           最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1    50       TEMP                 50          D:\DEMO\TEMP01.DBF

RMAN> run
2> {
3> shutdown immediate;
4> startup force mount;
5> set newname for datafile 1 to 'd:\DEMO\SYSTEM01.DBF';
6> set newname for datafile 2 to 'd:\DEMO\UNDOTBS01.DBF';
7> set newname for datafile 3 to 'd:\DEMO\SYSAUX01.DBF';
8> set newname for datafile 4 to 'd:\DEMO\USERS01.DBF';
9> restore database;
10> switch datafile all;
11> recover database;
12> sql 'alter database open';
13> }

数据库已关闭
数据库已卸载
Oracle 实例已关闭

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 79693156 字节
Database Buffers              83886080 字节
Redo Buffers                   2945024 字节

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 08-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
正将数据文件00004恢复到D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_129_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1008\DEMO_129_1.DBF 标记 = TAG20081008T215013
通道 ORA_DISK_1: 正在读取备份段 D:\1008\DEMO_129_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1008\DEMO_129_2.DBF 标记 = TAG20081008T215013
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:10
完成 restore 于 08-10月-08

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=98 stamp=667606684 文件名=D:\DEMO\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 recid=99 stamp=667606684 文件名=D:\DEMO\UNDOTBS01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 recid=100 stamp=667606685 文件名=D:\DEMO\SYSAUX01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=101 stamp=667606685 文件名=D:\DEMO\USERS01.DBF

启动 recover 于 08-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 48 已作为文件 C:\DEMO\ARCHIVE\48_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 49 已作为文件 C:\DEMO\ARCHIVE\49_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 50 已作为文件 C:\DEMO\ARCHIVE\50_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 51 已作为文件 C:\DEMO\ARCHIVE\51_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 52 已作为文件 C:\DEMO\ARCHIVE\52_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 53 已作为文件 C:\DEMO\ARCHIVE\53_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\48_1_667054810.LOG 线程 =1 序列 =48
存档日志文件名 =C:\DEMO\ARCHIVE\49_1_667054810.LOG 线程 =1 序列 =49
存档日志文件名 =C:\DEMO\ARCHIVE\50_1_667054810.LOG 线程 =1 序列 =50
存档日志文件名 =C:\DEMO\ARCHIVE\51_1_667054810.LOG 线程 =1 序列 =51
介质恢复完成, 用时: 00:00:11
完成 recover 于 08-10月-08

sql 语句: alter database open

RMAN> report schema;

数据库方案报表

永久数据文件列表
===========================
文件大小 (MB) 表空间           回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1    490      SYSTEM               ***     D:\DEMO\SYSTEM01.DBF
2    120      UNDOTBS1             ***     D:\DEMO\UNDOTBS01.DBF
3    270      SYSAUX               ***     D:\DEMO\SYSAUX01.DBF
4    241      USERS                ***     D:\DEMO\USERS01.DBF

临时文件列表
=======================
文件大小 (MB) 表空间           最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1    50       TEMP                 50          D:\DEMO\TEMP01.DBF

11.2.2 恢复SYSTEM 表空间的数据文件

失败信息:

RMAN> startup;

已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: startup 命令 (在 10/09/2008 11:16:32 上) 失败
ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 1: 'D:\DEMO\SYSTEM01.DBF'

恢复管理器完成。

(1) SYSTEM 表空间的数据文件被误删除。

RMAN> run
2> {
3> shutdown immediate;
4> startup force mount;
5> restore datafile 1;
6> recover datafile 1;
7> sql 'alter database open';
8> }
9>
数据库已卸载
Oracle 实例已关闭

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 67110244 字节
Database Buffers              96468992 字节
Redo Buffers                   2945024 字节

启动 restore 于 09-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1009\DEMO_133_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1009\DEMO_133_1.DBF 标记 = TAG20081009T105051
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:45
完成 restore 于 09-10月-08

启动 recover 于 09-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 55 已作为文件 C:\DEMO\ARCHIVE\55_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 56 已作为文件 C:\DEMO\ARCHIVE\56_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 57 已作为文件 C:\DEMO\ARCHIVE\57_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 58 已作为文件 C:\DEMO\ARCHIVE\58_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 59 已作为文件 C:\DEMO\ARCHIVE\59_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 60 已作为文件 C:\DEMO\ARCHIVE\60_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\55_1_667054810.LOG 线程 =1 序列 =55
存档日志文件名 =C:\DEMO\ARCHIVE\56_1_667054810.LOG 线程 =1 序列 =56
存档日志文件名 =C:\DEMO\ARCHIVE\57_1_667054810.LOG 线程 =1 序列 =57
存档日志文件名 =C:\DEMO\ARCHIVE\58_1_667054810.LOG 线程 =1 序列 =58
介质恢复完成, 用时: 00:00:01
完成 recover 于 09-10月-08

sql 语句: alter database open

恢复管理器完成。

(2) SYSTEM 表空间数据文件所在磁盘出现故障。

RMAN> run
2> {
3> shutdown immediate;
4> startup force mount;
5> set newname for datafile 1 to 'e:\demo\system01.dbf';
6> restore datafile 1;
7> switch datafile 1;
8> recover datafile 1;
9> sql 'alter database open';
10> }
11>
数据库已关闭
数据库已卸载
Oracle 实例已关闭

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 67110244 字节
Database Buffers              96468992 字节
Redo Buffers                   2945024 字节

正在执行命令: SET NEWNAME

启动 restore 于 09-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\DEMO\SYSTEM01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1009\DEMO_133_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1009\DEMO_133_1.DBF 标记 = TAG20081009T105051
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:45
完成 restore 于 09-10月-08

数据文件 1 已转换成数据文件副本
输入数据文件副本 recid=113 stamp=667654504 文件名=E:\DEMO\SYSTEM01.DBF

启动 recover 于 09-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 55 已作为文件 C:\DEMO\ARCHIVE\55_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 56 已作为文件 C:\DEMO\ARCHIVE\56_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 57 已作为文件 C:\DEMO\ARCHIVE\57_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 58 已作为文件 C:\DEMO\ARCHIVE\58_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 59 已作为文件 C:\DEMO\ARCHIVE\59_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 60 已作为文件 C:\DEMO\ARCHIVE\60_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\55_1_667054810.LOG 线程 =1 序列 =55
存档日志文件名 =C:\DEMO\ARCHIVE\56_1_667054810.LOG 线程 =1 序列 =56
存档日志文件名 =C:\DEMO\ARCHIVE\57_1_667054810.LOG 线程 =1 序列 =57
存档日志文件名 =C:\DEMO\ARCHIVE\58_1_667054810.LOG 线程 =1 序列 =58
介质恢复完成, 用时: 00:00:03
完成 recover 于 09-10月-08

sql 语句: alter database open

恢复管理器完成。

11.2.3 在OPEN 状态下恢复关闭后意外丢失的数据文件

失败信息:

SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              71304548 bytes
Database Buffers           92274688 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'D:\DEMO\USERS01.DBF'

(1) 数据文件被误删除。

RMAN> run
2> {
3> shutdown immediate;
4> startup force mount;
5> sql 'alter database datafile 4 offline';
6> sql 'alter database open';
7> restore datafile 4;
8> recover datafile 4;
9> sql 'alter database datafile 4 online';
10> }

数据库已卸载
Oracle 实例已关闭

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 71304548 字节
Database Buffers              92274688 字节
Redo Buffers                   2945024 字节

sql 语句: alter database datafile 4 offline

sql 语句: alter database open

启动 restore 于 10-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=146 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1010\DEMO_135_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1010\DEMO_135_1.DBF 标记 = TAG20081010T224957
通道 ORA_DISK_1: 正在读取备份段 D:\1010\DEMO_135_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1010\DEMO_135_2.DBF 标记 = TAG20081010T224957
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:50
完成 restore 于 10-10月-08

启动 recover 于 10-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 61 已作为文件 C:\DEMO\ARCHIVE\61_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 62 已作为文件 C:\DEMO\ARCHIVE\62_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 63 已作为文件 C:\DEMO\ARCHIVE\63_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 64 已作为文件 C:\DEMO\ARCHIVE\64_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\61_1_667054810.LOG 线程 =1 序列 =61
存档日志文件名 =C:\DEMO\ARCHIVE\62_1_667054810.LOG 线程 =1 序列 =62
介质恢复完成, 用时: 00:00:02
完成 recover 于 10-10月-08

sql 语句: alter database datafile 4 online

(2) 数据文件所在磁盘出现介质损坏。

RMAN> run
2> {
3> shutdown immediate;
4> startup force mount;
5> sql 'alter database datafile 4 offline';
6> sql 'alter database open';
7> set newname for datafile 4 to 'e:\demo\users01.dbf';
8> restore datafile 4;
9> switch datafile 4;
10> recover datafile 4;
11> sql 'alter database datafile 4 online';
12> }

数据库已卸载
Oracle 实例已关闭

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 62915940 字节
Database Buffers             100663296 字节
Redo Buffers                   2945024 字节

sql 语句: alter database datafile 4 offline

sql 语句: alter database open

正在执行命令: SET NEWNAME

启动 restore 于 11-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=145 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到E:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DEMO\DEMO_139_1.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\DEMO\DEMO_139_2.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:10
完成 restore 于 11-10月-08

数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=131 stamp=667787697 文件名=E:\DEMO\USERS01.DBF

启动 recover 于 11-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 80 已作为文件 C:\DEMO\ARCHIVE\80_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 81 已作为文件 C:\DEMO\ARCHIVE\81_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 82 已作为文件 C:\DEMO\ARCHIVE\82_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 83 已作为文件 C:\DEMO\ARCHIVE\83_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 84 已作为文件 C:\DEMO\ARCHIVE\84_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\80_1_667054810.LOG 线程 =1 序列 =80
存档日志文件名 =C:\DEMO\ARCHIVE\81_1_667054810.LOG 线程 =1 序列 =81
存档日志文件名 =C:\DEMO\ARCHIVE\82_1_667054810.LOG 线程 =1 序列 =82
介质恢复完成, 用时: 00:00:03
完成 recover 于 11-10月-08

sql 语句: alter database datafile 4 online

11.2.4 在OPEN 状态下恢复打开时意外丢失的数据文件。

失败信息:

SQL> select * from scott.emp;
select * from scott.emp
*
第 1 行出现错误:
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'E:\DEMO\USERS01.DBF'

(1) 数据文件被误删除。

RMAN> run
2> {
3> sql 'alter database datafile 4 offline';
4> restore datafile 4;
5> recover datafile 4;
6> sql 'alter database datafile 4 online';
7> }

sql 语句: alter database datafile 4 offline

启动 restore 于 11-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=159 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到E:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DEMO\DEMO_139_1.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\DEMO\DEMO_139_2.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:50
完成 restore 于 11-10月-08

启动 recover 于 11-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 80 已作为文件 C:\DEMO\ARCHIVE\80_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 81 已作为文件 C:\DEMO\ARCHIVE\81_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 82 已作为文件 C:\DEMO\ARCHIVE\82_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 83 已作为文件 C:\DEMO\ARCHIVE\83_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 84 已作为文件 C:\DEMO\ARCHIVE\84_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 85 已作为文件 C:\DEMO\ARCHIVE\85_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 86 已作为文件 C:\DEMO\ARCHIVE\86_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 87 已作为文件 C:\DEMO\ARCHIVE\87_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 88 已作为文件 C:\DEMO\ARCHIVE\88_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\80_1_667054810.LOG 线程 =1 序列 =80
存档日志文件名 =C:\DEMO\ARCHIVE\81_1_667054810.LOG 线程 =1 序列 =81
存档日志文件名 =C:\DEMO\ARCHIVE\82_1_667054810.LOG 线程 =1 序列 =82
存档日志文件名 =C:\DEMO\ARCHIVE\83_1_667054810.LOG 线程 =1 序列 =83
存档日志文件名 =C:\DEMO\ARCHIVE\84_1_667054810.LOG 线程 =1 序列 =84
存档日志文件名 =C:\DEMO\ARCHIVE\85_1_667054810.LOG 线程 =1 序列 =85
存档日志文件名 =C:\DEMO\ARCHIVE\86_1_667054810.LOG 线程 =1 序列 =86
介质恢复完成, 用时: 00:00:04
完成 recover 于 11-10月-08

sql 语句: alter database datafile 4 online

(2) 数据文件所在磁盘出现故障。

RMAN> run
2> {
3> sql 'alter database datafile 4 offline';
4> set newname for datafile 4 to 'd:\demo\users01.dbf';
5> restore datafile 4;
6> switch datafile 4;
7> recover datafile 4;
8> sql 'alter database datafile 4 online';
9> }

sql 语句: alter database datafile 4 offline

正在执行命令: SET NEWNAME

启动 restore 于 11-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到D:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DEMO\DEMO_139_1.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\DEMO\DEMO_139_2.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:40
完成 restore 于 11-10月-08

数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=142 stamp=667831175 文件名=D:\DEMO\USERS01.DBF

启动 recover 于 11-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 80 已作为文件 C:\DEMO\ARCHIVE\80_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 81 已作为文件 C:\DEMO\ARCHIVE\81_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 82 已作为文件 C:\DEMO\ARCHIVE\82_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 83 已作为文件 C:\DEMO\ARCHIVE\83_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 84 已作为文件 C:\DEMO\ARCHIVE\84_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 85 已作为文件 C:\DEMO\ARCHIVE\85_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 86 已作为文件 C:\DEMO\ARCHIVE\86_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 87 已作为文件 C:\DEMO\ARCHIVE\87_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 88 已作为文件 C:\DEMO\ARCHIVE\88_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\80_1_667054810.LOG 线程 =1 序列 =80
存档日志文件名 =C:\DEMO\ARCHIVE\81_1_667054810.LOG 线程 =1 序列 =81
存档日志文件名 =C:\DEMO\ARCHIVE\82_1_667054810.LOG 线程 =1 序列 =82
存档日志文件名 =C:\DEMO\ARCHIVE\83_1_667054810.LOG 线程 =1 序列 =83
存档日志文件名 =C:\DEMO\ARCHIVE\84_1_667054810.LOG 线程 =1 序列 =84
存档日志文件名 =C:\DEMO\ARCHIVE\85_1_667054810.LOG 线程 =1 序列 =85
存档日志文件名 =C:\DEMO\ARCHIVE\86_1_667054810.LOG 线程 =1 序列 =86
介质恢复完成, 用时: 00:00:04
完成 recover 于 11-10月-08

sql 语句: alter database datafile 4 online

11.2.5 在OPEN 状态下恢复未备份的数据文件

失败信息:

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              71304548 bytes
Database Buffers           92274688 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'E:\USER03.DBF'

(1) 数据文件被误删除。

RMAN> run
2> {
3> startup force mount;
4> sql 'alter database datafile 5 offline';
5> sql 'alter database open';
6> restore datafile 5;
7> recover datafile 5;
8> sql 'alter database datafile 5 online';
9> }

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 71304548 字节
Database Buffers              92274688 字节
Redo Buffers                   2945024 字节

sql 语句: alter database datafile 5 offline

sql 语句: alter database open

启动 restore 于 14-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=140 devtype=DISK

创建数据文件 fno = 5 名称 = E:\USER03.DBF
没有完成恢复; 所有文件均为只读或脱机文件或者已经恢复
完成 restore 于 14-10月-08

启动 recover 于 14-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 89 已作为文件 C:\DEMO\ARCHIVE\89_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 90 已作为文件 C:\DEMO\ARCHIVE\90_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 91 已作为文件 C:\DEMO\ARCHIVE\91_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 92 已作为文件 C:\DEMO\ARCHIVE\92_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\89_1_667054810.LOG 线程 =1 序列 =89
存档日志文件名 =C:\DEMO\ARCHIVE\90_1_667054810.LOG 线程 =1 序列 =90
介质恢复完成, 用时: 00:00:04
完成 recover 于 14-10月-08

sql 语句: alter database datafile 5 online

(2) 数据文件所在磁盘出现故障。

RMAN> run
2> {
3> shutdown immediate;
4> startup mount;
5> sql 'alter database datafile 5 offline';
6> sql 'alter database open';
7> set newname for datafile 5 to 'c:\demo\user03.dbf';
8> restore datafile 5;
9> switch datafile 5;
10> recover datafile 5;
11> sql 'alter database datafile 5 online';
12> }

数据库已卸载
Oracle 实例已关闭

已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 71304548 字节
Database Buffers              92274688 字节
Redo Buffers                   2945024 字节

sql 语句: alter database datafile 5 offline

sql 语句: alter database open

正在执行命令: SET NEWNAME

启动 restore 于 14-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=142 devtype=DISK

通道 ORA_DISK_1: 正在恢复数据文件00005
输入数据文件副本 recid=143 stamp=668082432 文件名=D:\DEMO\USER03.DBF
数据文件 00005 的恢复目标: C:\DEMO\USER03.DBF

故障转移到上一个备份

创建数据文件 fno = 5 名称 = C:\DEMO\USER03.DBF
完成 restore 于 14-10月-08

数据文件 5 已转换成数据文件副本
输入数据文件副本 recid=145 stamp=668086977 文件名=C:\DEMO\USER03.DBF

启动 recover 于 14-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 89 已作为文件 C:\DEMO\ARCHIVE\89_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 90 已作为文件 C:\DEMO\ARCHIVE\90_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 91 已作为文件 C:\DEMO\ARCHIVE\91_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 92 已作为文件 C:\DEMO\ARCHIVE\92_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 93 已作为文件 C:\DEMO\ARCHIVE\93_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 94 已作为文件 C:\DEMO\ARCHIVE\94_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 95 已作为文件 C:\DEMO\ARCHIVE\95_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 96 已作为文件 C:\DEMO\ARCHIVE\96_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 97 已作为文件 C:\DEMO\ARCHIVE\97_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 98 已作为文件 C:\DEMO\ARCHIVE\98_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 99 已作为文件 C:\DEMO\ARCHIVE\99_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 100 已作为文件 C:\DEMO\ARCHIVE\100_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 101 已作为文件 C:\DEMO\ARCHIVE\101_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 102 已作为文件 C:\DEMO\ARCHIVE\102_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 103 已作为文件 C:\DEMO\ARCHIVE\103_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 104 已作为文件 C:\DEMO\ARCHIVE\104_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 105 已作为文件 C:\DEMO\ARCHIVE\105_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 106 已作为文件 C:\DEMO\ARCHIVE\106_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\89_1_667054810.LOG 线程 =1 序列 =89
存档日志文件名 =C:\DEMO\ARCHIVE\90_1_667054810.LOG 线程 =1 序列 =90
存档日志文件名 =C:\DEMO\ARCHIVE\91_1_667054810.LOG 线程 =1 序列 =91
存档日志文件名 =C:\DEMO\ARCHIVE\92_1_667054810.LOG 线程 =1 序列 =92
存档日志文件名 =C:\DEMO\ARCHIVE\93_1_667054810.LOG 线程 =1 序列 =93
存档日志文件名 =C:\DEMO\ARCHIVE\94_1_667054810.LOG 线程 =1 序列 =94
存档日志文件名 =C:\DEMO\ARCHIVE\95_1_667054810.LOG 线程 =1 序列 =95
存档日志文件名 =C:\DEMO\ARCHIVE\96_1_667054810.LOG 线程 =1 序列 =96
存档日志文件名 =C:\DEMO\ARCHIVE\97_1_667054810.LOG 线程 =1 序列 =97
存档日志文件名 =C:\DEMO\ARCHIVE\98_1_667054810.LOG 线程 =1 序列 =98
存档日志文件名 =C:\DEMO\ARCHIVE\99_1_667054810.LOG 线程 =1 序列 =99
存档日志文件名 =C:\DEMO\ARCHIVE\100_1_667054810.LOG 线程 =1 序列 =100
存档日志文件名 =C:\DEMO\ARCHIVE\101_1_667054810.LOG 线程 =1 序列 =101
存档日志文件名 =C:\DEMO\ARCHIVE\102_1_667054810.LOG 线程 =1 序列 =102
存档日志文件名 =C:\DEMO\ARCHIVE\103_1_667054810.LOG 线程 =1 序列 =103
存档日志文件名 =C:\DEMO\ARCHIVE\104_1_667054810.LOG 线程 =1 序列 =104
介质恢复完成, 用时: 00:00:03
完成 recover 于 14-10月-08

sql 语句: alter database datafile 5 online

11.2.6 恢复表空间

失败信息:

SQL> select * from scott.emp;
select * from scott.emp
                    *
第 1 行出现错误:
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'D:\DEMO\USERS01.DBF'

(1) 表空间的数据文件被误删除。

RMAN> run
2> {
3> sql 'alter tablespace users offline for recover';
4> restore tablespace users;
5> recover tablespace users;
6> sql 'alter tablespace users online';
7> }

sql 语句: alter tablespace users offline for recover

启动 restore 于 14-10月-08
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在恢复数据文件00004
输入数据文件副本 recid=150 stamp=668122894 文件名=D:\DEMO\USERS01.DBF
数据文件 00004 的恢复目标: E:\USERS01.DBF

故障转移到上一个备份

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到E:\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DEMO\DEMO_139_1.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\DEMO\DEMO_139_2.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:50
完成 restore 于 14-10月-08

启动 recover 于 14-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 80 已作为文件 C:\DEMO\ARCHIVE\80_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 81 已作为文件 C:\DEMO\ARCHIVE\81_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 82 已作为文件 C:\DEMO\ARCHIVE\82_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 83 已作为文件 C:\DEMO\ARCHIVE\83_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 84 已作为文件 C:\DEMO\ARCHIVE\84_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 85 已作为文件 C:\DEMO\ARCHIVE\85_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 86 已作为文件 C:\DEMO\ARCHIVE\86_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 87 已作为文件 C:\DEMO\ARCHIVE\87_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 88 已作为文件 C:\DEMO\ARCHIVE\88_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 89 已作为文件 C:\DEMO\ARCHIVE\89_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 90 已作为文件 C:\DEMO\ARCHIVE\90_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 91 已作为文件 C:\DEMO\ARCHIVE\91_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 92 已作为文件 C:\DEMO\ARCHIVE\92_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 93 已作为文件 C:\DEMO\ARCHIVE\93_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 94 已作为文件 C:\DEMO\ARCHIVE\94_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 95 已作为文件 C:\DEMO\ARCHIVE\95_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 96 已作为文件 C:\DEMO\ARCHIVE\96_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 97 已作为文件 C:\DEMO\ARCHIVE\97_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 98 已作为文件 C:\DEMO\ARCHIVE\98_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 99 已作为文件 C:\DEMO\ARCHIVE\99_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 100 已作为文件 C:\DEMO\ARCHIVE\100_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 101 已作为文件 C:\DEMO\ARCHIVE\101_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 102 已作为文件 C:\DEMO\ARCHIVE\102_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 103 已作为文件 C:\DEMO\ARCHIVE\103_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 104 已作为文件 C:\DEMO\ARCHIVE\104_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 105 已作为文件 C:\DEMO\ARCHIVE\105_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 106 已作为文件 C:\DEMO\ARCHIVE\106_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\80_1_667054810.LOG 线程 =1 序列 =80
存档日志文件名 =C:\DEMO\ARCHIVE\81_1_667054810.LOG 线程 =1 序列 =81
存档日志文件名 =C:\DEMO\ARCHIVE\82_1_667054810.LOG 线程 =1 序列 =82
存档日志文件名 =C:\DEMO\ARCHIVE\83_1_667054810.LOG 线程 =1 序列 =83
存档日志文件名 =C:\DEMO\ARCHIVE\84_1_667054810.LOG 线程 =1 序列 =84
存档日志文件名 =C:\DEMO\ARCHIVE\85_1_667054810.LOG 线程 =1 序列 =85
存档日志文件名 =C:\DEMO\ARCHIVE\86_1_667054810.LOG 线程 =1 序列 =86
存档日志文件名 =C:\DEMO\ARCHIVE\87_1_667054810.LOG 线程 =1 序列 =87
存档日志文件名 =C:\DEMO\ARCHIVE\88_1_667054810.LOG 线程 =1 序列 =88
存档日志文件名 =C:\DEMO\ARCHIVE\89_1_667054810.LOG 线程 =1 序列 =89
存档日志文件名 =C:\DEMO\ARCHIVE\90_1_667054810.LOG 线程 =1 序列 =90
存档日志文件名 =C:\DEMO\ARCHIVE\91_1_667054810.LOG 线程 =1 序列 =91
存档日志文件名 =C:\DEMO\ARCHIVE\92_1_667054810.LOG 线程 =1 序列 =92
存档日志文件名 =C:\DEMO\ARCHIVE\93_1_667054810.LOG 线程 =1 序列 =93
存档日志文件名 =C:\DEMO\ARCHIVE\94_1_667054810.LOG 线程 =1 序列 =94
存档日志文件名 =C:\DEMO\ARCHIVE\95_1_667054810.LOG 线程 =1 序列 =95
存档日志文件名 =C:\DEMO\ARCHIVE\96_1_667054810.LOG 线程 =1 序列 =96
存档日志文件名 =C:\DEMO\ARCHIVE\97_1_667054810.LOG 线程 =1 序列 =97
存档日志文件名 =C:\DEMO\ARCHIVE\98_1_667054810.LOG 线程 =1 序列 =98
存档日志文件名 =C:\DEMO\ARCHIVE\99_1_667054810.LOG 线程 =1 序列 =99
存档日志文件名 =C:\DEMO\ARCHIVE\100_1_667054810.LOG 线程 =1 序列 =100
存档日志文件名 =C:\DEMO\ARCHIVE\101_1_667054810.LOG 线程 =1 序列 =101
存档日志文件名 =C:\DEMO\ARCHIVE\102_1_667054810.LOG 线程 =1 序列 =102
存档日志文件名 =C:\DEMO\ARCHIVE\103_1_667054810.LOG 线程 =1 序列 =103
存档日志文件名 =C:\DEMO\ARCHIVE\104_1_667054810.LOG 线程 =1 序列 =104
介质恢复完成, 用时: 00:00:07
完成 recover 于 14-10月-08

sql 语句: alter tablespace users online

(2) 表空间的数据文件所在磁盘出现故障。

RMAN> run
2> {
3> sql 'alter tablespace users offline for recover';
4> set newname for datafile 4 to 'c:\demo\users01.dbf';
5> restore tablespace users;
6> switch datafile all;
7> recover tablespace users;
8> sql 'alter tablespace users online';
9> }

sql 语句: alter tablespace users offline for recover

正在执行命令: SET NEWNAME

启动 restore 于 14-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=134 devtype=DISK

通道 ORA_DISK_1: 正在恢复数据文件00004
输入数据文件副本 recid=150 stamp=668122894 文件名=D:\DEMO\USERS01.DBF
数据文件 00004 的恢复目标: C:\DEMO\USERS01.DBF

故障转移到上一个备份

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到C:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\DEMO\DEMO_139_1.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 正在读取备份段 D:\DEMO\DEMO_139_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\DEMO\DEMO_139_2.DBF 标记 = TAG20081011T002758
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:50
完成 restore 于 14-10月-08

数据文件 4 已转换成数据文件副本
输入数据文件副本 recid=155 stamp=668124361 文件名=C:\DEMO\USERS01.DBF

启动 recover 于 14-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 80 已作为文件 C:\DEMO\ARCHIVE\80_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 81 已作为文件 C:\DEMO\ARCHIVE\81_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 82 已作为文件 C:\DEMO\ARCHIVE\82_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 83 已作为文件 C:\DEMO\ARCHIVE\83_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 84 已作为文件 C:\DEMO\ARCHIVE\84_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 85 已作为文件 C:\DEMO\ARCHIVE\85_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 86 已作为文件 C:\DEMO\ARCHIVE\86_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 87 已作为文件 C:\DEMO\ARCHIVE\87_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 88 已作为文件 C:\DEMO\ARCHIVE\88_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 89 已作为文件 C:\DEMO\ARCHIVE\89_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 90 已作为文件 C:\DEMO\ARCHIVE\90_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 91 已作为文件 C:\DEMO\ARCHIVE\91_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 92 已作为文件 C:\DEMO\ARCHIVE\92_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 93 已作为文件 C:\DEMO\ARCHIVE\93_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 94 已作为文件 C:\DEMO\ARCHIVE\94_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 95 已作为文件 C:\DEMO\ARCHIVE\95_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 96 已作为文件 C:\DEMO\ARCHIVE\96_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 97 已作为文件 C:\DEMO\ARCHIVE\97_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 98 已作为文件 C:\DEMO\ARCHIVE\98_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 99 已作为文件 C:\DEMO\ARCHIVE\99_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 100 已作为文件 C:\DEMO\ARCHIVE\100_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 101 已作为文件 C:\DEMO\ARCHIVE\101_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 102 已作为文件 C:\DEMO\ARCHIVE\102_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 103 已作为文件 C:\DEMO\ARCHIVE\103_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 104 已作为文件 C:\DEMO\ARCHIVE\104_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 105 已作为文件 C:\DEMO\ARCHIVE\105_1_667054810.LOG 存在于磁盘上
存档日志线程 1 序列 106 已作为文件 C:\DEMO\ARCHIVE\106_1_667054810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\80_1_667054810.LOG 线程 =1 序列 =80
存档日志文件名 =C:\DEMO\ARCHIVE\81_1_667054810.LOG 线程 =1 序列 =81
存档日志文件名 =C:\DEMO\ARCHIVE\82_1_667054810.LOG 线程 =1 序列 =82
存档日志文件名 =C:\DEMO\ARCHIVE\83_1_667054810.LOG 线程 =1 序列 =83
存档日志文件名 =C:\DEMO\ARCHIVE\84_1_667054810.LOG 线程 =1 序列 =84
存档日志文件名 =C:\DEMO\ARCHIVE\85_1_667054810.LOG 线程 =1 序列 =85
存档日志文件名 =C:\DEMO\ARCHIVE\86_1_667054810.LOG 线程 =1 序列 =86
存档日志文件名 =C:\DEMO\ARCHIVE\87_1_667054810.LOG 线程 =1 序列 =87
存档日志文件名 =C:\DEMO\ARCHIVE\88_1_667054810.LOG 线程 =1 序列 =88
存档日志文件名 =C:\DEMO\ARCHIVE\89_1_667054810.LOG 线程 =1 序列 =89
存档日志文件名 =C:\DEMO\ARCHIVE\90_1_667054810.LOG 线程 =1 序列 =90
存档日志文件名 =C:\DEMO\ARCHIVE\91_1_667054810.LOG 线程 =1 序列 =91
存档日志文件名 =C:\DEMO\ARCHIVE\92_1_667054810.LOG 线程 =1 序列 =92
存档日志文件名 =C:\DEMO\ARCHIVE\93_1_667054810.LOG 线程 =1 序列 =93
存档日志文件名 =C:\DEMO\ARCHIVE\94_1_667054810.LOG 线程 =1 序列 =94
存档日志文件名 =C:\DEMO\ARCHIVE\95_1_667054810.LOG 线程 =1 序列 =95
存档日志文件名 =C:\DEMO\ARCHIVE\96_1_667054810.LOG 线程 =1 序列 =96
存档日志文件名 =C:\DEMO\ARCHIVE\97_1_667054810.LOG 线程 =1 序列 =97
存档日志文件名 =C:\DEMO\ARCHIVE\98_1_667054810.LOG 线程 =1 序列 =98
存档日志文件名 =C:\DEMO\ARCHIVE\99_1_667054810.LOG 线程 =1 序列 =99
存档日志文件名 =C:\DEMO\ARCHIVE\100_1_667054810.LOG 线程 =1 序列 =100
存档日志文件名 =C:\DEMO\ARCHIVE\101_1_667054810.LOG 线程 =1 序列 =101
存档日志文件名 =C:\DEMO\ARCHIVE\102_1_667054810.LOG 线程 =1 序列 =102
存档日志文件名 =C:\DEMO\ARCHIVE\103_1_667054810.LOG 线程 =1 序列 =103
存档日志文件名 =C:\DEMO\ARCHIVE\104_1_667054810.LOG 线程 =1 序列 =104
介质恢复完成, 用时: 00:00:08
完成 recover 于 14-10月-08

sql 语句: alter tablespace users online

11.2.7 数据块介质恢复

失败信息:

SQL> select * from t04 where c1 between 200 and 300;
select * from t04 where c1 between 200 and 300
              *
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 5, 块号 12)
ORA-01110: 数据文件 5: 'E:\USER04.DBF'

解决办法:

RMAN> blockrecover device type disk datafile 5 block 12;

启动 blockrecover 于 15-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK

通道 ORA_DISK_1: 正在恢复块
通道 ORA_DISK_1: 正在指定要从备份集恢复的块
正在恢复数据文件 00005 的块
通道 ORA_DISK_1: 正在读取备份段 D:\BACKUP\DEMO_141_1.DBF
通道 ORA_DISK_1: 已从备份段 1 恢复块
段句柄 = D:\BACKUP\DEMO_141_1.DBF 标记 = TAG20081015T231303
通道 ORA_DISK_1: 块恢复完成, 用时: 00:00:01

正在开始介质的恢复
介质恢复完成, 用时: 00:00:07

完成 blockrecover 于 15-10月-08

11.3 RMAN 不完全恢复

11.3.1 基于时间恢复

基于时间恢复是指当出现用户错误时,先用RESTORE DATABASE 命令转储所有数据文件备份,再使用RECOVER DATABASE 命令将数据库恢复到用户错误点的状态,从而恢复用户数据。

模拟截断:

当前日期: 2008-10-16 星期四
输入新日期: (年月日)

当前时间: 10:40:17.15
输入新时间:

SQL> truncate table t04;

表被截断。

恢复:

C:\>set nls_date_format=yyyy-mm-dd hh24:mi:ss

C:\>rman target sys/orcl@demo nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期四 10月 16 10:43:35 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: DEMO (DBID=3408444956)
使用目标数据库控制文件替代恢复目录

RMAN> run
2> {
3> startup force mount;
4> set until time='2008-10-16 10:40:17';
5> restore database;
6> recover database;
7> sql 'alter database open resetlogs';
8> }

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 67110244 字节
Database Buffers              96468992 字节
Redo Buffers                   2945024 字节

正在执行命令: SET until clause

启动 restore 于 2008-10-16 10:46:32
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
正将数据文件00004恢复到C:\DEMO\USERS01.DBF
正将数据文件00005恢复到E:\USER04.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\BACKUP\DEMO_141_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\BACKUP\DEMO_141_1.DBF 标记 = TAG20081015T231303
通道 ORA_DISK_1: 正在读取备份段 D:\BACKUP\DEMO_141_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\BACKUP\DEMO_141_2.DBF 标记 = TAG20081015T231303
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:00
完成 restore 于 2008-10-16 10:48:36

启动 recover 于 2008-10-16 10:48:36
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:03

完成 recover 于 2008-10-16 10:48:46

sql 语句: alter database open resetlogs

在ORACLE DATABASE 10G 之前,在不完全恢复之后必须重新备份数据库;从ORACLE DATABASE 10G 开始,ORACLE 提供了安全机制可以确保归档日志不会被覆盖,从而使得在恢复数据库时可以使用早期数据库副本的备份。但在执行了不完全恢复之后,建议删除早期的备份,并重新备份数据库。

RMAN> run
2> {
3> delete noprompt backup;
4> delete noprompt copy;
5> backup database format='d:\1016\%d_%s_%p.dbf';
6> sql 'alter system archive log current';
7> }

11.3.2 基于SCN 恢复

模拟删除:

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1569497

SQL> drop table t04;

表已删除。

恢复:

RMAN> run
2> {
3> startup force mount;
4> set until scn=1569497;
5> restore database;
6> recover database;
7> sql 'alter database open resetlogs';
8> }

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 71304548 字节
Database Buffers              92274688 字节
Redo Buffers                   2945024 字节

正在执行命令: SET until clause

启动 restore 于 16-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
正将数据文件00004恢复到C:\DEMO\USERS01.DBF
正将数据文件00005恢复到E:\USER04.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1016\DEMO_145_1.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1016\DEMO_145_1.DBF 标记 = TAG20081016T111641
通道 ORA_DISK_1: 正在读取备份段 D:\1016\DEMO_145_2.DBF
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1016\DEMO_145_2.DBF 标记 = TAG20081016T111641
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:00
完成 restore 于 16-10月-08

启动 recover 于 16-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复
介质恢复完成, 用时: 00:00:03

完成 recover 于 16-10月-08

sql 语句: alter database open resetlogs

重新备份数据库,并删除以前备份。

RMAN> run
2> {
3> delete noprompt backup;
4> delete noprompt copy;
5> backup database format='d:\1016\%d_%s_%p.bak';
6> sql 'alter system archive log current';
7> }

11.3.3 基于日志序列号恢复

模拟失败:

RMAN> run
2> {
3> sql 'alter database datafile 5 offline';
4> restore datafile 5;
5> recover datafile 5;
6> sql 'alter database datafile 5 online';
7> }

sql 语句: alter database datafile 5 offline

启动 restore 于 17-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=140 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00005恢复到E:\USER04.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1016\DEMO_147_1.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1016\DEMO_147_1.BAK 标记 = TAG20081016T220440
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:01
完成 restore 于 17-10月-08

启动 recover 于 17-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 C:\DEMO\ARCHIVE\1_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 2 已作为文件 C:\DEMO\ARCHIVE\2_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 C:\DEMO\ARCHIVE\3_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 C:\DEMO\ARCHIVE\4_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 C:\DEMO\ARCHIVE\5_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 7 已作为文件 C:\DEMO\ARCHIVE\7_1_668296810.LOG 存在于磁盘上

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 10/17/2008 21:51:06 上) 失败
RMAN-06053: 无法执行介质恢复, 因为缺少日志
RMAN-06025: 未找到要恢复的日志线程 1 seq 6 lowscn 1584210 的备份

恢复:

RMAN> run
2> {
3> startup force mount;
4> set until sequence=6;
5> restore database;
6> recover database;
7> sql 'alter database open resetlogs';
8> }

Oracle 实例已启动
数据库已装载

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 62915940 字节
Database Buffers             100663296 字节
Redo Buffers                   2945024 字节

正在执行命令: SET until clause

启动 restore 于 17-10月-08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
正将数据文件00004恢复到C:\DEMO\USERS01.DBF
正将数据文件00005恢复到E:\USER04.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1016\DEMO_147_1.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1016\DEMO_147_1.BAK 标记 = TAG20081016T220440
通道 ORA_DISK_1: 正在读取备份段 D:\1016\DEMO_147_2.BAK
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1016\DEMO_147_2.BAK 标记 = TAG20081016T220440
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:10
完成 restore 于 17-10月-08

启动 recover 于 17-10月-08
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 C:\DEMO\ARCHIVE\1_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 2 已作为文件 C:\DEMO\ARCHIVE\2_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 C:\DEMO\ARCHIVE\3_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 C:\DEMO\ARCHIVE\4_1_668296810.LOG 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 C:\DEMO\ARCHIVE\5_1_668296810.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\1_1_668296810.LOG 线程 =1 序列 =1
存档日志文件名 =C:\DEMO\ARCHIVE\2_1_668296810.LOG 线程 =1 序列 =2
存档日志文件名 =C:\DEMO\ARCHIVE\3_1_668296810.LOG 线程 =1 序列 =3
存档日志文件名 =C:\DEMO\ARCHIVE\4_1_668296810.LOG 线程 =1 序列 =4
存档日志文件名 =C:\DEMO\ARCHIVE\5_1_668296810.LOG 线程 =1 序列 =5
介质恢复完成, 用时: 00:00:06
完成 recover 于 17-10月-08

sql 语句: alter database open resetlogs

重新备份数据库,并删除以前备份。

RMAN> run
2> {
3> delete noprompt  backup;
4> delete noprompt copy;
5> backup database format='d:\1017\%d_%s_%p.bak';
6> sql 'alter system archive log current';
7> }

11.3.4 基于备份控制文件恢复

失败信息:

SQL> drop tablespace user07 including contents;

表空间已删除。

SQL> select * from user07;
select * from user07
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在

alert_DEMO.log 文件

Sat Oct 18 09:26:45 2008
drop tablespace user07 including contents
Sat Oct 18 09:26:46 2008
Starting control autobackup
Sat Oct 18 09:26:48 2008
..........................

Control autobackup written to DISK device
    handle 'D:\BACKUP\DEMO_C-3408444956-20081018-06.CTL'
Completed: drop tablespace user07 including contents

恢复:

C:\>set nls_date_format=yyyy-mm-dd hh24:mi:ss

C:\>rman target sys/orcl@demo nocatalog

恢复管理器: Release 10.2.0.1.0 - Production on 星期日 10月 19 10:25:03 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库 (未启动)

RMAN>  startup force nomount

Oracle 实例已启动

系统全局区域总计     167772160 字节

Fixed Size                     1247900 字节
Variable Size                 79693156 字节
Database Buffers              83886080 字节
Redo Buffers                   2945024 字节

RMAN> set dbid=3408444956;

正在执行命令: SET DBID

RMAN> restore controlfile from 'd:\backup\DEMO_C-3408444956-20081018-05.CTL';

启动 restore 于 2008-10-19 10:25:35
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04
输出文件名=D:\DEMO\CONTROL01.CTL
输出文件名=C:\DEMO\CONTROL02.CTL
完成 restore 于 2008-10-19 10:25:39

RMAN> alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

RMAN> run
2> {
3> set until time='2008-10-18 09:26:44';
4> restore database;
5> recover database;
6> sql 'alter database open resetlogs';
7> }

正在执行命令: SET until clause

启动 restore 于 2008-10-19 10:26:09
启动 implicit crosscheck backup 于 2008-10-19 10:26:09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
已交叉检验的 128 对象
完成 implicit crosscheck backup 于 2008-10-19 10:26:17

启动 implicit crosscheck copy 于 2008-10-19 10:26:17
使用通道 ORA_DISK_1
已交叉检验的 15 对象
完成 implicit crosscheck copy 于 2008-10-19 10:26:19

搜索恢复区域中的所有文件
正在编制文件目录...
没有为文件编制目录

使用通道 ORA_DISK_1

创建数据文件 fno = 5 名称 = E:\USER07.DBF
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\DEMO\SYSTEM01.DBF
正将数据文件00002恢复到D:\DEMO\UNDOTBS01.DBF
正将数据文件00003恢复到D:\DEMO\SYSAUX01.DBF
正将数据文件00004恢复到C:\DEMO\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\1017\DEMO_149_1.BAK
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\1017\DEMO_149_1.BAK 标记 = TAG20081017T222353
通道 ORA_DISK_1: 正在读取备份段 D:\1017\DEMO_149_2.BAK
通道 ORA_DISK_1: 已恢复备份段 2
段句柄 = D:\1017\DEMO_149_2.BAK 标记 = TAG20081017T222353
通道 ORA_DISK_1: 恢复完成, 用时: 00:02:10
完成 restore 于 2008-10-19 10:28:34

启动 recover 于 2008-10-19 10:28:35
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 C:\DEMO\ARCHIVE\1_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 2 已作为文件 C:\DEMO\ARCHIVE\2_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 C:\DEMO\ARCHIVE\3_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 C:\DEMO\ARCHIVE\4_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 C:\DEMO\ARCHIVE\5_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 C:\DEMO\ARCHIVE\6_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 7 已作为文件 C:\DEMO\ARCHIVE\7_1_668384006.LOG 存在于磁盘上
存档日志线程 1 序列 9 已作为文件 C:\DEMO\REDO02_2.LOG 存在于磁盘上
存档日志线程 1 序列 10 已作为文件 C:\DEMO\REDO03_2.LOG 存在于磁盘上
存档日志线程 1 序列 11 已作为文件 D:\DEMO\REDO01.LOG 存在于磁盘上
存档日志文件名 =C:\DEMO\ARCHIVE\1_1_668384006.LOG 线程 =1 序列 =1
存档日志文件名 =C:\DEMO\ARCHIVE\2_1_668384006.LOG 线程 =1 序列 =2
存档日志文件名 =C:\DEMO\ARCHIVE\3_1_668384006.LOG 线程 =1 序列 =3
存档日志文件名 =C:\DEMO\ARCHIVE\4_1_668384006.LOG 线程 =1 序列 =4
存档日志文件名 =C:\DEMO\ARCHIVE\5_1_668384006.LOG 线程 =1 序列 =5
存档日志文件名 =C:\DEMO\ARCHIVE\6_1_668384006.LOG 线程 =1 序列 =6
存档日志文件名 =C:\DEMO\ARCHIVE\7_1_668384006.LOG 线程 =1 序列 =7
存档日志文件名 =C:\DEMO\ARCHIVE\8_1_668384006.LOG 线程 =1 序列 =8
存档日志文件名 =C:\DEMO\REDO02_2.LOG 线程 =1 序列 =9
存档日志文件名 =C:\DEMO\REDO03_2.LOG 线程 =1 序列 =10
存档日志文件名 =D:\DEMO\REDO01.LOG 线程 =1 序列 =11
介质恢复完成, 用时: 00:00:11
完成 recover 于 2008-10-19 10:28:57

sql 语句: alter database open resetlogs

重新备份数据库,并删除以前备份。

RMAN> run
2> {
3> delete noprompt copy;
4> delete noprompt backup;
5> backup database format='d:\backup\%d_%s_%p.bak';
6> sql 'alter system archive log current';
7> }

原文地址:https://www.cnblogs.com/datalife/p/1985464.html