IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    O/S-Error: (OS 23) 数据错误(循环冗余检查)—故障处理

    惜分飞发表于 2024-06-10 12:26:37
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:O/S-Error: (OS 23) 数据错误(循环冗余检查)—故障处理

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    有客户由于磁盘坏道导致数据文件访问报ORA-27070 OSD-04016 O/S-Error等相关错误
    OSD-04016


    rman 尝试读取88号文件

    RMAN> backup datafile 88 format 'e:\rman\%d_%T_%I.%s%p';
    
    启动 backup 于 05-6月 -24
    使用目标数据库控制文件替代恢复目录
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=2246 设备类型=DISK
    通道 ORA_DISK_1: 正在启动全部数据文件备份集
    通道 ORA_DISK_1: 正在指定备份集内的数据文件
    输入数据文件: 文件号=00088 名称=E:\APP\ADMINISTRATOR\ORADATA\XFF\XIFENFEI.ORA
    通道 ORA_DISK_1: 正在启动段 1 于 05-6月 -24
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/05/2024 18:33:43 上) 失败
    ORA-19501: 文件 "E:\APP\ADMINISTRATOR\ORADATA\XFF\XIFENFEI.ORA", 块编号 322944 (块大小=8192) 上出现读取错误
    ORA-27070: 异步读取/写入失败
    OSD-04016: 异步 I/O 请求排队时出错。
    O/S-Error: (OS 23) 数据错误(循环冗余检查)。
    

    检查系统日志,发现有报:设备 \Device\Harddisk0\DR0 有一个不正确的区块
    disk-error


    到目前为止基本上可以判断是文件系统或者磁盘层面出现坏道导致该问题(磁盘坏道概率更大),使用工具对损坏数据文件进行强制拷贝,提示少量扇区数据无法拷贝
    force-copy

    通过dbv检查恢复出来文件效果

    E:\check_db>DBV FILE=D:/XIFENFEI.ORA
    
    DBVERIFY: Release 11.2.0.3.0 - Production on 星期日 6月 9 22:17:28 2024
    
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    
    DBVERIFY - 开始验证: FILE = D:\XIFENFEI.ORA
    页 323055 标记为损坏
    Corrupt block relative dba: 0x1604edef (file 88, block 323055)
    Bad header found during dbv:
    Data in bad block:
     type: 229 format: 5 rdba: 0xe5e5e5e5
     last change scn: 0xe5e5.e5e5e5e5 seq: 0xe5 flg: 0xe5
     spare1: 0xe5 spare2: 0xe5 spare3: 0xe5e5
     consistency value in tail: 0x4c390601
     check value in block header: 0xe5e5
     computed block checksum: 0x5003
    
    
    
    DBVERIFY - 验证完成
    
    检查的页总数: 524288
    处理的页总数 (数据): 204510
    失败的页总数 (数据): 0
    处理的页总数 (索引): 127485
    失败的页总数 (索引): 0
    处理的页总数 (其他): 3030
    处理的总页数 (段)  : 0
    失败的总页数 (段)  : 0
    空的页总数: 189262
    标记为损坏的总页数: 1
    流入的页总数: 0
    加密的总页数        : 0
    最高块 SCN            : 184063522 (3470.184063522)
    

    运气不错,就一个数据库block异常,通过dba_extents查询坏块所属对象,运气不太好是一个表数据

    SQL> SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, A.PARTITION_NAME
      2    FROM DBA_EXTENTS A
      3   WHERE FILE_ID = &FILE_ID
      4     AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1;
    输入 file_id 的值:  88
    原值    3:  WHERE FILE_ID = &FILE_ID
    新值    3:  WHERE FILE_ID = 88
    输入 block_id 的值:  323055
    原值    4:    AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1
    新值    4:    AND 323055 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1
    
    OWNER
    ------------------------------
    SEGMENT_NAME
    --------------------------------------------------------------------------------
    SEGMENT_TYPE       TABLESPACE_NAME                PARTITION_NAME
    ------------------ ------------------------------ ------------------------------
    XFFUSER
    XFFTABLE
    TABLE              XFFTBS_TAB2
    

    设置跳过坏块导出数据,然后重命名原表导入数据,完成本次恢复,以前有过类似恢复:

    一次侥幸的OSD-04016 O/S-Error异常恢复
    O/S-Error: (OS 23) 数据错误(循环冗余检查) 数据库恢复

    • Oracle Recovery Tools修复空闲坏块
    • O/S-Error: (OS 23) 数据错误(循环冗余检查) 数据库恢复
    • 分布式存储故障导致数据库无法启动故障处理
    • rm -rf误删Oracle数据库恢复
    • 校验代码为 6054 坏块故障修复
    • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复
    • mysql数据库被黑恢复—应用层面delete删除
    • 数据文件自扩展引起—enq: HW – contention
    • ORA-01033: ORACLE initialization or shutdown in progress 故障处理
    • read_me_recover_tn勒索恢复
    • Input/output error故障恢复
    • 最近遇到几起ORA-600 16703故障(tab$被清空),请引起重视


沪ICP备19023445号-2号
友情链接