当前位置: 首页 > Oracle, oracle 11g > 正文

使用RMAN在单实例恢复ASM文件系统的两节点RAC时遇到ORA-38856,ORA-01547,ORA-01152错误

前几天朋友在单实例上恢复两节点的RAC时,遇到ORA-01547、ORA-01152错误。

RMAN> run{
2> sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
3> set until time  '2015-12-19 00:10:30';
4> recover database;
5> }

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause

Starting recover at 25-DEC-15
Starting implicit crosscheck backup at 25-DEC-15
released channel: ORA_DISK_1
released channel: ORA_DISK_2
released channel: ORA_DISK_3
released channel: ORA_DISK_4
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=35 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=34 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=33 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=32 devtype=DISK
Crosschecked 54 objects
Finished implicit crosscheck backup at 25-DEC-15

Starting implicit crosscheck copy at 25-DEC-15
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
Finished implicit crosscheck copy at 25-DEC-15

searching for all files in the recovery area
cataloging files...
no files cataloged

using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4

starting media recovery

archive log thread 1 sequence 8958 is already on disk as file /opt/oracle/base/OracleHomes/db10g/dbs/arch1_8958_825071076.dbf
archive log thread 2 sequence 7882 is already on disk as file /opt/oracle/base/OracleHomes/db10g/dbs/arch2_7882_825071076.dbf
archive log filename=/opt/oracle/base/OracleHomes/db10g/dbs/arch1_8958_825071076.dbf thread=1 sequence=8958
archive log filename=/opt/oracle/base/OracleHomes/db10g/dbs/arch2_7882_825071076.dbf thread=2 sequence=7882
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: '/fshare/nacdb/system.260.825071011'

media recovery complete, elapsed time: 00:00:04
Finished recover at 25-DEC-15

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 12/25/2015 14:20:34
ORA-01152: file 1 was not restored from a sufficiently old backup 
ORA-01110: data file 1: '/fshare/nacdb/system.260.825071011'

QQ远程协助发现,指定的恢复时间小于RMAN备份完成的时间,也就是说2015-12-19 00:10:30的时候,数据库的数据文件还没备份完成,通过查询备份文件的产生时间,发现最新的数据备份文件是2015-12-19 00:44:13,归档日志全部备份完的时间是2015-12-19 00:59:57,适当的调整恢复时间稍大于备份完成时间,恢复成功。

RMAN> run{
2> sql 'alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"';
3> set until time  '2015-12-19 09:48:05';
4> recover database;
5> }

sql statement: alter session set nls_date_format= "YYYY-MM-DD HH24:MI:SS"

executing command: SET until clause

Starting recover at 25-DEC-15
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4

starting media recovery

archive log thread 1 sequence 8958 is already on disk as file /opt/oracle/base/OracleHomes/db10g/dbs/arch1_8958_825071076.dbf
archive log thread 2 sequence 7882 is already on disk as file /opt/oracle/base/OracleHomes/db10g/dbs/arch2_7882_825071076.dbf
archive log filename=/opt/oracle/base/OracleHomes/db10g/dbs/arch2_7882_825071076.dbf thread=2 sequence=7882
archive log filename=/opt/oracle/base/OracleHomes/db10g/dbs/arch1_8958_825071076.dbf thread=1 sequence=8958

channel ORA_DISK_2: starting archive log restore to default destination
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_2: restoring archive log
archive log thread=2 sequence=7883
channel ORA_DISK_2: reading from backup piece /fshare/test1/backup_20151219_6356_1.arc
channel ORA_DISK_1: restoring archive log
archive log thread=2 sequence=7884
channel ORA_DISK_1: reading from backup piece /fshare/test1/backup_20151219_6359_1.arc
channel ORA_DISK_1: restored backup piece 1
piece handle=/fshare/test1/backup_20151219_6359_1.arc tag=TAG20151219T094825
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_2: restored backup piece 1
piece handle=/fshare/test1/backup_20151219_6356_1.arc tag=TAG20151219T094825
channel ORA_DISK_2: restore complete, elapsed time: 00:00:16
archive log filename=/archlog/NACDB/archivelog/2015_12_25/o1_mf_2_7883_c7ss0dtd_.arc thread=2 sequence=7883
channel default: deleting archive log(s)
archive log filename=/archlog/NACDB/archivelog/2015_12_25/o1_mf_2_7883_c7ss0dtd_.arc recid=16654 stamp=899390232
archive log filename=/archlog/NACDB/archivelog/2015_12_25/o1_mf_2_7884_c7ss0dyb_.arc thread=2 sequence=7884
channel default: deleting archive log(s)
archive log filename=/archlog/NACDB/archivelog/2015_12_25/o1_mf_2_7884_c7ss0dyb_.arc recid=16653 stamp=899390221
media recovery complete, elapsed time: 00:06:09
Finished recover at 25-DEC-15

