最近帮助用户恢复了一个由于存储故障导致的数据库灾难,整个数据库容量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的基本操作,例如创建和管理用户、权限控制以及备份和...
在进阶部分,eygle 推荐学习 Oracle 数据库性能优化、备份恢复、SQL 优化诊断案例等高级主题,以此帮助 DBA 学习到更高级的技能和知识。这些主题可以帮助 DBA 学习到 Oracle 数据库管理系统的高级功能和优化技术。 ...
这份"Oracle数据库性能优化完整版资料.ppt"可能是由eygle编写的,eygle在IT领域,特别是Oracle数据库管理方面有着深厚的背景和专业知识。这份资料可能包含了eygle对Oracle数据库性能调优的深入见解和实践经验。 ...
5. **数据字典**:数据字典存储了数据库的所有元数据,如表、索引、用户权限等,通过查询数据字典视图可以帮助诊断数据结构相关的问题。 6. **数据库状态检查**:检查控制文件、数据文件、联机redo日志的完整性,...
教程名称:盖国强Oracle专题:天道酬勤oracle之路课程目录:【】Oracle DBA 手记3,数据库性能优化与内部原理解析【】Oracle数据安全-盖国强(DTCC2012)【】Oracle数据库DBA专题技术精粹【】Oracle数据库性能优化...
《Oracle之路与数据库优化》这一主题深入探讨了Oracle数据库的学习路径、最佳实践以及数据库优化的关键要素,由IT领域的资深专家盖国强(eygle)撰写。以下是对该文档中的核心知识点进行的详细解读: ### Oracle...
针对数据库的启动和关闭、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究相关技术,并...
他们的主要职责包括数据库设计、性能调优、数据备份与恢复、安全控制、故障排除等。Oracle作为全球领先的数据库管理系统之一,其DBA的角色在企业信息化建设中至关重要。 ### Gartner报告与Oracle市场份额 根据...
《深入解析Oracle-数据库架构设计与性能优化实践》是一本专注于Oracle数据库的深度解析书籍,由数据库专家盖国强(eygle)撰写。eygle先生是北京恩墨科技的创始人,拥有超过10年的Oracle数据库经验,同时他也是ITPUB...
1. 数据库概念:Oracle数据库是一个存储和管理数据的系统,它包括表、索引、视图、存储过程、触发器等组件。理解这些基本概念对于使用Oracle至关重要。 2. SQL语言:SQL(结构化查询语言)是与Oracle交互的主要工具...
数据文件存储数据库的数据,控制文件记录数据库的结构信息,重做日志文件用于恢复数据库,参数文件则定义了数据库的运行参数。 Oracle DBA需要熟练掌握SQL语言,包括数据查询、插入、更新和删除操作,以及复杂的...
│ 05.Oracle数据库无响应故障的处理 │ 06.RAC环境诊断案例一则 ├─第三篇 SQL调优篇 │ 01.合理利用索引解决性能问题 │ 02.SQL优化与调整实践 │ 03.索引访问与数据读取 │ 04.SQL优化之Everything is possible ...
在Oracle数据库环境中,数据文件是存储表空间信息和数据库对象的实际物理文件。如果一个数据文件丢失或损坏,恢复过程就显得至关重要。本篇文章将详细解释如何在Oracle数据库中恢复一个丢失的数据文件,以及相关的...
2. **Oracle DBA进阶**:在介绍了基础知识之后,本书将引导读者深入学习Oracle数据库管理的高级技巧,包括性能优化、备份恢复策略、高可用性解决方案等内容。这些知识点对于提高数据库系统的稳定性和性能至关重要。 ...
oracle DBA手记123部(Eygle) ORACLE+DBA手记1 数据库诊断案例与性能优化....pdf ORACLE DBA手记2 数据库诊断案例与内部....pdf Oracle DBA手记3_数据库性能优化与内部原理解析.pdf Eygle 大师作品,值得ORACLE 粉...