`

Oracle数据库恢复:存储故障导致的数据损坏(摘抄自eygle)

阅读更多

最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量4TB,浪潮的存储设备,控制器损坏导致数据库故障。

从启动信息来看,首先出现故障的是控制文件:

Read from controlfile member 'oradata/ORCL/control01.ctl' has found a fractured block (blk# 25, seq# 1909664)
Read from controlfile member 'oradata/ORCL/control02.ctl' has found a fractured block (blk# 25, seq# 1909664)
Read from controlfile member 'oradata/ORCL/control03.ctl' has found a fractured block (blk# 25, seq# 1909664)

我们可以用dbv来检查一下控制文件的损坏情况,控制文件块大小是16K,检查3个控制文件,都出现了不一致:

dbv file=control01.ctl

DBVERIFY: Release 10.2.0.1.0 - Production on Thu Dec 2 21:40:27 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


DBV-00103: Specified BLOCKSIZE (8192) differs from actual (16384)
[oracle@oradbserver ORCL]$ dbv file=control01.ctl blocksize=16384

DBVERIFY: Release 10.2.0.1.0 - Production on Thu Dec 2 21:40:44 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = control01.ctl
Page 19 is influx - most likely media corrupt
Corrupt block relative dba: 0x00000013 (file 0, block 19)
Fractured block found during dbv:
Data in bad block:
 type: 21 format: 2 rdba: 0x00000013
 last change scn: 0xffff.001d238a seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x23791501
 check value in block header: 0x6ad5
 computed block checksum: 0xf3

Page 25 is marked corrupt
Corrupt block relative dba: 0x00000019 (file 0, block 25)
Bad check value found during dbv:
Data in bad block:
 type: 21 format: 2 rdba: 0x00000019
 last change scn: 0xffff.001d2388 seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x23881501
 check value in block header: 0xbe7a
 computed block checksum: 0x52d0

Page 27 is influx - most likely media corrupt
Corrupt block relative dba: 0x0000001b (file 0, block 27)
Fractured block found during dbv:
Data in bad block:
 type: 21 format: 2 rdba: 0x0000001b
 last change scn: 0xffff.001d238b seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x23501501
 check value in block header: 0x9663
 computed block checksum: 0x5fc4

Page 316 is influx - most likely media corrupt
Corrupt block relative dba: 0x0000013c (file 0, block 316)
Fractured block found during dbv:
Data in bad block:
 type: 21 format: 2 rdba: 0x0000013c
 last change scn: 0xffff.001d2393 seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x23811501
 check value in block header: 0xc99d
 computed block checksum: 0x12



DBVERIFY - Verification complete

Total Pages Examined         : 662
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 319
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 339
Total Pages Marked Corrupt   : 4
Total Pages Influx           : 3
Highest block SCN            : 1909665 (65535.1909665)


注意控制文件也是有一致性校验的。

但是我仍然可以通过strings命令从损坏的控制文件中提取文件名,重建控制文件。

剩下的是UNDO表空间损坏,这个不太可怕,强制来启动数据库,出现2662错误:

Errors in file /ORCL/udump/orcl_ora_4792.trc:
ORA-00600: internal error code, arguments: [2662], [1], [1574405318], [1], [1574541355], [8388617], [], []

Errors in file /ORCL/udump/orcl_ora_4792.trc:
ORA-00600: internal error code, arguments: [2662], [1], [1574405318], [1], [1574541355], [8388617], [], []


这里我设置了_minimum_giga_scn参数来推进SCN
_minimum_giga_scn=1047

最后启动数据库后,遇到了以下错误:

ORA-00604: error occurred at recursive SQL level 1
ORA-08102: index key not found, obj# 239, file 1, block 1674 (2)
ORA-12012: error on auto execute of job 1
ORA-08102: index key not found, obj# 239, file 1, block 1674 (2)


这是索引的一致性问题,找到这个对象:

SQL> select object_name from dba_objects where object_id=239;

OBJECT_NAME
--------------------------------------------------------------------------------
I_JOB_NEXT


直接DROP掉了重建:

SQL> drop index I_JOB_NEXT;

Index dropped.

SQL> create index i_job_next on job$ (next_date);

Index created.
分享到:
评论

相关推荐

    盖国强Oracle专题:天道酬勤oracle之路

    教程名称:盖国强Oracle专题:天道酬勤oracle之路课程目录:【】Oracle DBA 手记3,数据库性能优化与内部原理解析【】Oracle数据安全-盖国强(DTCC2012)【】Oracle数据库DBA专题技术精粹【】Oracle数据库性能优化...

    深入浅出Oracle: DBA入门、进阶与诊断案例(eygle)原生PDF+源代码--eygle(盖国强)

    针对数据库的启动和关闭、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究相关技术,并...

    《Oracle DBA手记——数据库诊断案例与性能优化实践》第一章 to be continued

    │ 05.Oracle数据库无响应故障的处理 │ 06.RAC环境诊断案例一则 ├─第三篇 SQL调优篇 │ 01.合理利用索引解决性能问题 │ 02.SQL优化与调整实践 │ 03.索引访问与数据读取 │ 04.SQL优化之Everything is possible ...

    深入了解Oracle数据字典

    这一部分表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。 这部分表对数据库来说至关重要,所以Oracle不允许SYSDBA之外的用户直接访问,显示授权不被允许。  如果显示授权你会收到如下错误: ...

    oracle DBA手记123部(Eygle)

    oracle DBA手记123部(Eygle) ORACLE+DBA手记1 数据库诊断案例与性能优化....pdf ORACLE DBA手记2 数据库诊断案例与内部....pdf Oracle DBA手记3_数据库性能优化与内部原理解析.pdf Eygle 大师作品,值得ORACLE 粉...

    深入浅出Oracle:DBA入门,进阶与诊断案例(盖国强编)

    根据Gartner公司的统计数据,在2005年,Oracle数据库以48.6%的市场占有率继续稳居关系数据库市场的 首位。在过去这一年中,国内的Oracle从业市场和学习环境都有了很大的发展和进步,市场进一步规范和 成熟,从事...

    Statspack-v3.0.pdf

    时负责Oracle数据库管理及优化,并为多家烟草企业提供Oracle数据库管理、优化及技术支持。 目前任职于北京某电信增值业务系统提供商企业,负责数据库业务。管理全国30多个省点数据 库平台。 实践经验丰富,长于...

    盖国强oracle应用总结eygle.chm

    盖国强oracle应用总结eygle.chm,有助于我们提高oracle的应用能力。

    oracle很详细的讲解

    Oracle技术大牛整理常见问题很详细的讲解,总共含有千多页文档,都是最新,2012版 TianleSoftware Oracle 学习手册 在 Oracle 几年的学习中,, 做了很多的实验, 也遇到了很多的问题,在这个过程中,积累了一些...

    Oracle技术大牛整理文档《Oracle 学习手册》

    Oracle技术大牛整理常见问题很详细的讲解,总共含有千多页文档,都是最新,2012版 TianleSoftware Oracle 学习手册 在 Oracle 几年的学习中,, 做了很多的实验, 也遇到了很多的问题,在这个过程中,积累了一些...

    oracle下实现恢复一个丢失的数据文件的代码

    如果您目前拥有一个冷备份,但是缺少了其中的一个数据文件,但你目前存在所有的归档,如果您要恢复数据文件,可以参考以下的示例: 代码如下:[oracle@jumper eygle]$ sqlplus “/ as sysdba” SQL*Plus: ...

    深入浅出Oracle:DBA入门、进阶与诊断案例

    eygle的书,推荐阅读。 深入浅出Oracle:DBA入门、进阶与诊断案例.7z.rar

    Oracle技术大牛整理文档《Oracle 学习手册》最新版

    eygle 君三思 谭怀远 陈吉平等前辈们的书籍和和 blog ">Oracle技术大牛整理常见问题很详细的讲解 总共含有千多页文档 都是最新 2012版 TianleSoftware Oracle 学习手册 在 Oracle 几年的学习中 做了很多的实验 也...

    Oracle技术大牛《Oracle 学习手册》

    racle技术大牛整理常见问题很详细的讲解,总共含有千多页文档,都是最新,2012版 TianleSoftware Oracle 学习手册 在 Oracle 几年的学习中,, 做了很多的...eygle,君三思 ,谭怀远 ,陈吉平等前辈们的书籍和和 blog

    深入解析Oracle

    深入解析Oracle,eygle撰写版本,一共10个章节 第一章:数据库的启动和关闭 第二章:控制文件与数据库初始化 第三章:参数及参数文件 第四章:数据字典 第五章:内存管理 第六章:BufferCache与SharedPool原理 第七...

    Oracle技术大牛整理常见问题很详细的讲解

    Oracle技术大牛整理常见问题很详细的讲解,总共含有千多页文档,都是最新,2012版 TianleSoftware Oracle 学习手册 在 Oracle 几年的学习中,, 做了很多的实验, 也遇到了很多的问题,在这个过程中,积累了一些...

Global site tag (gtag.js) - Google Analytics