首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料庫從完好資料檔案恢復完整指南:有/無控制檔與日誌檔的兩大場景實戰

     編輯:Oracle 資料庫基礎

場景一:完整備份 (資料檔 + 控制檔 + 日誌檔)

情況 A:同目錄結構直接覆蓋

  1. 刪除新建資料庫所有檔案。
  2. 複製原備份檔案至對應目錄。
  3. 重建密碼檔 (關鍵步驟):
    ORAPWD FILE=$ORACLE_HOME/dbs/PWDdemo.ora PASSWORD=oracle ENTRIES=10
    
  4. 啟動掛載開啟:
    STARTUP NOMOUNT
    ALTER DATABASE MOUNT
    ALTER DATABASE OPEN
    

情況 B:目錄結構不同 → 重建控制檔

同場景二流程,參考下文。

場景二:僅有資料檔備份 (無控制檔、無日誌檔)

核心策略:重建控制檔 + RESETLOGS 開啟。

方法 1:僅安裝軟體 → 建立實例 → 重建控制檔

  1. 建立目錄結構 (bdump, udump, cdump, pfile, oradata)。
  2. 複製/修改參數檔 (pfile) 指向新路徑。
  3. ORADIM -NEW -SID demo -INTPWD oracle 建立服務與密碼檔。
  4. Net Manager 配置監聽與服務名。
  5. 複製資料檔至 oradata/demo/。
  6. STARTUP NOMOUNT PFILE=... → 執行 CREATE CONTROLFILE 腳本 (含 RESETLOGS NOARCHIVELOG)。
  7. 媒體恢復:
    
    RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
    CANCEL
    ALTER DATABASE OPEN RESETLOGS;
    
  8. 立即執行完整備份! RESETLOGS 後舊備份失效。

方法 2:DBCA 建立實例 → 替換資料檔 → 重建控制檔

  1. DBCA 建立同名實例 (自動生成 pfile、服務、密碼檔、目錄)。
  2. 刪除 oradata 下所有檔案,複製備份資料檔進入。
  3. 同方法 1 步驟 6-8:NOMOUNT → CREATE CONTROLFILE → RECOVER → OPEN RESETLOGS。

關鍵原理圖解:三階段啟動與檔案依賴

階段命令讀取檔案用途
NOMOUNTSTARTUP NOMOUNT參數檔 (PFILE/SPFILE)啟動執行個體、分配 SGA
MOUNTALTER DATABASE MOUNT控制檔 (參數檔指定路徑)取得資料檔/日誌檔路徑資訊
OPENALTER DATABASE OPEN資料檔/日誌檔 (控制檔記錄路徑)開放資料庫供存取

避坑關鍵點

  • 密碼檔必須重建:控制檔來自舊庫,但密碼檔屬執行個體級,新舊不匹配會導致 MOUNT 失敗。
  • RESETLOGS 後舊備份全部失效:必須建立新基線備份。
  • 控制檔腳本中 DATAFILE 列表必須完整:遺漏檔案會導致該表空間 OFFLINE 或恢復失敗。
  • 字元集必須一致:CHARACTER SET ZHS16GBK 需與原庫一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved