Maison >base de données >tutoriel mysql > oracle 11.2 控制文件还原
******************************************1.控制文件备份分类******************************************通常分为:1)在线镜像备份2)结构备份3)历史备份恢复
****************************************** 1.控制文件备份分类 ****************************************** 通常分为: 1)在线镜像备份 2)结构备份 3)历史备份 恢复时优先考虑镜像备份. 除了镜像备份外其它备份恢复主要按照下面的步骤: 步骤1:从备份中还原控制文件 步骤2:利用重做日志介质恢复数据库 步骤3:重设日志打开数据库 利用resetlogs命令打开数据库的原因是recover命令只能修复控制文件中的 数据库物理结构信息无法修改控制文件中的当前重做日志的序列号等信息, 当你recover命令完成后,控制文件中当前日志序列号还是备份时的序列号, 国语陈旧. ****************************************** 2.recover database几种区别 ****************************************** 第一类:SQL>recover database; 该命令用来对所有数据文件进行恢复,并且只能使用保存 在文件系统上的归档日志和在线日志。使用该命令的前提 是控制文件不能是还原或重建得来的,即控制文件必须 是在线的或损坏镜像还原的. 第二类:SQL>recover database using backup controfile; 该命令用来对所有数据文件以及控制文件进行恢复,并且只能使用保存 在文件系统上的归档日志和在线日志。 第三类:RMAN>recover database; 该命令用来对所有数据文件以及控制文件进行恢复,并且可以使用 增量备份、备份中的和文件系统上的归档日志以及文件系统上的在线日志. ****************************************** 3.利用在线镜像恢复 ****************************************** /*** 基本步骤: 1)startup nomount 2)查看日志了解控制文件损坏情况 3)利用系统命令拷贝或手动拷贝将损坏的控制文件替换 4)alter database mount 5)alter database open *****/ 一、控制文件损坏的恢复(一个文件) 损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个, 而且所有的控制文件都互为镜像,只要拷贝一个好的控制文件替换坏的控制文件就可以了。 --方法1:使用spfile多路复用 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string E:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, E:\APP\ADMI NISTRATOR\FLASH_RECOVERY_AREA\ ORCL\CONTROL02.CTL SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 host del E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL SQL> startup ORACLE 例程已经启动。 Total System Global Area 599785472 bytes Fixed Size 1250380 bytes Variable Size 171969460 bytes Database Buffers 423624704 bytes Redo Buffers 2940928 bytes ORA-00205: ?????????, ??????, ??????? SQL> shutdown immediate; ORA-01507: ?????? ORACLE 例程已经关闭。 SQL> host copy E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL 已复制 1 个文件。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 599785472 bytes Fixed Size 1250380 bytes Variable Size 171969460 bytes Database Buffers 423624704 bytes Redo Buffers 2940928 bytes 数据库装载完毕。 数据库已经打开。 SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string E:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, E:\APP\ADMI NISTRATOR\FLASH_RECOVERY_AREA\ ORCL\CONTROL02.CTL --方法2: 通过初始化文件修改设置多路控制文件复制 1)直接修改服务器参数文件. create pfile='e:\initorcl.ora' from spfile; 2_编辑修改e:\initorcl.ora文件. 修改control_files部分,将丢失的控制文件删除.如: *.control_files='E:\app\Administrator\oradata\orcl\control01.ctl', 'E:\app\Administrator\flash_recovery_area\orcl\control02.ctl' 修改为: *.control_files='E:\app\Administrator\oradata\orcl\control01.ctl' 3)启动 startup pfile='e:\initorcl.ora'; 说明: 1、损失单个控制文件是比较简单的,因为数据库中所有的控制文件都是镜像的,只需要简 单的拷贝一个好的就可以了 2、建议镜像控制文件在不同的磁盘上 3、建议多做控制文件的备份,长期保留一份由alter database backup control file to trace产生的控制文件的文本备份 ****************************************** 4.利用手动备份还原 ****************************************** /***基本步骤: 1)startup nomount 2)restore controlfile from autobackup; 3)alter database mount 4)recover database命令恢复数据库 5)alter database open resetlogs *****/ 案例演示: --(1).利用手动备份控制文件和参数文件 run { configure controlfile autobackup on; configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F'; allocate channel c1 device type disk format 'E:\backup\data\bak_%u'; allocate channel c2 device type disk format 'E:\backup\data\bak_%u'; backup tablespace users ; release channel c1; release channel c2; } allocate channel for maintenance device type disk; 旧的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP OFF; 新的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP ON; 已成功存储新的 RMAN 配置参数 旧的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\bak_%F'; 新的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F'; 已成功存储新的 RMAN 配置参数 释放的通道: ORA_DISK_1 分配的通道: c1 通道 c1: SID=202 设备类型=DISK 分配的通道: c2 通道 c2: SID=201 设备类型=DISK 启动 backup 于 2013-07-23 14:52:39 通道 c1: 正在启动全部数据文件备份集 通道 c1: 正在指定备份集内的数据文件 输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF 通道 c1: 正在启动段 1 于 2013-07-23 14:52:41 通道 c1: 已完成段 1 于 2013-07-23 14:52:42 段句柄=E:\BACKUP\DATA\BAK_89OFFHPP 标记=TAG20130723T145241 注释=NONE 通道 c1: 备份集已完成, 经过时间:00:00:01 完成 backup 于 2013-07-23 14:52:42 启动 Control File and SPFILE Autobackup 于 2013-07-23 14:52:42 段 handle=E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-08 comment=NONE 完成 Control File and SPFILE Autobackup 于 2013-07-23 14:52:45 释放的通道: c1 释放的通道: c2 RMAN> allocate channel for maintenance device type disk; 分配的通道: ORA_MAINT_DISK_6 通道 ORA_MAINT_DISK_6: SID=202 设备类型=DISK --(2).模拟删除控制文件 SQL> show parameters control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string F:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, F:\APP\ADMI NISTRATOR\ORADATA\ORCL\CONTROL 02.CTL, F:\APP\ADMINISTRATOR\O RADATA\ORCL\CONTROL03.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL --(3)启动数据库,查看错误日志 SQL> startup ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes ORA-00205: ?????????, ??????, ??????? F:\app\Administrator\diag\rdbms\orcl\orcl\trace Tue Jul 23 14:58:29 2013 ALTER DATABASE MOUNT ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-205 signalled during: ALTER DATABASE MOUNT... Tue Jul 23 14:58:29 2013 Checker run found 3 new persistent data failures ---(4).利用手动备份恢复 C:\>rman target / 恢复管理器: Release 11.2.0.3.0 - Production on 星期二 7月 23 15:02:11 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) /****************************常见错误*************************************** --由于控制文件丢失,香港服务器,未装载数据库.所以不能查询备份情况 RMAN> list backup of controlfile; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败 ORA-01507: 未装载数据库 ---备份为备份到快速恢复区,所以不能找到备份 RMAN> restore controlfile from autobackup; 启动 restore 于 2013-07-23 15:03:40 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 恢复区目标: F:\arch 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP 由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败 RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段 **********************************************************************/ RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-08'; 启动 restore 于 2013-07-23 15:06:07 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在还原控制文件 通道 ORA_DISK_1: 还原完成, 用时: 00:00:02 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 2013-07-23 15:06:09 RMAN> alter database mount; 数据库已装载 释放的通道: ORA_DISK_1 RMAN> recover database; 启动 recover 于 2013-07-23 15:11:35 启动 implicit crosscheck backup 于 2013-07-23 15:11:35 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 已交叉检验的 1 对象 完成 implicit crosscheck backup 于 2013-07-23 15:11:37 启动 implicit crosscheck copy 于 2013-07-23 15:11:37 使用通道 ORA_DISK_1 完成 implicit crosscheck copy 于 2013-07-23 15:11:37 搜索恢复区中的所有文件 正在编制文件目录... 没有为文件编制目录 使用通道 ORA_DISK_1 正在开始介质的恢复 线程 1 序列 1055 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=1055 介质恢复完成, 用时: 00:00:02 完成 recover 于 2013-07-23 15:11:53 RMAN> alter database open resetlogs; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 ****************************************** 5.利用自动备份还原 ****************************************** /***基本步骤: 1)startup nomount 2)restore controlfile from autobackup; 3)alter database mount 4)recover database命令恢复数据库 5)alter database open resetlogs *****/ 案例演示: --(1).利用自动备份控制文件和参数文件 run { configure controlfile autobackup on; configure CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE type disk clear; allocate channel c1 device type disk format 'E:\backup\data\bak_%u'; allocate channel c2 device type disk format 'E:\backup\data\bak_%u'; backup tablespace users ; release channel c1; release channel c2; } allocate channel for maintenance device type disk; 旧的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP ON; 新的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP ON; 已成功存储新的 RMAN 配置参数 RMAN 配置参数已成功重置为默认值 释放的通道: ORA_DISK_1 分配的通道: c1 通道 c1: SID=129 设备类型=DISK 分配的通道: c2 通道 c2: SID=198 设备类型=DISK 启动 backup 于 2013-07-23 15:54:44 通道 c1: 正在启动全部数据文件备份集 通道 c1: 正在指定备份集内的数据文件 输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF 通道 c1: 正在启动段 1 于 2013-07-23 15:54:44 通道 c1: 已完成段 1 于 2013-07-23 15:54:45 段句柄=E:\BACKUP\DATA\BAK_8DOFFLE4 标记=TAG20130723T155444 注释=NONE 通道 c1: 备份集已完成, 经过时间:00:00:01 完成 backup 于 2013-07-23 15:54:45 启动 Control File and SPFILE Autobackup 于 2013-07-23 15:54:45 段 handle=F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP --备份位置 comment=NONE 完成 Control File and SPFILE Autobackup 于 2013-07-23 15:54:49 释放的通道: c1 释放的通道: c2 RMAN> allocate channel for maintenance device type disk; 分配的通道: ORA_MAINT_DISK_1 通道 ORA_MAINT_DISK_1: SID=129 设备类型=DISK RMAN> SHOW CONTROLFILE AUTOBACKUP FORMAT; --查看autobackup位置 db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default --(2).模拟删除控制文件 shutdown immediate; SQL> show parameters control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string F:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, F:\APP\ADMI NISTRATOR\ORADATA\ORCL\CONTROL 02.CTL, F:\APP\ADMINISTRATOR\O RADATA\ORCL\CONTROL03.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL --(3)启动数据库,查看错误日志 SQL> startup ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes ORA-00205: ?????????, ??????, ??????? F:\app\Administrator\diag\rdbms\orcl\orcl\trace Tue Jul 23 14:58:29 2013 ALTER DATABASE MOUNT ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-00210: cannot open the specified control file ORA-00202: control file: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL' ORA-27041: unable to open file OSD-04002: 无法打开文件 O/S-Error: (OS 2) 系统找不到指定的文件。 ORA-205 signalled during: ALTER DATABASE MOUNT... Tue Jul 23 14:58:29 2013 Checker run found 3 new persistent data failures ---(4).利用自动备份恢复 C:\>rman target / 恢复管理器: Release 11.2.0.3.0 - Production on 星期二 7月 23 15:02:11 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) /****************************常见错误*************************************** --由于控制文件丢失,香港虚拟主机,未装载数据库.所以不能查询备份情况 RMAN> list backup of controlfile; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败 ORA-01507: 未装载数据库 **********************************************************************/ RMAN> restore controlfile from autobackup; 启动 restore 于 2013-07-23 16:23:46 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 恢复区目标: F:\arch 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区中找到 AUTOBACKUP F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP 通道 ORA_DISK_1: 正在从 AUTOBACKUP F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 还原控制文件 通道 ORA_DISK_1: 从 AUTOBACKUP 还原控制文件已完成 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 2013-07-23 16:23:47 RMAN> alter database mount; 数据库已装载 释放的通道: ORA_DISK_1 RMAN> recover database; 启动 recover 于 2013-07-23 16:25:39 启动 implicit crosscheck backup 于 2013-07-23 16:25:39 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 已交叉检验的 1 对象 完成 implicit crosscheck backup 于 2013-07-23 16:25:40 启动 implicit crosscheck copy 于 2013-07-23 16:25:40 使用通道 ORA_DISK_1 完成 implicit crosscheck copy 于 2013-07-23 16:25:41 搜索恢复区中的所有文件 正在编制文件目录... 目录编制完毕 已列入目录的文件的列表 ======================= 文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 使用通道 ORA_DISK_1 正在开始介质的恢复 线程 1 序列 1 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上 线程 1 序列 2 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=2 介质恢复完成, 用时: 00:00:03 完成 recover 于 2013-07-23 16:25:58 RMAN> alter database open resetlogs; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 ****************************************** 6.利用历史备份还原 ****************************************** -----6.1自动修复不一致 /********基本步骤: 1)startup nomount 2)restore controlfile from ''; 3)alter database mount 4)recover database命令恢复数据库 5)alter database open resetlogs *********/ 案例演示: --(1).利用手动备份控制文件和参数文件 run { configure controlfile autobackup on; configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F'; allocate channel c1 device type disk format 'E:\backup\data\bak_%u'; allocate channel c2 device type disk format 'E:\backup\data\bak_%u'; backup tablespace users ; release channel c1; release channel c2; } allocate channel for maintenance device type disk; configure controlfile autobackup off; --(2).新建一个表空间 SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF create tablespace test datafile 'F:\app\administrator\oradata\orcl\test.dbf' size 100m autoextend on next 10m maxsize unlimited extent management local autoallocate segment space management auto; SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF --已经存在test F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF --(3).模拟删除控制文件 SQL> show parameters control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string F:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, F:\APP\ADMI NISTRATOR\ORADATA\ORCL\CONTROL 02.CTL, F:\APP\ADMINISTRATOR\O RADATA\ORCL\CONTROL03.CTL shutdown immediate; host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL --(3)启动数据库,查看错误日志 SQL> startup ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes ORA-00205: ?????????, ??????, ??????? ---(4).利用手动备份恢复 C:\>rman target / 恢复管理器: Release 11.2.0.3.0 - Production on 星期二 7月 23 17:11:51 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) /****************************常见错误*************************************** --由于控制文件丢失,未装载数据库.所以不能查询备份情况 RMAN> list backup of controlfile; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败 ORA-01507: 未装载数据库 ---备份为备份到快速恢复区,服务器空间,所以不能找到备份 RMAN> restore controlfile from autobackup; 启动 restore 于 2013-07-23 15:03:40 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 恢复区目标: F:\arch 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP 由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败 RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段 **********************************************************************/ RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0C'; 启动 restore 于 2013-07-23 17:13:57 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 通道 ORA_DISK_1: 正在还原控制文件 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 2013-07-23 17:13:59 RMAN> alter database mount; SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF ---还原的控制文件中没有新建的表空间TEST. RMAN> recover database; 启动 recover 于 2013-07-23 17:16:22 启动 implicit crosscheck backup 于 2013-07-23 17:16:22 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 已交叉检验的 1 对象 完成 implicit crosscheck backup 于 2013-07-23 17:16:24 启动 implicit crosscheck copy 于 2013-07-23 17:16:24 使用通道 ORA_DISK_1 完成 implicit crosscheck copy 于 2013-07-23 17:16:24 搜索恢复区中的所有文件 正在编制文件目录... 目录编制完毕 已列入目录的文件的列表 ======================= 文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 使用通道 ORA_DISK_1 正在开始介质的恢复 线程 1 序列 1 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1 创建数据文件, 文件号 = 5 名称 = F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF --新建了文件TEST 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=1 介质恢复完成, 用时: 00:00:03 完成 recover 于 2013-07-23 17:16:36 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF --TEST出现了 F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF RMAN> alter database open resetlogs; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 SQL> alter system switch logfile; 系统已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 2 当前日志序列 2 -----6.2手动修复不一致 /********基本步骤: 1)startup nomount 2)restore controlfile from ''; 3)alter database mount 4)recover database命令恢复数据库 5)alter database open resetlogs *********/ 案例演示: --(1).利用手动备份控制文件和参数文件 run { configure controlfile autobackup on; configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F'; allocate channel c1 device type disk format 'E:\backup\data\bak_%u'; allocate channel c2 device type disk format 'E:\backup\data\bak_%u'; backup tablespace users ; release channel c1; release channel c2; } allocate channel for maintenance device type disk; 旧的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP ON; 新的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP ON; 已成功存储新的 RMAN 配置参数 旧的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F'; 新的 RMAN 配置参数: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:\backup\controlfile\bak_%F'; 已成功存储新的 RMAN 配置参数 释放的通道: ORA_DISK_1 分配的通道: c1 通道 c1: SID=129 设备类型=DISK 分配的通道: c2 通道 c2: SID=197 设备类型=DISK 启动 backup 于 2013-07-23 17:24:49 通道 c1: 正在启动全部数据文件备份集 通道 c1: 正在指定备份集内的数据文件 输入数据文件: 文件号=00004 名称=F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF 通道 c1: 正在启动段 1 于 2013-07-23 17:24:49 通道 c1: 已完成段 1 于 2013-07-23 17:24:50 段句柄=E:\BACKUP\DATA\BAK_8LOFFQN1 标记=TAG20130723T172449 注释=NONE 通道 c1: 备份集已完成, 经过时间:00:00:01 完成 backup 于 2013-07-23 17:24:50 启动 Control File and SPFILE Autobackup 于 2013-07-23 17:24:50 段 handle=E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0E comment=NONE 完成 Control File and SPFILE Autobackup 于 2013-07-23 17:24:54 释放的通道: c1 释放的通道: c2 configure controlfile autobackup off; --(2).删除一个表空间 SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF drop tablespace test including contents and datafiles; SQL> select file_name from dba_data_files; FILE_NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF --(3).模拟删除控制文件 SQL> show parameters control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string F:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, F:\APP\ADMI NISTRATOR\ORADATA\ORCL\CONTROL 02.CTL, F:\APP\ADMINISTRATOR\O RADATA\ORCL\CONTROL03.CTL shutdown immediate; host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL --(3)启动数据库,查看错误日志 SQL> startup ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes ORA-00205: ?????????, ??????, ??????? ---(4).利用手动备份恢复 C:\>rman target / 恢复管理器: Release 11.2.0.3.0 - Production on 星期二 7月 23 17:31:04 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) /****************************常见错误*************************************** --由于控制文件丢失,未装载数据库.所以不能查询备份情况 RMAN> list backup of controlfile; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: list 命令 (在 07/23/2013 15:03:06 上) 失败 ORA-01507: 未装载数据库 ---备份为备份到快速恢复区,所以不能找到备份 RMAN> restore controlfile from autobackup; 启动 restore 于 2013-07-23 15:03:40 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 恢复区目标: F:\arch 用于搜索的数据库名 (或数据库的唯一名称): ORCL 通道 ORA_DISK_1: 在恢复区中没有找到 AUTOBACKUP 由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: restore 命令 (在 07/23/2013 15:03:41 上) 失败 RMAN-06172: 没有找到 AUTOBACKUP, 或者指定的句柄不是有效副本或片段 **********************************************************************/ RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130723-0E'; 启动 restore 于 2013-07-23 17:31:28 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 通道 ORA_DISK_1: 正在还原控制文件 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 2013-07-23 17:31:30 RMAN> alter database mount; SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF ---还原的控制文件中存在新建的表空间TEST. RMAN> recover database skip tablespace "TEST"; 启动 recover 于 2013-07-23 17:36:32 使用通道 ORA_DISK_1 执行: alter database datafile 5 offline 正在开始介质的恢复 线程 1 序列 2 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上 归档日志文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 线程=1 序列=2 介质恢复完成, 用时: 00:00:01 完成 recover 于 2013-07-23 17:36:39 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF ---表空间TEST消失了. RMAN> alter database open resetlogs; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 1 当前日志序列 1 SQL> alter system switch logfile; 系统已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 1 下一个存档日志序列 2 当前日志序列 2 ****************************************** 7.缺失归档日志 ****************************************** ----1.数据库开启归档 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 3 下一个存档日志序列 5 当前日志序列 5 ----2.新建测试表 create tablespace test datafile 'F:\app\administrator\oradata\orcl\test.dbf' size 100m autoextend on next 10m maxsize unlimited extent management local autoallocate segment space management auto; select file_name from dba_data_files; create table t1 ( sid number not null primary key, sname varchar2(20) )tablespace test; insert into t1 values(101,'A'); SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 4 下一个存档日志序列 6 当前日志序列 6 SQL> alter system switch logfile; 系统已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 5 下一个存档日志序列 7 当前日志序列 7 set linesize 300 col name for a60 select name,sequence#,archived,status from v$archived_log where status='A' and archived='YES' ; NAME SEQUENCE# ARC S ------------------------------------------------------------ ---------- --- - F:\ARCH\ARC0000000006_0821554663.0001 6 YES A ----3.利用手动备份控制文件和参数文件 run { configure controlfile autobackup on; configure controlfile autobackup format for device type disk to 'E:\backup\controlfile\bak_%F'; allocate channel c1 device type disk format 'E:\backup\data\bak_%u'; allocate channel c2 device type disk format 'E:\backup\data\bak_%u'; backup tablespace "TEST" ; release channel c1; release channel c2; } allocate channel for maintenance device type disk; RMAN> list backup of controlfile; 备份集列表 =================== BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ------------------- 240 Full 10.14M DISK 00:00:02 2013-07-24 11:16:17 BP 关键字: 245 状态: AVAILABLE 已压缩: NO 标记: TAG20130724T111615 段名:E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130724-01 包括的控制文件: Ckp SCN: 42235305 Ckp 时间: 2013-07-24 11:16:15 ----4.插入数据并归档 SQL> select * from t1; SID SNAME ---------- -------------------- 101 A insert into t1 values(102,'B'); SQL> commit; 提交完成。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 5 下一个存档日志序列 7 当前日志序列 7 alter system switch logfile; SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 6 下一个存档日志序列 8 当前日志序列 8 set linesize 300 col name for a60 select name,sequence#,archived,status from v$archived_log where status='A' and archived='YES' ; NAME SEQUENCE# ARC S ------------------------------------------------------------ ---------- --- - F:\ARCH\ARC0000000006_0821554663.0001 6 YES A F:\ARCH\ARC0000000007_0821554663.0001 7 YES A insert into t1 values(103,'C'); commit; alter system switch logfile; insert into t1 values(104,'D'); commit; alter system switch logfile; insert into t1 values(105,'E'); commit; alter system switch logfile; archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 f:\arch 最早的联机日志序列 9 下一个存档日志序列 11 当前日志序列 11 set linesize 300 col name for a60 select name,sequence#,archived,status from v$archived_log where status='A' and archived='YES' ; NAME SEQUENCE# ARC S ------------------------------------------------------------ ---------- --- - F:\ARCH\ARC0000000006_0821554663.0001 6 YES A F:\ARCH\ARC0000000007_0821554663.0001 7 YES A F:\ARCH\ARC0000000008_0821554663.0001 8 YES A F:\ARCH\ARC0000000009_0821554663.0001 9 YES A F:\ARCH\ARC0000000010_0821554663.0001 10 YES A ----5.模拟删除控制文件 SQL> show parameters control_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string F:\APP\ADMINISTRATOR\ORADATA\O RCL\CONTROL01.CTL, F:\APP\ADMI NISTRATOR\ORADATA\ORCL\CONTROL 02.CTL, F:\APP\ADMINISTRATOR\O RADATA\ORCL\CONTROL03.CTL shutdown immediate; host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL host del F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL ----6.启动数据库,查看错误日志 SQL> startup ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes ORA-00205: ?????????, ??????, ??????? -----7.利用手动备份恢复 --7.1 恢复控制文件 C:\>rman target / 恢复管理器: Release 11.2.0.3.0 - Production on 星期三 7月 24 12:36:11 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 已连接到目标数据库: ORCL (未装载) RMAN> restore controlfile from 'E:\BACKUP\CONTROLFILE\BAK_C-1320546556-20130724-01'; 启动 restore 于 2013-07-24 12:36:31 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 通道 ORA_DISK_1: 正在还原控制文件 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL 输出文件名=F:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL 完成 restore 于 2013-07-24 12:36:33 --7.2 装载数据库 RMAN> alter database mount; --7.3 恢复数据库 -7.3.1 recover database RMAN> recover database; 启动 recover 于 2013-07-24 12:37:50 启动 implicit crosscheck backup 于 2013-07-24 12:37:50 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 已交叉检验的 1 对象 完成 implicit crosscheck backup 于 2013-07-24 12:37:51 启动 implicit crosscheck copy 于 2013-07-24 12:37:51 使用通道 ORA_DISK_1 完成 implicit crosscheck copy 于 2013-07-24 12:37:51 搜索恢复区中的所有文件 正在编制文件目录... 目录编制完毕 已列入目录的文件的列表 ======================= 文件名: F:\ARCH\ORCL\AUTOBACKUP\2013_07_23\O1_MF_S_821548486_8YWFP782_.BKP 使用通道 ORA_DISK_1 正在开始介质的恢复 线程 1 序列 9 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG 存在于磁盘上 线程 1 序列 10 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 存在于磁盘上 线程 1 序列 11 的归档日志已作为文件 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG 存在于磁盘上 归档日志文件名=F:\ARCH\ARC0000000007_0821554663.0001 线程=1 序列=7 无法找到归档日志 归档日志线程=1 序列=8 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: recover 命令 (在 07/24/2013 12:37:58 上) 失败 RMAN-06054: 介质恢复正在请求未知的线程 1 序列 8 的归档日志以及起始 SCN 42235549 --提示需要8的归档日志 SQL> select sequence# from v$log where status='CURRENT'; SEQUENCE# ---------- 7 --当前还原的控制文件中看到的是日志7 /************ 提示需要8的归档日志,当前还原的控制文件中看到的是日志7, 只要让oracle放弃归档日志8,那么恢复就可以继续进行. ************/ --7.3.2备份控制文件到trace alter database backup controlfile to trace; select value from v$diag_info where; VALUE --------------------------------------------------------------------- F:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl\trace\orcl_ora_757704.trc 查看备份到追踪文件的控制文件 show parameter user_dump_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string F:\app\Administrator\diag\rdbms\orcl\orcl\trace select a.spid from v$process a, v$session b where a.addr=b.paddr and b.username='SYS'; ---内容如下: CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 584 LOGFILE GROUP 1 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF' CHARACTER SET ZHS16GBK ; --7.3.3先关闭数据库 SQL> shutdown immediate; ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 --7.3.4启动数据库到nomount状态 SQL> startup force nomount; ORACLE 例程已经启动。 Total System Global Area 2538741760 bytes Fixed Size 2257872 bytes Variable Size 1627393072 bytes Database Buffers 889192448 bytes Redo Buffers 19898368 bytes --7.3.5 新建控制文件 CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 584 LOGFILE GROUP 1 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE DATAFILE 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOG01.DBF', 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\JINRILOGINDEX01.DBF' CHARACTER SET ZHS16GBK ; SQL> select open_mode from v$database; OPEN_MODE -------------------- MOUNTED ---7.3.6 利用新建的控制文件recover database RMAN>recover database; 启动 recover 于 2013-07-24 12:52:16 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=129 设备类型=DISK 正在开始介质的恢复 无法找到归档日志 归档日志线程=1 序列=11 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: recover 命令 (在 07/24/2013 12:52:20 上) 失败 RMAN-06054: 介质恢复正在请求未知的线程 1 序列 11 的归档日志以及起始 SCN 42237323 SQL> select sequence#,status,group# from v$log; SEQUENCE# STATUS GROUP# ---------- ---------------- ---------- 10 INACTIVE 1 9 INACTIVE 3 11 CURRENT 2 --日志11在联机日志中 SQL>col member for a50 SQL>select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_ ---------- ------- ------- -------------------------------------------------- --- 2 STALE ONLINE F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG NO --需要的日志 1 STALE ONLINE F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG NO 3 STALE ONLINE F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG NO SQL> recover database using backup controlfile; ORA-00279: ?? 42237323 (? 07/24/2013 11:50:11 ??) ???? 1 ???? ORA-00289: ??: F:\ARCH\ARC0000000011_0821554663.0001 ORA-00280: ?? 42237323 (???? 1) ??? #11 ? 指定日志: {本文出自 “记录点滴!” 博客,请务必保留此出处