索引坏块修复

帮朋友处理数据库问题发来如下信息

2019.04.25 16:10:02.905 [pool-2-thread-1] ERROR [com.alibaba.druid.filter.logging.Log4j2Filter.statementLogError:152] - {conn-10005, pstmt-20008} execute error. insert into TB_MZ_SFMXB (YLJGDM, SFMXID, GRBSLX,
GRBSH, JZLSH, BTFMXID,
TFBZ, SFCJBM, SFXMLBBM,
FYFSSJ, SYJSID, YZMXID,
SFJSSJ, KDKSBM, KDKSMC,
KDYSBH, KDYSXM, ZXKSBM,
ZXKSMC, ZXRYBH, ZXRYXM,
MXXMBM, MXXMMC, MXXMDW,
MXXMDJ, XMFLBM, XMFLMC,
MXXMSL, MXXMYSJE, MXXMSSJE,
XGBZ, FYSRGLBM, FYSRGLMC
)
values (?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?
) java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 5, 块号 2421495)
ORA-01110: 数据文件 5: 'E:\ORACLE\ORADATA\ORCL\SYDB01.DBF'
ORA-06512: 在 "SYDB_WJW.UMTS_TODO33021I", line 8
ORA-04088: 触发器 'SYDB_WJW.UMTS_TODO33021I' 执行过程中出错

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1046) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3714) ~[ojdbc6.jar:11.2.0.4.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1378) ~[ojdbc6.jar:11.2.0.4.0]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3409) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.filter.FilterAdapter.preparedStatement_execute(FilterAdapter.java:1080) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3407) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3407) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.wall.WallFilter.preparedStatement_execute(WallFilter.java:619) ~[druid-1.1.10.jar:1.1.10]
at com.alibaba.druid.filter.FilterChainImpl.pre
加载更多

检查alter日志

Hex dump of (file 5, block 2421495) in trace file e:\oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_2744.trc
Corrupt block relative dba: 0x0164f2f7 (file 5, block 2421495)
Fractured block found during buffer read
Data in bad block:
 type: 6 format: 2 rdba: 0x0164f2f7
 last change scn: 0x05f2.53c28ee4 seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0xb3fa0601
 check value in block header: 0xc7e0
 computed block checksum: 0x3d1c
Reading datafile 'E:\ORACLE\ORADATA\ORCL\SYDB01.DBF' for corruption at rdba: 0x0164f2f7 (file 5, block 2421495)
Reread (file 5, block 2421495) found same corrupt data
Fri Apr 26 11:17:06 2019
Corrupt Block Found
         TSN = 7, TSNAME = SYDB
         RFN = 5, BLK = 2421495, RDBA = 23393015
         OBJN = 73958, OBJD = 73958, OBJECT = IDX_UNIMAS_DC350B_EHCAA_50, SUBOBJECT = 
         SEGMENT OWNER = SYDB_WJW, SEGMENT TYPE = Index Segment
Fri Apr 26 11:17:06 2019
Hex dump of (file 5, block 2425079) in trace file e:\oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_2284.trc
Corrupt block relative dba: 0x016500f7 (file 5, block 2425079)
Fractured block found during buffer read
Data in bad block:
 type: 6 format: 2 rdba: 0x016500f7
 last change scn: 0x05f2.54389230 seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x280c0601
 check value in block header: 0xcec4
 computed block checksum: 0xb83c
Reading datafile 'E:\ORACLE\ORADATA\ORCL\SYDB01.DBF' for corruption at rdba: 0x016500f7 (file 5, block 2425079)
Reread (file 5, block 2425079) found same corrupt data

 

先确认数据库损损坏情况,没有发现物理文件损坏,检查数据库损坏对象

select segment_name,partition_name,segment_type,owner,tablespace_name
from sys.dba_extents
where file_id=5
and 2421495 between block_id and block_id + blocks-1;

 

两个损坏对象均在索引上,松了口气, 重建索引后 查找坏块消失

 比较奇怪的是通过dbv检测仍然出现坏块

C:\Users\Administrator>dbv file=E:\oracle\oradata\orcl\SYDB01.DBF

DBVERIFY: Release 11.2.0.1.0 - Production on 星期五 4月 26 11:27:47 2019

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

DBVERIFY - 开始验证: FILE = E:\ORACLE\ORADATA\ORCL\SYDB01.DBF
页 2421495 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x0164f2f7 (file 5, block 2421495)
Fractured block found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x0164f2f7
 last change scn: 0x05f2.53c28ee4 seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0xb3fa0601
 check value in block header: 0xc7e0
 computed block checksum: 0x3d1c

DBVERIFY - 验证完成

检查的页总数: 3932160
处理的页总数 (数据): 2055861
失败的页总数 (数据): 0
处理的页总数 (索引): 467781
失败的页总数 (索引): 0
处理的页总数 (其他): 7827
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 1400690
标记为损坏的总页数: 1
流入的页总数: 1
加密的总页数        : 0
最高块 SCN            : 3982908671 (1979.3982908671)
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值