首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫緊急故障處理手冊:控制檔、重做日誌、資料檔損壞分級恢復流程

     編輯:Oracle 資料庫相關知識

前言

物理結構故障源於硬體故障或人為誤操作。優先排除硬體問題,再依下列分級流程處理。

一、控制檔損壞

單一控制檔損壞

  1. 確保資料庫關閉:SHUTDOWN IMMEDIATE
  2. 查 init.ora 確認所有控制檔路徑
  3. OS 指令以正確控制檔覆蓋損壞檔
  4. STARTUP 啟動資料庫
  5. 執行完整備份

所有控制檔損壞

  1. SHUTDOWN IMMEDIATE
  2. 從備份還原最近控制檔(磁帶直讀或 RMAN 腳本)
  3. 產生重建腳本:
    STARTUP MOUNT;
    ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;
  4. 編輯 Trace 檔,提取 CREATE CONTROLFILE 陳述式,修正反映最新結構(新增/移除資料檔、日誌檔)存為 createcontrol.sql
  5. SHUTDOWN ABORT;
    STARTUP NOMOUNT;
    @createcontrol.sql;
  6. 完整備份

二、重做日誌檔損壞

確認損壞組與狀態

SELECT * FROM v$logfile;
SELECT * FROM v$log;
  • v$logfile.status = INVALID → 損壞
  • v$log.status:INACTIVE / ACTIVE / CURRENT

處理策略

狀態指令
INACTIVEALTER DATABASE DROP LOGFILE GROUP n;
ALTER DATABASE ADD LOGFILE GROUP n ('path') SIZE m;
ACTIVE (非 CURRENT)ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;
CURRENTALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP n;
若失敗 → 基於時間點不完全恢復 (PITR)

處理後 ALTER DATABASE OPEN; 並完整備份。

三、資料檔損壞

  • 非 SYSTEM 表空間:資料庫可保持 OPEN,單獨恢復損壞檔
  • SYSTEM 表空間:資料庫異常終止,需 STARTUP MOUNT 後恢復
  • 查閱 Alert Log 判斷所屬表空間

核心原則

  • 多路徑多份控制檔(建議 3 份以上)
  • 重做日誌多重化(每組 2-3 成員,分散磁碟)
  • 歸檔模式 + 定期完整備份 + 歸檔日誌備份
  • RMAN 為主,使用者管理備份為輔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved