歸檔模式下,非SYSTEM/SYSAUX/UNDO表空間單個數據文件丟失(誤刪、磁盤故障),可通過控制文件記錄的文件屬性重建文件結構 + 歸檔日誌前滾實現零數據損失、業務無感知恢復。本文記錄實戰驗證流程:模擬損壞 → Mount狀態重建文件 → 介質恢復 → Open驗證,含腳本化模板與擴展場景。
-- 1. 創建測試表空間 (3個10M文件) 與測試表 (23M)
CREATE TABLESPACE ldy DATAFILE
'/u02/oradata/ldy01.dbf' SIZE 10M,
'/u02/oradata/ldy02.dbf' SIZE 10M,
'/u02/oradata/ldy03.dbf' SIZE 10M;
CREATE USER ldy IDENTIFIED BY ldy DEFAULT TABLESPACE ldy QUOTA UNLIMITED ON ldy;
CREATE TABLE ldy.t1 TABLESPACE ldy AS SELECT * FROM all_objects; -- ~60萬行, 23M
-- 2. 確認歸檔模式
ARCHIVE LOG LIST;
-- Database log mode: Archive Mode
SQL> SHUTDOWN IMMEDIATE;
$ rm /u02/oradata/ldy01.dbf
SQL> STARTUP
-- 實例啟動、MOUNT成功、OPEN失敗
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u02/oradata/ldy01.dbf'
SQL> ALTER DATABASE CREATE DATAFILE '/u02/oradata/ldy01.dbf';
Database altered.
-- 根據控制文件中記錄的文件號、大小、塊大小、表空間號,在原路徑創建空文件
SQL> RECOVER DATAFILE 6;
Media recovery complete.
-- 自動讀取歸檔日誌並應用至最新SCN,文件內容恢復至損壞前狀態
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> SELECT COUNT(*) FROM ldy.t1;
COUNT(*)
----------
605136
-- 數據完整,行數與損壞前一致
| 操作 | 原理 | 前提條件 |
|---|---|---|
CREATE DATAFILE | 讀取控制文件中該文件元數據 (文件號、創建SCN、大小、塊大小、表空間#),在原路徑/指定路徑創建同屬性空文件 | 控制文件完整;歸檔模式保留創建以來所有日誌 |
RECOVER DATAFILE n | 從文件創建SCN開始,順序應用歸檔日誌與線上日誌中的REDO記錄,將文件前滾至當前 | 歸檔日誌完整無缺失;文件非SYSTEM/UNDO (否則需整庫恢復) |
| 無需RESTORE | 省去RMAN還原備份文件的時間,直接利用日誌重放重建數據 | 日誌保留策略覆蓋文件創建至今的所有變更 |
ALTER DATABASE CREATE DATAFILE '/old/path/ldy01.dbf' AS '/new/disk/ldy01.dbf';
RECOVER DATAFILE 6;
ALTER DATABASE CREATE DATAFILE
'/u02/oradata/ldy01.dbf',
'/u02/oradata/ldy02.dbf';
RECOVER DATAFILE 6, 7;
-- 或 RECOVER TABLESPACE ldy;
-- 需RMAN備份
RESTORE TABLESPACE ldy;
RECOVER TABLESPACE ldy;
ALTER TABLESPACE ldy ONLINE;
#!/bin/bash
# 參數: $1=文件號 $2=可選新路徑
FILE_NO=$1
NEW_PATH=$2
sqlplus -s / as sysdba <
DB_BLOCK_CHECKING、DB_BLOCK_CHECKSUM 早期發現壞塊。BACKUP VALIDATE DATABASE 每日校驗備份可用性。V$RECOVER_FILE、V$DATAFILE_HEADER 異常狀態即時告警。chattr +i 關鍵文件 / 存儲層快照保護。ALTER DATABASE CREATE DATAFILE + RECOVER DATAFILE 是歸檔模式下單文件丟失最快恢復路徑,無需完整RMAN還原,業務中斷時間僅限於Mount→Open窗口 (通常<5分鐘)。熟練掌握此技能,是DBA從「備份管理者」進階為「恢復專家」的標誌。