1.1. 丢失全部控制文件的恢复
1.1.1. 模拟控制文件丢失
RMAN> shutdown abort;
Oracle 例程已关闭
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:/>del D:/oracle92/test1/CONTROL*.CTL
C:/>dir D:/oracle92/test1/CONTROL*.CTL
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:/oracle92/test1 的目录
找不到文件
C:/>exit
主机命令完成
RMAN>
1.1.2. 设置ORACLE_SID
RMAN> exit;
恢复管理器完成。
C:/>
C:/>set ORACLE_SID=TEST1
C:/>ECHO ORACLE_SID
ORACLE_SID
C:/>
1.1.3. 登陆RMAN
C:/>rman
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN> connect target lunar/lunar@test1
已连接到目标数据库 (未启动)
RMAN> connect catalog rman/rman@rman
连接到恢复目录数据库
RMAN>
1.1.4. 在RMAN中设置DBID
使RMAN知道需要查找哪一个数据库的spfile
(必须在数据关闭的情况下设置DBID)
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN>
1.1.5. 将数据库启动到nomount状态
RMAN> startup nomount;
已连接到目标数据库 (未启动)
Oracle 例程已启动
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
RMAN>
1.1.6. 恢复控制文件
1.1.6.1. 使用恢复目录恢复
如果使用了恢复目录,可以简单的执行restore controlfile;
RMAN> restore controlfile;
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:/RMANTEST/C-910599446-20041007-00 tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL02.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL03.CTL
完成 restore 于 07-10月-04
RMAN>
1.1.6.2. 不使用恢复目录恢复(使用自动备份的控制文件恢复)
如果没有使用恢复目录,可以从指定的控制文件自动备份的路径恢复控制文件
RMAN> run{
2> set controlfile autobackup format for device type disk to
3> 'D:/RMANTEST/%F';
4> restore controlfile from autobackup;
5> }
正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:/RMANTEST/c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
正在复制控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL02.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL03.CTL
完成 restore 于 07-10月-04
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:/>dir D:/oracle92/test1/CONTROL*.CTL
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:/oracle92/test1 的目录
2004-10-07 15:18 1,630,208 CONTROL01.CTL
2004-10-07 15:18 1,630,208 CONTROL02.CTL
2004-10-07 15:18 1,630,208 CONTROL03.CTL
3 个文件 4,890,624 字节
0 个目录 10,527,322,112 可用字节
C:/>exit
主机命令完成
RMAN>
1.1.6.3. 析取控制文件
1.1.6.3.1. 从恢复目录中析取控制文件
在数据库打开的时候,可以析取控制文件,如下面的例子是从恢复目录中析取控制文件,并保存到d:/test_ctl.ora 。
RMAN> restore controlfile to 'd:/test_ctl.ora';
启动 restore 于 07-10月-04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=D:/TEST_CTL.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:/RMANTEST/C-910599446-20041007-00 tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 07-10月-04
RMAN>
1.1.6.3.2. 从自动备份的控制文件中析取控制文件
下面的例子是从自动备份的控制文件中,析取控制文件到的的d:/
RMAN> run{
2> set controlfile autobackup format for device type disk to
3> 'D:/RMANTEST/%F';
4> restore controlfile to 'd:/test_ctl.bak' from autobackup;
5> }
正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT
启动 restore 于 07-10月-04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:/RMANTEST/c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
完成 restore 于 07-10月-04
RMAN>
1.1.7. Mount数据库
RMAN> alter database mount;
数据库已加载
RMAN>
1.1.8. 恢复数据库
RMAN> recover database;
启动 recover 于 07-10月-04
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 16 已作为文件 D:/ORACLE92/TEST1/REDO03.LOG 存在于磁盘上
存档日志文件名 =D:/ORACLE92/TEST1/REDO03.LOG 线程 =1 序列 =16
完成介质的恢复
完成 recover 于 07-10月-04
RMAN>
1.1.9. Open resetlogs数据库
RMAN> alter database open resetlogs;
数据库已打开
在恢复目录中注册的数据库的新实体化
正在启动全部恢复目录的 resync
完成全部 resync
1.1.1. 模拟控制文件丢失
RMAN> shutdown abort;
Oracle 例程已关闭
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:/>del D:/oracle92/test1/CONTROL*.CTL
C:/>dir D:/oracle92/test1/CONTROL*.CTL
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:/oracle92/test1 的目录
找不到文件
C:/>exit
主机命令完成
RMAN>
1.1.2. 设置ORACLE_SID
RMAN> exit;
恢复管理器完成。
C:/>
C:/>set ORACLE_SID=TEST1
C:/>ECHO ORACLE_SID
ORACLE_SID
C:/>
1.1.3. 登陆RMAN
C:/>rman
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN> connect target lunar/lunar@test1
已连接到目标数据库 (未启动)
RMAN> connect catalog rman/rman@rman
连接到恢复目录数据库
RMAN>
1.1.4. 在RMAN中设置DBID
使RMAN知道需要查找哪一个数据库的spfile
(必须在数据关闭的情况下设置DBID)
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN>
1.1.5. 将数据库启动到nomount状态
RMAN> startup nomount;
已连接到目标数据库 (未启动)
Oracle 例程已启动
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
RMAN>
1.1.6. 恢复控制文件
1.1.6.1. 使用恢复目录恢复
如果使用了恢复目录,可以简单的执行restore controlfile;
RMAN> restore controlfile;
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:/RMANTEST/C-910599446-20041007-00 tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL02.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL03.CTL
完成 restore 于 07-10月-04
RMAN>
1.1.6.2. 不使用恢复目录恢复(使用自动备份的控制文件恢复)
如果没有使用恢复目录,可以从指定的控制文件自动备份的路径恢复控制文件
RMAN> run{
2> set controlfile autobackup format for device type disk to
3> 'D:/RMANTEST/%F';
4> restore controlfile from autobackup;
5> }
正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:/RMANTEST/c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
正在复制控制文件
输出文件名=D:/ORACLE92/TEST1/CONTROL01.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL02.CTL
输出文件名=D:/ORACLE92/TEST1/CONTROL03.CTL
完成 restore 于 07-10月-04
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:/>dir D:/oracle92/test1/CONTROL*.CTL
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:/oracle92/test1 的目录
2004-10-07 15:18 1,630,208 CONTROL01.CTL
2004-10-07 15:18 1,630,208 CONTROL02.CTL
2004-10-07 15:18 1,630,208 CONTROL03.CTL
3 个文件 4,890,624 字节
0 个目录 10,527,322,112 可用字节
C:/>exit
主机命令完成
RMAN>
1.1.6.3. 析取控制文件
1.1.6.3.1. 从恢复目录中析取控制文件
在数据库打开的时候,可以析取控制文件,如下面的例子是从恢复目录中析取控制文件,并保存到d:/test_ctl.ora 。
RMAN> restore controlfile to 'd:/test_ctl.ora';
启动 restore 于 07-10月-04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在恢复控制文件
输出文件名=D:/TEST_CTL.ORA
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=D:/RMANTEST/C-910599446-20041007-00 tag=null params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 07-10月-04
RMAN>
1.1.6.3.2. 从自动备份的控制文件中析取控制文件
下面的例子是从自动备份的控制文件中,析取控制文件到的的d:/
RMAN> run{
2> set controlfile autobackup format for device type disk to
3> 'D:/RMANTEST/%F';
4> restore controlfile to 'd:/test_ctl.bak' from autobackup;
5> }
正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT
启动 restore 于 07-10月-04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:/RMANTEST/c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
完成 restore 于 07-10月-04
RMAN>
1.1.7. Mount数据库
RMAN> alter database mount;
数据库已加载
RMAN>
1.1.8. 恢复数据库
RMAN> recover database;
启动 recover 于 07-10月-04
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 16 已作为文件 D:/ORACLE92/TEST1/REDO03.LOG 存在于磁盘上
存档日志文件名 =D:/ORACLE92/TEST1/REDO03.LOG 线程 =1 序列 =16
完成介质的恢复
完成 recover 于 07-10月-04
RMAN>
1.1.9. Open resetlogs数据库
RMAN> alter database open resetlogs;
数据库已打开
在恢复目录中注册的数据库的新实体化
正在启动全部恢复目录的 resync
完成全部 resync