1. 程式人生 > 資料庫 >ORACLE_OCP之故障診斷

ORACLE_OCP之故障診斷

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)中的自動塊修復

  • 通過使用主資料庫中的塊,可以自動修復物理備用資料庫中損壞的塊。
  • 必須在物理備用資料庫上啟用實時查詢。

在這裡插入圖片描述