【SAP-BASIS】BR0398E DBVERIFY has detected corrupt blocks

问题&Basis解答:

从报错信息来看,是数据库数据文件/oracle/DEV/sapdata2/dev_10/dev.data10有坏块。

由于SAP数据是有一致性要求的,所以一般建议从以前好的备份中恢复这个数据文件,然后滚数据库归档日志到当前状态。或者直接恢复整个数据库,滚数据库归档日志到最近状态。

恢复单个文件的方法是:

先将当前有问题的数据文件offline,然后移个位置,再用下面的命令恢复单个文件

是 brrestore -b bddcbjcq.afd -m 59=/oracle/DEV/sapdata2/dev_10/dev.data10

说明:59是文件id,可以在DB02中看到,=后面是恢复到什么目录

然后再将文件在数据库中online,ALTER DATABASE DATAFILE '/oracle/DEV/sapdata2/dev_10/dev.data10' ONLINE;

然后recover数据文件 RECOVER DATAFILE '/oracle/DEV/sapdata2/dev_10/dev.data10';


恢复整个数据库的方法是:

brrestore -b bddcbjcq.afd -m full

SQL>startup mount
SQL>recover database until cancel using backup controlfile;
逐个确认待恢复的archived redolog,待最后一个完成后,键入cancel,使恢复结束
SQL>alter database open resetlogs;

以上两种方法,都需要有之前好的数据库备份,以及到现在为止完整的数据库归档日志。如果没有这些就只能从测试机做数据库刷新到开发机了。


解决方法:

修改了数据库为非归档模式,按如下操作步骤;

alter tablespace psapdev640 offline;

alter database datafile '/oracle/DEV/sapdata3/dev640_10/dev640.data10' offline;

mv /oracle/DEV/sapdata3/dev640_10/dev640.data10 /oracle/DEV/sapbackup/

brrestore -b bevfqywn.afd -m 50=/oracle/DEV/sapdata3/dev640_10/

RECOVER DATAFILE '/oracle/DEV/sapdata3/dev640_10/dev640.data10';

ALTER DATABASE DATAFILE '/oracle/DEV/sapdata3/dev640_10/dev640.data10' ONLINE;

alter tablespace psapdev640 online;

select name,status from v$datafile;

验证结论:

参考资料

http://docs.oracle.com/cd/E11882_01/server.112/e22490/dbverify.htm#SUTIL1539
https://oracle-base.com/articles/misc/detect-and-correct-corruption
请使用浏览器的分享功能分享到微信等