RMAN异机恢复遭遇ORA-01547、ORA-01152、ORA-01110错误案例
测试环境:
操作系统 : Red Hat Enterprise Linux ES release 4 (Nahant Update 4) VMWARE
数据库 : Oracle Database 10g Release 10.2.0.4.0 - Production
简要介绍,一台服务器A位于虚拟机VMWARE上,由于测试需要,在VMWARE上克隆了该系统作为服务器B,过了一段时间,由于数据变更,需要将服务器A上的ORACLE数据库还原恢复到服务器B上。
案例介绍:
由 于这两台服务器的数据库实例名称相同、以及对应的环境基本一致(恢复目录相同,数据文件、控制文件都是一致),所以虽然是RMAN异机备份,但是这种异机 恢复相对而言比较简单,不需要修改实例名称、数据库名称、指定数据文件位置等等。一般来说,这种环境的恢复还原基本没啥问题。下面介绍操作过程以及解决方 法。
Step 1:通过FTP将对应的备份文件以及归档日志放置到相应的目录位置。
Step 2:还原数据库的spfile文件。
Step 3: 关闭数据库后,利用还原spfile的初始化文件启动数据库
Step 4: 恢复数据库控制文件。
Step 5: 将数据库启动到mount状态
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
Step 6: restore 数据库(中间太多数据文件restore,使用.....替代)
Step 7 : recover database
- RMAN> recover database;
- Starting recover at 02-APR-14
- using channel ORA_DISK_1
- starting media recovery
- Oracle Error:
- ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
- ORA-01152: file 1 was not restored from a sufficiently old backup
- ORA-01110: data file 1: '/u01/app/oracle/oradata/EPPS/system01.dbf'
- RMAN-00571: ===========================================================
- RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
- RMAN-00571: ===========================================================
- RMAN-03002: failure of recover command at 04/02/2014 12:03:29
- RMAN-06053: unable to perform media recovery because of missing log
- RMAN-06025: no backup of log thread 1 seq 76757 lowscn 14312652139 found to restore
- RMAN-06025: no backup of log thread 1 seq 76756 lowscn 14312646489 found to restore
- RMAN-06025: no backup of log thread 1 seq 76755 lowscn 14312646378 found to restore
- RMAN-06025: no backup of log thread 1 seq 76754 lowscn 14312646262 found to restore
- RMAN-06025: no backup of log thread 1 seq 76753 lowscn 14312644427 found to restore
- RMAN-06025: no backup of log thread 1 seq 76752 lowscn 14312642030 found to restore
- RMAN-06025: no backup of log thread 1 seq 76751 lowscn 14312640281 found to restore
- RMAN-06025: no backup of log thread 1 seq 76750 lowscn 14312638600 found to restore
- RMAN-06025: no backup of log thread 1 seq 76749 lowscn 14312637270 found to restore
- RMAN-06025: no backup of log thread 1 seq 76748 lowscn 14312636566 found to restore
- RMAN-06025: no backup of log thread 1 seq 76747 lowscn 14312635786 found to restore
- RMAN-06025: no backup of log thread 1 seq 76746 lowscn 14312634976 found to restore
- RMAN-06025: no backup of log thread 1 seq 76745 lowscn 14312634196 found to restore
- RMAN-06025: no backup of log thread 1 seq 76744 lowscn 14312633426 found to restore
- RMAN-06025: no backup of log thread 1 seq 76743 lowscn 14312632650 found to restore
- RMAN-06025: no backup of log thread 1 seq 76742 lowscn 14312631880 found to restore
- RMAN-06025: no backup of log thread 1 seq 76741 lowscn 14312631120 found to restore
- RMAN-06025: no backup of log thread 1 seq 76740 lowscn 14312630358 found to restore
- RMAN-06025: no backup of log thread 1 seq 76739 lowscn 14312629580 found to restore
- RMAN-06025: no backup of log thread 1 seq 76738 lowscn 14312628812 found to restore
- RMAN-06025: no backup of log thread 1 seq 76737 lowscn 14312628019 found to restore
- RMAN-06025: no backup of log thread 1 seq 76736 lowscn 14312627239 found to restore
- RMAN-06025: no backup of log thread 1 seq 76735 lowscn 14312626460 found to restore
- RMAN-06025: no backup of log thread 1 seq 76734 lowscn 14312625692 found to restore
- RMAN-06025: no backup of log thread 1 seq 76733 lowscn 14312624924 found to restore
- RMAN-06025: no backup of log thread 1 seq 76732 lowscn 14312624157 found to restore
- RMAN-06025: no backup of log thread 1 seq 76731 lowscn 14312623377 found to restore
- RMAN-06025: no backup of log thread 1 seq 76730 lowscn 14312622598 found to restore
- RMAN-06025: no backup of log thread 1 seq 76729 lowscn 14312621836 found to restore
- RMAN-06025: no backup of log thread 1 seq 76728 lowscn 14312621062 found to restore
- RMAN-06025: no backup of log thread 1 seq 76727 lowscn 14312620313 found to restore
- RMAN-06025: no backup of log thread 1 seq 76726 lowscn 14312618674 found to restore
- RMAN-06025: no backup of log thread 1 seq 76725 lowscn 14312607258 found to restore
- RMAN-06025: no backup of log thread 1 seq 76723 lowscn 14312598248 found to restore
- RMAN-06025: no backup of log thread 1 seq 76722 lowscn 14312595919 found to restore
- RMAN-06025: no backup of log thread 1 seq 76721 lowscn 14312593602 found to restore
- RMAN-06025: no backup of log thread 1 seq 76720 lowscn 14312591274 found to restore
- RMAN-06025: no backup of log thread 1 seq 76719 lowscn 14312588510 found to restore
- RMAN-06025: no backup of log thread 1 seq 76718 lowscn 14312585861 found to restore
- RMAN-06025: no backup of log thread 1 seq 76717 lowscn 14312583716 found to restore
- RMAN-06025: no backup of log thread 1 seq 76716 lowscn 14312581142 found to restore
- RMAN-06025: no backup of log thread 1 seq 76715 lowscn 14312578120 found to restore
- RMAN-06025: no backup of log thread 1 seq 76714 lowscn 14312575570 found to restore
- RMAN-06025: no backup of log thread 1 seq 76713 lowscn 14312572908 found to restore
- RMAN-06025: no backup of log thread 1 seq 76712 lowscn 14312569377 found to restore
- RMAN-06025: no backup of log thread 1 seq 76711 lowscn 14312200784 found to restore
- RMAN-06025: no backup of log thread 1 seq 76710 lowscn 14312113790 found to restore
- RMAN-06025: no backup of log thread 1 seq 76709 lowscn 14312070694 found to restore
- RMAN-06025: no backup of log thread 1 seq 76708 lowscn 14312069907 found to restore
- RMAN-06025: no backup of log thread 1 seq 76707 lowscn 14312069494 found to restore
- RMAN-06025: no backup of log thread 1 seq 76706 lowscn 14312042189 found to restore
- RMAN-06025: no backup of log thread 1 seq 76705 lowscn 14312014827 found to restore
- RMAN-06025: no backup of log thread 1 seq 76704 lowscn 14311999274 found to restore
- RMAN-06025: no backup of log thread 1 seq 76703 lowscn 14311967291 found to restore
- RMAN-06025: no backup of log thread 1 seq 76702 lowscn 14311962023 found to restore
- MAN-06025: no backup of log thre
- RMAN>
截图如下所示
关于ORA-01547的解释如下所示:
此错误的最可能的原因是执行不完全恢复前。忘记从一个足够旧的备份还原一个或 多个数据文件。
Step 8:
1: RMAN> alter database open resetlogs;
2:
3: RMAN-00571: ===========================================================
4:
5: RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
6:
7: RMAN-00571: ===========================================================
8:
9: RMAN-03002: failure of alter db command at 04/02/2014 12:04:53
10:
11: ORA-01152: file 1 was not restored from a sufficiently old backup
12:
13: ORA-01110: data file 1: '/u01/app/oracle/oradata/EPPS/system01.dbf'
14:
15: RMAN>
16:
17: RMAN> exit
关于open resetlogs选项,是指打开数据时,重置联机重做日志(online redo log),即将重做日志的sequence置零,为什么要重置重做日志呢?不完全恢复后,原来的联机重做日志(online redo log)里面包含的是未做恢复前的数据,而这些数据对于恢复后的数据库不再有效,所以数据库会要求在open之前先对联机重做日志(online redo log)的sequence置零。Resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,每次使用Resetlogs命 令的时候,SCN不会被重置,不过ORACLE会重置日志***,而且会重置联机重做日志内容(相当于把所有的联机日志重新“格式化”)。
解决方法
此时可以通过设置隐藏参数_allow_resetlogs_corruption之后,使数据库在Open过程中,跳过某些一致性检查,从而使数据库可能跳过不一致状态。操作步骤如下
- [[email protected] 2014_04_01]$ sqlplus / as sysdba
- SQL*Plus: Release 10.2.0.4.0 - Production on Wed Apr 2 12:05:57 2014
- Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
- Connected to:
- Oracle Database 10g Release 10.2.0.4.0 - Production
- SQL> create spfile from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initEPPS.ora';
- File created.
- SQL> shutdown immediate;
- ORA-01109: database not open
- Database dismounted.
- ORACLE instance shut down.
- SQL> startup mount;
- ORACLE instance started.
- Total System Global Area 1258291200 bytes
- Fixed Size 1267236 bytes
- Variable Size 822086108 bytes
- Database Buffers 419430400 bytes
- Redo Buffers 15507456 bytes
- Database mounted.
- SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
- System altered.
- SQL> recover database using backup controlfile until cancel;
- ORA-00279: change 14311145729 generated at 04/01/2014 08:57:48 needed for
- thread 1
- ORA-00289: suggestion :
- /u03/flash_recovery_area/EPPS/archivelog/2014_04_02/o1_mf_1_76627_%u_.arc
- ORA-00280: change 14311145729 for thread 1 is in sequence #76627
- Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
- cancel
- Media recovery cancelled.
- SQL> alter database open resetlogs;
- Database altered.
- SQL> select status from v$instance;
- STATUS
- ------------
- OPEN
截图如下所示
使用了隐藏参数_allow_resetlogs_corruption后,需要从参数文件(pfile或spfile中)移除隐藏参数,并对数据库进行导入导出比较好,不过此处都是测试数据库,重要性不是很高。在此忽略这些步骤。