O/S-Error: (OS 23) Data error (cyclic redundancy check)问题处理

RMAN-03002: backup plus archivelog 命令 (在 08/24/2015 03:31:00 上) 失败
ORA-19501: 文件 "XXXXXX.DBF", 块编号 335324 (块大小=8192) 上出现读取错误
ORA-27070: 异步读取/写入失败
OSD-04016: 异步 I/O 请求排队时出错。
O/S-Error: (OS 23) 数据错误(循环冗余检查)。

类似英文报错:
RMAN-03009: failure of backup command on ORA_DISK_4 channel at 12/27/2006 
19:34:55
ORA-19501: read error on file "\\.\ACTGINDX2", blockno 890881 (blocksize=8192)
ORA-27070: skgfdisp: async read/write failed
OSD-04016: Error queuing an asynchronous I/O request.
O/S-Error: (OS 23) Data error (cyclic redundancy check).

使用dd或者dbv检查数据文件完整性
dbv file=XXXX/XXXX.dbf blocksize=8192
dd if=XXXX/XXXX.dbf of=check.dbf bs=8192(此命令慎用!!)
检查数据文件是否损坏

检查报错的数据文件:
C:\Users\Administrator>dbv file=XXXX.DBF blocksize=8192

DBVERIFY: Release 11.2.0.4.0 - Production on 星期二 8月 25 11:20:22 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - 开始验证: FILE =XXXX.DBF

DBV-00600: 致命错误 - [28] [27070] [0] [0]

检查正常的数据文件:
C:\Users\Administrator>dbv file=xxxx.DBF blocksize=8192

DBVERIFY: Release 11.2.0.4.0 - Production on 星期二 8月 25 11:22:54 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - 开始验证: FILE = xxxxx.DBF

DBVERIFY - 验证完成

检查的页总数: 352000
处理的页总数 (数据): 168714
失败的页总数 (数据): 0
处理的页总数 (索引): 78722
失败的页总数 (索引): 0
处理的页总数 (其他): 1164
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 103400
标记为损坏的总页数: 0
流入的页总数: 0
加密的总页数        : 0
最高块 SCN            : 1102691533 (1473.1102691533)

根据报错信息查到相关表:

select owner,segment_name,partition_name from dba_extents where file_id=your_file_id and block_id<=335488 and block_id+blocks-1>=335488

对涉及到的表进行全表扫,并未出现报错信息:
SELECT /*+FULL(XXBC_ORDER_STACK_OUTPUT)*/ count(*) FROM XXBC_ORDER_STACK_OUTPUT
挺奇怪。

建议(慎用!!,先不要使用这种方法,风险太大):
首先对数据库全备。
备份完,如果有备份和归档可以:
select * from v$database_block_corruption;
确定坏块的文件id和块号,然后使用rman修复
RMAN>blockrecover datafile $file_id block $block_id;

Oracle处理方法:
1 看一下这个文件是否有其它的坏块(不加blocksize参数,逻辑查看): 
C:\Users\Administrator>dbv file=E:\APP\ADMINISTRATOR\ORADATA\TB5CWMS\TBBCD03.DBF 
DBVERIFY: Release 11.2.0.4.0 - Production on 星期三 8月 26 17:33:36 2015 
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 
DBVERIFY - 开始验证: FILE = E:\APP\ADMINISTRATOR\ORADATA\TB5CWMS\TBBCD03.DBF 
DBVERIFY - 验证完成 
检查的页总数: 390400 
处理的页总数 (数据): 154363 
失败的页总数 (数据): 0 
处理的页总数 (索引): 148171 
失败的页总数 (索引): 0 
处理的页总数 (其他): 1404 
处理的总页数 (段) : 0 
失败的总页数 (段) : 0 
空的页总数: 86462 
标记为损坏的总页数: 0 
流入的页总数: 0 
加密的总页数 : 0 
最高块 SCN : 1471212331 (1473.1471212331) 
2 联系OS管理员,检查磁盘; 
3 查看操作系统的日志,包括system和application的日志; 
4 查看数据库实例的完整的告警日志;

根据windows系统日志(查看方法:一、开始---控制面板---管理工具---事件查看器---系统日志;二、开始---运行---cmd---eventvwr---即可查看系统日志。)


查找到系统的坏块。
但是对表进行全表扫没有报错,说明涉及到的数据块可能已经cache到内存中,所以如果能尽快将涉及到的数据对象备份,理论上不会造成数据丢失。

