`

Oracle数据库恢复 : 存储故障导致的数据损坏

阅读更多

链接:

最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量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.

错误消除,参考Metalink:1036858.6

站内相关文章|Related Articles

ORA-00600 4000 及 4194 错误小记 
ORA-07445 cold_qerfxArrayMaxSize 的Bug 
ORA-600 17285 错误 与 PL/SQL Developer 
使用errorstack跟踪ORA-01438错误 
ORA-01157 - Mount状态下的文件存在性校验

分享到:
评论

相关推荐

    Oracle数据库备份与恢复.pdf

    Oracle数据库的备份与恢复是确保数据安全性和业务连续性的重要措施。通过合理的备份策略、多种备份方式的结合以及完善的恢复机制,可以有效地防止数据丢失和损坏,保护企业的核心资产。在实际应用中,需要根据具体...

    oracle数据库恢复工具(dbview for oracle 2.7.28.155 )

    总的来说,dbview for oracle 2.7.28.155 是一款强大且灵活的Oracle数据库恢复工具,它可以帮助用户在紧急情况下快速恢复数据,减少因数据丢失带来的损失。在使用过程中,需要注意备份重要数据,遵循正确的数据恢复...

    Oracle数据库备份恢复工具

    备份是为了防止数据丢失,通过复制数据库或其部分到其他存储介质上,以便在系统故障、数据损坏或意外删除时能够恢复数据。Oracle数据库支持多种备份类型,包括完整备份、增量备份和差异备份。完整备份会复制所有数据...

    ORACLE数据库物资管理系统磁盘损坏数据恢复处理报告 UNDO文件损坏

    ### ORACLE数据库物资管理系统磁盘损坏数据恢复处理报告 #### 系统环境 - **硬件平台及操作系统**: Windows Server 2003 - **Oracle产品及版本**: Oracle Database 10g Release 2 (10.2.0.1.0) #### 问题描述 在...

    Oracle数据库故障恢复技术剖析.pdf

    介质恢复是指当存储Oracle数据库的存储介质出现故障时,如何恢复数据库的状态。介质故障可能是由于磁盘损坏、自然灾害、恶意破坏等原因引起的。介质恢复包括两个阶段:还原(Restore)和恢复(Recover)。还原数据库...

    Oracle数据库优化和故障处理

    当遇到数据丢失或损坏时,可以通过时间点恢复、增量备份恢复等策略恢复数据。 3. 会话管理:挂起的会话可能导致资源浪费,通过 SQL*Plus 的 kill 命令或企业管理器可以终止无响应的会话。 4. I/O 问题:监控 I/O ...

    Oracle数据库恢复预案

    本文档将详细介绍Oracle数据库的恢复流程、相关概念及操作步骤,旨在提供一套完整的恢复策略,以应对可能发生的系统故障或数据损坏。 1. **测试环境** 在制定恢复预案时,测试环境是必不可少的。它允许我们在不...

    asmul用于Oracle数据库恢复,最后一招

    当数据库发生问题时,ASM可能有助于恢复数据,特别是在处理与ASM相关的存储问题时。 描述中的"实在没办法时的最后一招"意味着asmul可能是一个高级或复杂的解决方案,通常在常规的备份恢复、RMAN(Recovery Manager...

    Oracle数据库恢复实例.pdf

    Oracle数据库恢复是一个...DBA需要定期备份数据,保持数据库处于归档模式,并熟悉恢复过程,以便在出现故障时迅速有效地恢复数据。通过实际案例测试,可以验证和优化恢复策略,确保在紧急情况下能够快速恢复正常运作。

    数据库课件:第3章Oracle数据库系统结构.ppt

    **3.2 Oracle数据库存储结构** 3.2.1 存储结构概述 数据库在物理上由数据文件组成,逻辑上则由表空间构成。表空间由一个或多个数据文件组成,每个数据文件只能属于一个表空间。逻辑存储单位包括数据块、区、段和表...

    Oracle数据库备份与恢复.pptx

    本章将详细介绍Oracle数据库的各种备份策略以及恢复方法,以应对不同类型的数据库故障。 1. 数据库常见故障类型: - 系统崩溃或服务器崩溃:硬件故障导致数据库无法运行。 - 用户错误:误操作可能导致数据丢失或...

    Oracle日常维护故障定位故障排除

    Oracle数据库在日常运行中可能会遇到各种故障,这些故障可能会影响到数据库的正常运行、性能或安全性。以下是一些常见的Oracle数据库故障及其原因与解决方案: 一、数据库挂起故障 1. ARCHIVE挂起:当归档日志过程...

    oracle 数据库数据恢复资料

    在恢复场景下,`expdp`可以用于创建数据的备份,`impdp`则用于从备份中恢复数据。 - **RMAN(Recovery Manager)**:Oracle提供的高级备份和恢复工具,可以进行数据库、表空间、数据文件等不同级别的备份,以及自动...

    oracle数据库备份与恢复技术

    ### Oracle数据库备份与恢复技术详解 #### 一、引言 在现代企业的信息化建设中,Oracle数据库因其卓越的性能和稳定性被广泛应用于金融、电信、电子商务等多个领域。然而,无论多么可靠的系统都无法避免可能出现的...

    oracle数据库备份与恢复

    Oracle数据库中存储的数据通常包含企业的核心业务信息,任何数据丢失都可能导致严重的经济损失甚至业务瘫痪。因此,定期备份数据库是防止数据丢失的关键步骤,确保在系统故障、硬件损坏或恶意攻击时能够快速恢复。 ...

    Oracle数据库的数据文件规划、维护、恢复和初始参数的配置说明

    Oracle数据库的数据文件规划、维护、恢复和初始参数配置是数据库管理员日常工作中至关重要的部分。理解这些概念和操作对于确保数据库的高效运行和数据安全性至关重要。 1. Oracle架构 Oracle数据库由多个物理和逻辑...

    Oracle数据库备份与恢复方案

    总的来说,Oracle数据库备份与恢复方案是确保业务连续性和数据安全的关键环节。通过制定严格的管理制度,规范化的操作流程,以及适时的硬件维护,可以有效降低数据库风险,确保在灾难发生时能够迅速恢复服务。在医院...

Global site tag (gtag.js) - Google Analytics