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.最后,如果可能的话,完成一次完整的备份以确保数据完整性。