但是考虑上次rman备份不一定会把所有坏块全部检查出,考虑使用如下方法检查出所有坏块。
RMAN> RUN 

SET MAXCORRUPT FOR DATAFILE 10 TO 2 <<<<<============= rman在备份的时候允许的最大坏块,这个格式表示在数据文件10上最多允许有2个坏块,如果超过2个坏块,Rman就会退出备 份 
backup datafile 10; 
.... 

处理思路:
根据扫描出的坏块,查找到数据对象,做备份,然后恢复。

时间: 2024-10-13 03:01:24

O/S-Error: (OS 23) Data error (cyclic redundancy check)问题处理的相关文章

Apache service named reported the following error(OS 10055)由于系统缓冲区空间不足或队列已满解决办法?

apache启动失败报错: The Apache service named reported the following error:>>> AH00451: no listening sockets available, shutting down . The Apache service named reported the following error:>>> (OS 10055)由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. : AH00073:

composer爆错:zlib_decode():data error

昨晚用nginx运行Yii的一个开源小项目,结果composer安装依赖一直报错,如下 Failed to decode response: zlib_decode(): data error 如果遇到要输入Token (hidden):的情况,请看这篇文:http://www.cnblogs.com/cxscode/p/7003831.html 不是请继续往下,,, 网上清一色推荐用  self-update,虽然对我的情况然并卵,但可以试一下,如下图,我的是最新版了,所以没有用. 继续往下,

如何解决:ERROR: the user data image is used by another emulator. aborting 的问题

问题概述: 在启动Android模拟器时出现以下错误,导致启动失败. ERROR: the user data image is used by another emulator. aborting. 原因: 系统判断你当前已经启动了另外一个emulator,可能是某些正常操作或异常退出造成的. 解决方法: 进入你avd目录下: 如:C:\Documents and Settings\Administrator\.android\avd\android2.3.avd 删除以lock结尾的文件夹.

Bug Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&amp;arch=x86_64&amp;repo=os&amp;infra=stock error was

yum -y install gcc 时候报bug: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 查明主要是DNS设置 原网络设置的为 8.8.8.8 改为最快的DNS即可 3. 再查看/etc/resolv.conf, 若还没有DNS地址则手动添加 # vi /etc/resolv.conf names

插入中文错误ERROR 1406 (22001): Data too long for column &#39;name&#39; at row 1

1.在导入数据前执行以下命令即可:set SESSION sql_mode=''; 通过设置sql_mode变量更改模式.linux下安装完mysql后,默认的sql-mode值是空,在这种情形下mysql执行的是一种不严格的检查,例如日期字段可以插入’0000-00-00 00:00:00’这样的值,还有如果要插入的字段长度超过列定义的长度,那么mysql不会终止操作,而是会自动截断后面的字符继续插入操作. 但是如果我们本意希望如果长度超过限制就报错,那么我们可以设置sql_mode为STRI

zlib_decode(): data error

使用composer 安装laravel 项目,执行composer create-project laravel/lumen --prefer-dist,命令报 [ErrorException]    zlib_decode(): data error 错. 解决办法:执行 composer self-update 即可 或者是网络问题,换成移动数据网络试一试.或者执行下面的指令: composer config -g repo.packagist composer https://packa

Composer 安装 zlib_decode(): data error 错误

1.composer 安装一个组件(composer require topthink/think-worker) 报错如下 Failed to decode response: zlib_decode(): data errorRetrying with degraded mode, check https://getcomposer.org/doc/articles/troubles hooting.md#degraded-mode for more info [ErrorException

error: exportArchive: The data couldn’t be read because it isn’t in the correct format.

在执行ios 打包的时候,我们通过执行下面的指令来打包ipa: mkdir arch archive_path=arch/${app_name}.xcarchive workspace_name=HPPlayTVAssistant xcodebuild clean -workspace ${workspace_name}.xcworkspace -scheme ${app_name} -configuration $ios_type xcodebuild archive -workspace $

python urllib2导出elasticsearch数据时 返回 &quot;urllib2.HTTPError: HTTP Error 500: Internal Server Error&quot;

0.业务场景 将ES中某个index的某个字段的所有数据,导出到文件中 1.ES数据导出方法简述 ES数据导出方法,我主要找到了以下几个方面,欢迎大家补充: ES官方API:snapshot and restore module The snapshot and restore module allows to create snapshots of individual indices or an entire cluster into a remote repository like sha