恢复案例三:恢复控制文件
全部控制文件丢失,需要从备份的控制文件恢复。恢复了控制文件后必须要进行RECOVER恢复然后用RESETLOGS参数打开数据库,我们也可以把控制文件恢复到其他位置(不是在参数文件中给出的控制文件位置)。本例假定没有使用恢复目录,我们将在以后介绍带有恢复目的RMAN备份如何恢复控制文件。如果没有恢复目录,用RMAN只能在NOMOUNT状态从备份中进行控制文件的恢复。
从自动备份控制文件恢复:
RMAN> configure controlfile autobackup on; |
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF; |
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON; |
已成功新的 RMAN 配置参数:
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE \SNCFROME.ORA'; # default
RMAN> backup database;
启动 backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NNNDF_TAG20070124T091006_2VFDHGYR_.BKP 标记=TAG20070124T091006 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
完成 backup 于 24-1月 -07
启动 Control File and SPFILE Autobackup 于 24-1月 -07段
handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_ 01_24\O1_MF_S_612695432_2VFDJ95V_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 24-1月 -07
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除所有的控制文件。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
ORA-00205: ?????????, ??????, ???????
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
RMAN> SET DBID 252956976;
正在执行命令: SET DBID
RMAN> restore controlfile from autobackup;
启动 restore 于 24-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
恢复区域目标: d:\oracle\product\10.2.0\flash_recovery_area
用于搜索的数据库名 (或数据库的唯一名称): ROME
通道 ORA_DISK_1: 在恢复区域中找到自动备份
通道 ORA_DISK_1: 已找到的自动备份:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
ROME\AUTOBACKUP\2007_01_24\O1_MF_S_612695432_2VFDJ95V_.BKP
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
完成 restore 于 24-1月 -07
RMAN> sql 'alter database mount';
sql 语句: alter database mount
释放的通道: ORA_DISK_1
RMAN> recover database;
启动 recover 于 24-1月 -07
启动 implicit crosscheck backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
已交叉检验的 21 对象
完成 implicit crosscheck backup 于 24-1月 -07
启动 implicit crosscheck copy 于 24-1月 -07
使用通道 ORA_DISK_1
已交叉检验的 1 对象
完成 implicit crosscheck copy 于 24-1月 -07
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_01_ 24\O1_MF_S_612714183_2VFYT8Y8_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L
OG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
1
介质恢复完成, 用时: 00:00:03
完成 recover 于 24-1月 -07
RMAN> sql 'alter database open resetlogs';
sql 语句: alter database open resetlogs
|
从包含控制文件的全库备份恢复:
RMAN> configure controlfile autobackup off;
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
已成功新的 RMAN 配置参数
RMAN> backup database;
启动 backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NNNDF_TAG20070124T152907_2VG2P400_.BKP 标记=TAG20070124T152907 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP 标记=TAG20070124T152907 注释=NONE 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 24-1月 -07
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除所有控制文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 15:37:54 2007
Copyright (c) 1982, 2005, . All rights reserved.
连接到目标数据库: rome (未装载)
RMAN> RESTORE CONTROLFILE FROM 'D:\oracle\product\10.2.0\flash_recovery_area\ ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';
启动 restore 于 24-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
完成 restore 于 24-1月 -07
RMAN> sql 'alter database mount';
sql 语句: alter database mount
释放的通道: ORA_DISK_1
RMAN> recover database;
启动 recover 于 24-1月 -07
启动 implicit crosscheck backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
已交叉检验的 24 对象
完成 implicit crosscheck backup 于 24-1月 -07
启动 implicit crosscheck copy 于 24-1月 -07
使用通道 ORA_DISK_1
已交叉检验的 1 对象
完成 implicit crosscheck copy 于 24-1月 -07
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L
OG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
1
介质恢复完成, 用时: 00:00:02
完成 recover 于 24-1月 -07
RMAN> sql 'alter database open resetlogs';
sql 语句: alter database open resetlogs
|
我们可以利用dbms_backup_restore包来恢复控制文件。
RMAN> backup database;
启动 backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=143 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记=TAG20070124T120738 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24 \O1_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP 标记=TAG20070124T120738 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 24-1月 -07
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除所有控制文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
SQL> DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:\oracle\product \10.2.0\oradata\rome\Control01.ctl');
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\oracle \product\10.2.0\flash_recovery_area\ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_ TAG20070124T120738_2VFPX6G5_.BKP', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10 exception when others then
11 dbms_output.put_line(sqlerrm);
12 END;
13 /
PL/SQL 过程已成功完成。
RMAN> restore database;
启动 restore 于 24-1月 -07
启动 implicit crosscheck backup 于 24-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
已交叉检验的 17 对象
完成 implicit crosscheck backup 于 24-1月 -07
启动 implicit crosscheck copy 于 24-1月 -07
使用通道 ORA_DISK_1
已交叉检验的 1 对象
完成 implicit crosscheck copy 于 24-1月 -07
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_ 24\O1_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
E\BACKUPSET\2007_01_24\O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_ 24\O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记 = TAG20070124T120738
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:45
完成 restore 于 24-1月 -07
RMAN> recover database;
启动 recover 于 24-1月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 26 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.
LOG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
26
介质恢复完成, 用时: 00:00:02
完成 recover 于 24-1月 -07
RMAN> sql 'alter database open resetlogs';
sql 语句: alter database open resetlogs
|
如果使用了 Recovery Area,RMAN自动执行CROSSCHECK检查控制文件中涉及到的备份文件和竞相拷贝(磁盘备份),如果是使用磁带备份RMAN不会自动进行CROSSCHECK检查,需要我们恢复完控制文件后执行下列检查操作:
RMAN> CROSSCHECK BACKUP DEVICE TYPE SBT; |
如果我们的RMAN是带有恢复目录的话,则在恢复的时候不用进行SET DBID操作,直接执行如下命令即可:
RMAN> restore controlfile; |
我们可以在数据库处于任何状态的情况下把控制文件恢复到参数文件中设置的控制文件以外的位置:
RMAN〉restore controlfile to ‘...’ from ‘...’; |
阅读(331) | 评论(0) | 转发(0) |