恢复完成后,通过resetlogs的方式打开数据库,由于源库是ASM文件系统,新恢复的数据库是ext4文件系统,并且源库的redo log有10组,每组两个成员,如果要打开数据库,需要rename一些日志文件,这样很麻烦,所有,采用重建控制文件的方法来直接更改redo log的路径。

SQL> alter database backup controlfile to trace;

Database altered.

SQL> CREATE CONTROLFILE REUSE DATABASE "NACDB" RESETLOGS  NOARCHIVELOG
  2      MAXLOGFILES 192
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 1024
  5      MAXINSTANCES 32
  6      MAXLOGHISTORY 584
  7  LOGFILE
  8    GROUP 1 ('/fshare/nacdb/redo01.log'
  9    ) SIZE 50M,
 10    GROUP 2 ('/fshare/nacdb/redo02.log'
 11    ) SIZE 50M,
 12    GROUP 3 ('/fshare/nacdb/redo03.log'
 13    ) SIZE 50M,
 14    GROUP 4 ('/fshare/nacdb/redo04.log'
 15    ) SIZE 50M
 16  -- STANDBY LOGFILE
 17  DATAFILE
 18    '/fshare/nacdb/system.260.825071011',
 19    '/fshare/nacdb/undotbs1.265.825071011',
 20    '/fshare/nacdb/sysaux.269.825071011',
 21    '/fshare/nacdb/users.264.825071011',
 22    '/fshare/nacdb/undotbs2.261.825071097',
 23    '/fshare/nacdb/telnumber_bigfile.dbf',
 24    '/fshare/nacdb/extel_bigfile.dbf',
 25    '/fshare/nacdb/ext_bigfile.dbf',
 26    '/fshare/nacdb/tel_ind.dbf',
 27    '/fshare/nacdb/ext_ind.dbf',
 28    '/fshare/nacdb/extel_ind.dbf',
 29    '/fshare/nacdb/users.256.886287171',
 30    '/fshare/nacdb/users.408.891252945'
 31  CHARACTER SET ZHS16GBK
 32  ;

Control file created.

重建控制文件后,resetlog打开数据库时遇到ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled错误。

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled

如果不重建控制文件,直接rename redo log的方式,然后resetlogs方式打开数据库,基本不会遇到这个问题,即使遇到这个错误,一般只需要添加一组thread 2的redo log就可以解决,但是上文这种情况,通过添加thread 2 redo的方式基本解决不了。

SQL> alter database add logfile thread 2 group 5 '/fshare/nacdb/redo05.log' size 50M ;

Database altered.

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled

添加thread 2 redo后仍然无法打开数据库,这时就需要通过设置隐含参赛_no_recovery_through_resetlogs来跳过thread 2 redo的校验,即可成功打开数据库。

SQL> alter system set "_no_recovery_through_resetlogs"=TRUE;

System altered.

SQL> alter database open resetlogs;

Database altered.

 

本文固定链接: http://www.dbdream.com.cn/2016/01/%e4%bd%bf%e7%94%a8rman%e5%9c%a8%e5%8d%95%e5%ae%9e%e4%be%8b%e6%81%a2%e5%a4%8dasm%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f%e7%9a%84%e4%b8%a4%e8%8a%82%e7%82%b9rac%e6%97%b6%e9%81%87%e5%88%b0ora-38856ora-01547/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2016年01月08日发表在 Oracle, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 使用RMAN在单实例恢复ASM文件系统的两节点RAC时遇到ORA-38856,ORA-01547,ORA-01152错误 | 信春哥,系统稳,闭眼上线不回滚!
关键字: , , ,

使用RMAN在单实例恢复ASM文件系统的两节点RAC时遇到ORA-38856,ORA-01547,ORA-01152错误:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter