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

Oracle 遺失資料檔案恢復實戰:冷備份 + 歸檔日誌完整恢復流程

     編輯:Oracle 資料庫相關知識

適用場景

  • 擁有**冷備份** (資料庫關閉狀態複製的資料檔)
  • **遺失其中一個資料檔案**
  • 擁有**完整歸檔日誌** 從備份時間點至今
  • 資料庫處於 **ARCHIVELOG 模式**

完整恢復步驟

1. 啟動至 MOUNT 狀態


$ sqlplus "/ as sysdba"
SQL> STARTUP MOUNT;

2. 嘗試 OPEN 確認錯誤


SQL> ALTER DATABASE OPEN;
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'

記錄遺失的檔案號 (3) 與路徑。

3. 重建遺失資料檔


SQL> ALTER DATABASE CREATE DATAFILE 3 
     AS '/opt/oracle/oradata/eygle/eygle02.dbf';
Database altered.
  • 若原路徑磁碟損壞,指定**新路徑**
  • 檔案大小從控制檔/資料字典取得

4. 驗證檔案識別


SQL> SELECT name FROM v$datafile;
NAME
--------------------------------------------------------
/opt/oracle/oradata/eygle/system01.dbf
/opt/oracle/oradata/eygle/undotbs01.dbf
/opt/oracle/oradata/eygle/eygle02.dbf  <-- 已重建
/opt/oracle/oradata/eygle/eygle01.dbf

5. 再次嘗試 OPEN (將提示需媒體恢復)


SQL> ALTER DATABASE OPEN;
ORA-01113: file 3 needs media recovery
ORA-01110: data file 3: '/opt/oracle/oradata/eygle/eygle02.dbf'

6. 執行媒體恢復


SQL> RECOVER DATAFILE 3;
Media recovery complete.
  • 自動應用歸檔日誌與線上重做日誌
  • 若提示指定日誌,輸入 AUTO 或具體路徑
  • 若歸檔日誌不在預設位置,需手動指定

7. 開啟資料庫


SQL> ALTER DATABASE OPEN;
Database altered.

關鍵驗證


-- 檢查資料檔狀態
SELECT file#, name, status, enabled, checkpoint_change#
FROM v$datafile;

-- 檢查表空間線上
SELECT tablespace_name, status FROM dba_tablespaces;

-- 核心業務表查詢驗證
SELECT COUNT(*) FROM critical_table;

進階情況處理

遺失 SYSTEM/UNDO 表空間檔案

無法直接 CREATE DATAFILE,需:

  1. 從冷備份複製檔案至原位置
  2. RECOVER TABLESPACE system 或 RECOVER DATABASE

遺失控制檔


STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG
  MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292
LOGFILE GROUP 1 ('/path/redo01.log') SIZE 100M,
        GROUP 2 ('/path/redo02.log') SIZE 100M
DATAFILE '/path/system01.dbf', '/path/undotbs01.dbf', ...;
RECOVER DATABASE USING BACKUP CONTROLFILE;
ALTER DATABASE OPEN RESETLOGS;

歸檔日誌缺口

  • 若缺少中間歸檔日誌 → **無法完成時間點恢復**
  • 選項:RECOVER DATABASE UNTIL CANCEL 至可用日誌點 → ALTER DATABASE OPEN RESETLOGS (資料遺失)
  • 或從備份恢復缺口日誌 (若有磁帶/異地備份)

RMAN 替代方案 (推薦生產環境)


RMAN> CONNECT TARGET /
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATAFILE 3;
RMAN> RECOVER DATAFILE 3;
RMAN> ALTER DATABASE OPEN;

優點:自動管理備份片段、並行恢復、區塊級恢復、壓縮備份。

預防與監控

措施頻率/配置
RMAN 完整備份每週 + 每日增量
歸檔日誌備份每小時或切換後立即
控制檔自動備份CONFIGURE CONTROLFILE AUTOBACKUP ON
Data Guard 實體備援即時同步、零資料遺失
監控 v$datafile.status定期檢查 OFFLINE/RECOVER 狀態
磁碟空間告警FRA 使用率 > 80% 告警

常見錯誤代碼對照

錯誤含義處理
ORA-01157無法識別/鎖定資料檔檔案遺失、路徑錯誤、權限問題
ORA-01110資料檔路徑報告確認檔案號與路徑
ORA-01113檔案需要媒體恢復執行 RECOVER DATAFILE
ORA-01122資料檔驗證失敗檔案損壞、非 Oracle 檔案
ORA-00283恢復會話取消檢查 alert log、歸檔日誌完整性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved