ORACLE_OCP之故障诊断

ORACLE_OCP之故障诊断

  • 文章目标:
    • 检测并修复数据库损坏
    • 使用自动诊断库
    • 使用ADRCI分析实例并进行相关恢复
    • 查找和解释错误消息
    • 使用数据恢复顾问
    • 主动检查并处理坏块

一、减少问题诊断时间

  • Oracle数据修复工具包括:
  • RMAN用于物理介质的丢失或损坏
  • 闪回逻辑错误
  • Data Guard解决物理问题
  • 数据恢复顾问:
    • 问题诊断(选择正确的解决方案可以减少不必要的时间开销)
    • 减少错误的判断(紧急情况下更容易出错)

二、自动诊断工作流程

ORACLE_OCP之故障诊断

三、自动诊断库

ORACLE_OCP之故障诊断

四、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
    • 支持故障转移到备用数据库,但不支持分析和修复备用数据库

十、数据恢复顾问

  • 通过消除干扰信息减少停机时间:

ORACLE_OCP之故障诊断

十一、数据故障:示例

  • 不可访问的组件,例如:
    • 操作系统级别缺少数据文件
    • 错误的访问权限
    • 离线表空间,依此类推
  • 物理损坏,例如块校验失败或无效的块头
  • 逻辑损坏,例如不一致的字典,损坏的行,损坏的索引条目或损坏的事务
  • 不一致,例如控制文件比数据文件和联机重做日志旧或新
  • I / O故障,例如超过了打开文件的数量限制,通道不可访问,网络或I / O错误

十二、RMAN命令界面访问数据恢复顾问

ORACLE_OCP之故障诊断

十三、列出数据故障

  • 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视图显示标记为已损坏的块

ORACLE_OCP之故障诊断

二十二、块介质恢复的先决条件

  • 目标数据库必须处于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)中的块,可以自动修复主数据库中损坏的块。
  • 必须在物理备用数据库上启用实时查询。

ORACLE_OCP之故障诊断

二十八、物理备库(DG ADG)中的自动块修复

  • 通过使用主数据库中的块,可以自动修复物理备用数据库中损坏的块。
  • 必须在物理备用数据库上启用实时查询。

ORACLE_OCP之故障诊断

上一篇:Oracle RMAN备份归档与非归档模式


下一篇:PG_备份还原系列之pg_rman