1. 现象: 异机数据文件恢复成功后,执行最后一步打开数据库时报错。例如: SQL gt; alter database open resetlogs; 报错: O
1. 现象:
异机数据文件恢复成功后,执行最后一步打开数据库时报错。例如:
SQL > alter database open resetlogs;
报错:
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u02/Oracle/oradata/mingya/system01.dbf'
2. 原因:
造成这种报错的原因是因为controlfile里所记录的scn与datafile里的scn不一致,导致数据库启动时失败。
3. 解决
3.1 确定需要恢复的achivelog
将数据库启动到mount状态;
$ rman target / catalog rman/rman@catalog ;连接到RMAN
RMAN> recover database;
运行命令后,RMAN将会报错,在最后列出需要的archivelog;例如:
RMAN-06025: no backup of log thread 1 seq 3784 lowscn 82847939 found to restore
RMAN-06025: no backup of log thread 1 seq 3783 lowscn 82845664 found to restore
其中的3783、3784是我们需要恢复的archivelog。
3.2 从磁带库备份中恢复所需archivelog
RMAN> run {
2>set archivelog destination to '/u03/oracle/archivelog'; 该路径根据归档日志实际路径设置
3> allocate channel ch00 type 'SBT_TAPE';
4> send 'NB_ORA_SERV=BAKSERV,NB_ORA_CLIENT=HOSTA';
5> restore archivelog sequence between 3783 and 3784;
6> release channel ch00;
7> }
恢复成功后,在/u03/oracle/archivelog目录下将看到3783、3784两个文件。
3.3 应用archivelog
RMAN> run{
2> allocate channel ch00 type disk;
3> set until sequence 3785 thread 1; 3785是需要恢复的最大号3784+1
4> recover database;
5> release channel ch00;
6> }
3.4 打开数据库
RMAN> alter database open resetlogs;
至此,数据库可以正常打开。为使其他客户端能连接本数据库,最好重新创建监听listener.ora,,其他客户端重新配置连接文件tnsnames.ora。
4. 其他问题-ORA-19625错误解决
在测试机上恢复操作成功后,正常运行的生产主机用NBU进行备份时,可能出现以下错误:
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-03002: failure of backup command at 09/02/2009 02:21:47
ORA-19625: error identifying file /u03/oracle /archivelog/2009_08_31/1_3783_634497921.dbf
==== ended in error on Wed Sep 2 02:21:48 CST 2009 ====
这时需要进行以下操作修正:
登录正常运行的主机:
$ rman target / catalog rman/rman@catalog
RMAN> crosscheck archivelog all;
推荐阅读:
Oracle基础教程之通过RMAN复制数据库
RMAN备份策略制定参考内容
RMAN备份学习笔记
Oracle数据库备份加密 RMAN加密