ORACLE_OCP之故障诊断
- 文章目标:
- 检测并修复数据库损坏
- 使用自动诊断库
- 使用ADRCI分析实例并进行相关恢复
- 查找和解释错误消息
- 使用数据恢复顾问
- 主动检查并处理坏块
一、减少问题诊断时间
- Oracle数据修复工具包括:
- RMAN用于物理介质的丢失或损坏
- 闪回逻辑错误
- Data Guard解决物理问题
- 数据恢复顾问:
- 问题诊断(选择正确的解决方案可以减少不必要的时间开销)
- 减少错误的判断(紧急情况下更容易出错)
二、自动诊断工作流程
三、自动诊断库
四、ADR的命令行工具 (ADRCI)
- ADRCI从操作系统提示中提供与ADR的交互。
- 使用ADRCI,您可以在ADR中查看诊断数据。
[oracle@oracle12 ~]$ adrci
ADRCI: Release 12.2.0.1.0 - Production on Sun Jan 3 05:39:46 2021
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci> show incident
ADR Home = /u01/app/oracle/diag/rdbms/dummy/orcl:
*************************************************************************
0 rows fetched
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
0 rows fetched
ADR Home = /u01/app/oracle/diag/tnslsnr/oracle12/listener:
*************************************************************************
0 rows fetched
adrci>
五、V$DIAG_INFO诊断信息视图
SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;
六、解释RMAN消息输出
- RMAN相关信息可以在下面找到:
- RMAN command输出
- RMAN trace file – RMAN跟踪文件
- Alert log
- Oracle server trace file – ORACLE服务器跟踪文件
- sbtio.log file
七、使用DEBUG
- DEBUG工具用于:
- 查看生成的PL / SQL
- 精确确定RMAN命令的挂起或故障位置
- DEBUG选项在RMAN提示符下或在RUN命令块中指定。
- DEBUG选项创建了大量的输出,因此将输出重定向到跟踪文件:
$ rman target / catalog rman/rman debug trace trace.log
八、解释RMAN错误
- 从下至上阅读报错信息。
- 查找其他信息。
- RMAN-03009标识失败的命令。
九、数据恢复顾问
- 快速检测,分析和修复故障
- 最大限度地减少对用户的干扰
- 诊断停机和运行时故障
- 用户接口(界面):
- EM GUI interface (多路径)
- RMAN command line – RMAN命令行
- 支持的数据库配置:
- 单实例
- 非RAC
- 支持故障转移到备用数据库,但不支持分析和修复备用数据库
十、数据恢复顾问
- 通过消除干扰信息减少停机时间:
十一、数据故障:示例
- 不可访问的组件,例如:
- 操作系统级别缺少数据文件
- 错误的访问权限
- 离线表空间,依此类推
- 物理损坏,例如块校验失败或无效的块头
- 逻辑损坏,例如不一致的字典,损坏的行,损坏的索引条目或损坏的事务
- 不一致,例如控制文件比数据文件和联机重做日志旧或新
- I / O故障,例如超过了打开文件的数量限制,通道不可访问,网络或I / O错误
十二、RMAN命令界面访问数据恢复顾问
十三、列出数据故障
- RMAN LIST FAILURE命令列出了先前执行的故障评估.
- 包括新诊断的故障
- 清除和关闭已解决的故障(默认情况下)
- Syntax:
LIST FAILURE
[ ALL | CRITICAL | HIGH | LOW | CLOSED | failnum[,failnum,…] ]
[ EXCLUDE FAILURE failnum[,failnum,…] ]
[ DETAIL ]
十四、Advising on Repair 修复故障
- RMAN ADVISE FAILURE命令:
- 显示故障列表的摘要
- 如果ADR中出现新的故障,则包含相关告警
- 显示手动检查表
- 列出每个故障推荐的维修建议
- 生成修复脚本(用于自动或手动修复)
注:建议大家最好进行手动修复,可控性较高!!!
. . .
Repair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_2979128860.hm
RMAN>
十五、执行修复
-
RMAN REPAIR FAILURE命令:
- 遵循ADVISE FAILURE命令
- 修复指定的故障
- 关闭和清除已修复的故障
-
Syntax:
REPAIR FAILURE
[USING ADVISE OPTION integer]
[ { {NOPROMPT | PREVIEW}}…]
十六、分类(和关闭)故障
- RMAN CHANGE FAILURE命令:
- 更改故障优先级(CRITICAL除外)
- 关闭一个或多个故障
十七、数据恢复顾问视图
- 查询V$视图:
- V$IR_FAILURE:所有失败的列表,包括闭合的失败(LIST FAILURE命令的结果)
- V$IR_MANUAL_CHECKLIST:手动建议列表(ADVISE FAILURE命令的结果)
- V$IR_REPAIR:维修列表(ADVISE FAILURE命令的结果)
- V$IR_FAILURE_SET:失败和建议标识符的交叉引用
十八、什么是坏块
-
每当读取或写入块时,都会执行一致性检查.
- Block version 数据块版本
- DBA value(data block address value数据块地址值) 与块缓冲区(DB_BUFFER_CACHE)中的DBA 值进行比较
- 块校验(如果你已经开启的话)
-
坏块被表示以下之一:
- Media corrupt 介质损坏
- Logically (or software) corrupt 逻辑(或软件)损坏
-
V$DATABASE_BLOCK_CORRUPTION视图显示被数据库组件(例如RMAN命令,ANALYZE,dbv,SQL查询等)损坏的块。以下损坏类型导致将数据添加到此视图:
- 物理/介质损坏:数据库无法识别该块,块的校验和无效,该块包含全零或已损坏的块头。默认情况下会启用物理坏块检查。
- 逻辑损坏:该块具有有效的校验和,页眉和页脚匹配,但内容不一致。块存储介质恢复无法修复逻辑块损坏。默认情况下,禁用逻辑损坏检查。您可以通过指定BACKUP,RESTORE,RECOVER和VALIDATE命令的CHECK LOGICAL选项将其打开。
注:DBV(DBVERIFY)是Oracle提供的一个命令行工具,它可以对数据文件进行物理和逻辑的两种一致性检查。但是这个工具不会检查索引记录和数据记录的匹配关系,这种检查必须使用analyze validate structure命令。
十九、坏块现象报错: ORA-01578
- 该错信息如下:ORA-01578: “ORACLE data block corrupted (file # %s, block # %s)”:
- 当发现损坏的数据块时生成
- 总是返回相对文件号和块号
- 返回到发现损坏时正在执行的查询的会话
- 出现在alert.log文件中
二十、如何处理坏块
- 检查告警日志和操作系统日志文件。
- 使用可用的诊断工具找出损坏的类型.
- 通过多次运行检查来确定错误是否仍然存在。
ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE ONLINE;
- 如有必要,从损坏的对象中恢复数据.
- 解决所有硬件问题:
- 内存
- 存储控制器
- 硬盘
- 如有必要,从损坏的对象中恢复或还原数据
二十一、块的介质恢复
- 块的介质恢复:
- 缩短平均恢复时间(MTTR)
- 在介质恢复期间提高可用性
- 数据文件在恢复过程中保持联机状态。
- 仅恢复的块不可访问。
- 使用RMAN RECOVER … BLOCK命令调用
- 使用闪回日志、完整备份或0级备份还原块
- 使用REDO日志执行介质恢复。
- V$DATABASE_BLOCK_CORRUPTION视图显示标记为已损坏的块
二十二、块介质恢复的先决条件
- 目标数据库必须处于ARCHIVELOG模式。
- 包含坏块的数据文件的备份必须是完整备份或0级备份。
- 必须先将代理副本还原到非默认位置,然后才能使用它们。(可选)
- RMAN只能使用归档的REDO日志进行恢复。
- 坏块可以从闪回日志中恢复(如果有)。
二十三、恢复单个块
- RMAN RECOVER … BLOCK命令:
- 包含要恢复的块的备份
- 读取备份并将请求的块放入到内存缓冲区(DB_BUFFER_CACHE)中
- 必要时通过从备份读取归档日志来管理块的介质恢复
RECOVER DATAFILE 6 BLOCK 3; Recover a single block
RECOVER Recover multiple blocks
DATAFILE 2 BLOCK 43 in multiple data files
DATAFILE 2 BLOCK 79
DATAFILE 6 BLOCK 183;
RECOVER CORRUPTION LIST; Recover all blocks logged in V$DATABASE_BLOCK_CORRUPTION
二十四、最佳实践:主动检查
- 调用数据库及其组件的主动健康检查:
- 运行状况监视器或RMAN VALIDATE DATABASE命令
- 检查逻辑和物理损坏
- 在ADR中记录的发现
二十五、检查坏块
- VALIDATE命令:
- 扫描指定的文件并验证其内容
- 确认数据文件存在并且该文件位于正确的位置
- 检查损坏的数据块
- 可以检查单个备份集和数据块
- 跳过从未使用的块
- 显示故障并将其记录在ADR中
- 指定CHECK LOGICAL选项以检查物理和逻辑损坏
- 查询V$DATABASE_BLOCK_CORRUPTION视图以查看输出
二十七、主库中的自动块修复
- 通过使用物理备用数据库(DG ADG)中的块,可以自动修复主数据库中损坏的块。
- 必须在物理备用数据库上启用实时查询。
二十八、物理备库(DG ADG)中的自动块修复
- 通过使用主数据库中的块,可以自动修复物理备用数据库中损坏的块。
- 必须在物理备用数据库上启用实时查询。