ORACLE_OCP之故障診斷
阿新 • • 發佈:2021-01-03
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)中的自動塊修復
- 通過使用主資料庫中的塊,可以自動修復物理備用資料庫中損壞的塊。
- 必須在物理備用資料庫上啟用實時查詢。