欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

异机恢复后ORA-01152错误解决

程序员文章站 2022-06-12 12:04:03
...

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

其中的37833784是我们需要恢复的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目录下将看到37833784两个文件。

3.3 应用archivelog

RMAN> run{

2> allocate channel ch00 type disk;

3> set until sequence 3785 thread 1; 3785是需要恢复的最大号37841

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加密