ORA-48104: read mismatch on blocks requested and returned, [string], [string]

文档解释

ORA-48104: read mismatch on blocks requested and returned, [string], [string]

Cause: There was a mismatch between the number of blocks requested for reading and the number of blocks actually returned.

Action: Check the file to make sure there are no partial blocks.

ORA-48104是Oracle的一个表空间/数据块失败错误。它指出请求的数据块和返回的数据块不匹配。

这意味着以下两个数据块文件中的一个或两个被替换,或者一个文件丢失或不正确:已发出请求的块,以及实际返回的块。

此错误可能是由以下造成的:

* 损坏的磁盘驱动器;

* 内存问题;

* 非正常关闭数据库;

* 背景进程受到系统故障影响;

* 数据文件受到磁盘程序的干扰;

* 数据库被重新启动而没有正确的文件头;

* 格式不正确的软件副本;

* 网络服务暴力破坏;

* 代理备份过程中的问题;

* 由于网络不活动而发生I/O超时;

一般处理方法及步骤

1. 通过诊断日志检查块来源文件(FNO)、块号(BNO)和失败原因,以及更多关于块不匹配的细节信息。

2. 检查错误日志,确定失败原因,并查看是否存在损坏的磁盘驱动器、OS损坏、内存问题等。

3. 执行系统检查,以确定是否存在问题的底层原因。如:检查OS日志文件,查看服务器是否 掉线等。

4. 针对硬件问题,确认数据库位于何处,重新校正硬件,重新配置相关设备,并重新挂载相关fs 。

5. 将块移动到其他位置。通过修复块使损坏的块被移动到另一个位置。简单来说,只要存在损坏的块,就可以尝试移动它们到一个新的位置上。

6. 使用数据库完整性检查脚本对所有数据文件进行前后处理比较,直到所有损坏块都被更正或移动。

7.最后,如果可能的话,完成一次完整的备份以确保数据完整性。

你可能感兴趣的