ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RMAN备份恢复之控制文件的恢复(二)

RMAN备份恢复之控制文件的恢复(二)

原创 Linux操作系统 作者:yangtingkun 时间:2007-07-23 00:00:00 0 删除 编辑

控制文件对于数据库来说至关重要,在数据库的恢复过程中,首先需要恢复初始化参数文件,然后就是控制文件的恢复。

RMAN采用CATALOG方式还是NOCATALOG方式,以及是否启用了AUTOBACKUP,决定了控制文件的恢复方法。

RMAN备份恢复之控制文件的恢复(一):http://yangtingkun.itpub.net/post/468/305766

这篇文章介绍NOCATALOG方式下通过CONTROLFILE AUTOBACKUP来恢复控制文件。


NOCATALOG方式下,如果控制文件的自动备份是打开的,那么控制文件丢失后,也可以方便的利用控制文件的自动备份进行恢复。

F:>sqlplus "/@test1 as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 7月 23 21:37:28 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


连接到:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host move F:oracleoradata est1control01.ctl F:oracleoradata est1control01.bak

SQL> host move F:oracleoradata est1control02.ctl F:oracleoradata est1control02.bak

SQL> host move F:oracleoradata est1control03.ctl F:oracleoradata est1control03.bak

SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production中断开

F:>

上面删除了控制文件,这个时候数据库已经无法打开了:

F:>sqlplus "/@test1 as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 7月 23 21:44:02 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 110173900 bytes
Fixed Size 454348 bytes
Variable Size 83886080 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00205: ?????????????????????


SQL> shutdown
ORA-01507: ??????


ORACLE 例程已经关闭。
SQL>
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production中断开

下面尝试使用RMAN恢复控制文件:

F:>rman target /@test1

恢复管理器: 版本9.2.0.4.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

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

RMAN> startup nomount

Oracle 例程已启动

系统全局区域总计 110173900 字节

Fixed Size 454348 字节
Variable Size 83886080 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节

RMAN> restore controlfile from autobackup;

启动 restore 于 23-7月 -07

正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/23/2007 22:04:17
RMAN-06495: must explicitly specify DBID with SET DBID command

RMAN> set dbid 974710760

正在执行命令: SET DBID

RMAN> show controlfile autobackup format;

RMAN 配置参数为:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

RMAN> set controlfile autobackup format for device type disk to 'f:oracleackup\%F';

正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT

RMAN> restore controlfile from autobackup;

启动 restore 于 23-7月 -07

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070723
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070722
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070721
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070720
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070719
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070718
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070717
通道 ORA_DISK_1: 没有找到 7 天之内的自动备份
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/23/2007 22:07:28
RMAN-06172: no autobackup found or specified handle is not a valid copy or piece


RMAN> restore controlfile from autobackup maxdays 20;

启动 restore 于 23-7月 -07

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070723
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070722
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070721
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070720
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070719
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070718
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070717
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070716
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070715
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070714
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070713
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070712
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070711
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070710
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070709
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20070708
通道 ORA_DISK_1: 已找到的自动备份: f:oracleackupc-974710760-20070708-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
正在复制控制文件
输出文件名=F:ORACLEORADATATEST1CONTROL01.CTL
输出文件名=F:ORACLEORADATATEST1CONTROL02.CTL
输出文件名=F:ORACLEORADATATEST1CONTROL03.CTL
完成 restore 于 23-7月 -07

RMAN> alter database mount;

数据库已加载

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 07/23/2007 22:08:44
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 07/23/2007 22:08:53
ORA-01152: 文件 1 没有从完备的旧备份中恢复
ORA-01110: 数据文件 1: 'F:ORACLEORADATATEST1SYSTEM01.DBF'

RMAN> recover database;

启动 recover 于 23-7月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 2 已作为文件 F:ORACLEORADATATEST1REDO01.LOG 存在于磁盘上

存档日志线程 1 序列 3 已作为文件 F:ORACLEORADATATEST1REDO02.LOG 存在于磁盘上

存档日志线程 1 序列 4 已作为文件 F:ORACLEORADATATEST1REDO03.LOG 存在于磁盘上

无法找到存档日志
存档日志线程 =1 序列=0
Oracle 错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从完备的旧备份中恢复
ORA-01110: 数据文件 1: 'F:ORACLEORADATATEST1SYSTEM01.DBF'

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/23/2007 22:09:17
RMAN-06054: media recovery requesting unknown log: thread 1 scn 58880369

RMAN> catalog archivelog 'F:oracleoradata est1ARCHIVELOGARC00001.001';

已编目的存档日志
存档日志文件名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 记录 ID=35 时间戳 =628726349

RMAN> recover database;

启动 recover 于 23-7月 -07
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 F:ORACLEORADATATEST1ARCHIVELOGARC00001.001
存在于磁盘上
存档日志线程 1 序列 2 已作为文件 F:ORACLEORADATATEST1REDO01.LOG 存在于磁盘上

存档日志线程 1 序列 3 已作为文件 F:ORACLEORADATATEST1REDO02.LOG 存在于磁盘上

存档日志线程 1 序列 4 已作为文件 F:ORACLEORADATATEST1REDO03.LOG 存在于磁盘上

存档日志文件名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 线程 =1 序列 =0
存档日志文件名 =F:ORACLEORADATATEST1REDO01.LOG 线程 =1 序列 =2
存档日志文件名 =F:ORACLEORADATATEST1REDO02.LOG 线程 =1 序列 =3
存档日志文件名 =F:ORACLEORADATATEST1REDO03.LOG 线程 =1 序列 =4
完成介质的恢复
完成 recover 于 23-7月 -07

RMAN> alter database open resetlogs;

数据库已打开

RMAN>

上面碰到的第一个错误:RMAN-06495是由于没有设置DBID造成的,通过控制文件名称中包含的DBID信息设置DBID,并且根据控制文件的位置设置控制文件自动备份的目录和格式。

第二个错误:RMAN-06172是由于控制文件的生成日期早于恢复默认查询日期(7天),通过设置MAXDAYS来避免这个错误的产生。

第三个错误说明恢复了控制文件后,数据库必须以RESETLOGS方式打开。

第四个错误表示,由于恢复了以前备份的控制文件,目前数据库数据文件和控制文件不一致,因此必须要进行恢复。

最后一个错误是由于归档日志的产生晚于控制文件,因此控制文件中没有包括归档的信息,于是在恢复的过程中由于没有找到第一个归档信息,而导致恢复无法完成。通过CATALOG命令使得RMAN记录了归档信息后,恢复完成。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69359/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10486574