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

Oracle SPFILE 損壞恢復:從 PFILE 重建 SPFILE 完整實操

     編輯:Oracle 資料庫基礎

誤設 SGA_MAX_SIZE、SHARED_POOL_SIZE 超出物理內存導致實例無法 OPEN,報錯 ORA-01078、LRM-00109。通過備份 PFILE 重建 SPFILE 實現極速恢復,無需重裝數據庫。

故障現象

  • SQL*Plus 連接報 ORA-01078: failure in processing system parameters
  • LRM-00109: could not open parameter file
  • Windows 服務啟動失敗,事件查看器記錄實例終止

恢復步驟(Linux/Unix 同理,路徑適配)

  1. 定位可用 PFILE 備份:通常在 $ORACLE_BASE/admin//pfile/,文件名如 init.ora.5162009204825
  2. 複製並重命名至 $ORACLE_HOME/dbs/(Linux)或 $ORACLE_HOME/database/(Windows),命名為 init.ora(如 initorcl.ora)
  3. 以 PFILE 啟動實例:
    SQL> STARTUP PFILE='$ORACLE_HOME/dbs/initorcl.ora';
    -- 或 Windows
    SQL> STARTUP PFILE='%ORACLE_HOME%\database\initorcl.ora';
    
  4. 重建 SPFILE:
    SQL> CREATE SPFILE FROM PFILE;
    -- 自動生成 $ORACLE_HOME/dbs/spfile.ora
    
  5. 驗證 SPFILE 啟動:刪除/備份 PFILE,執行 STARTUP 確認正常 OPEN

常見誤區

  • 直接修改二進制 SPFILE → 導致校驗和錯誤,不可行
  • 未備份 PFILE 時:可從 ALTER SYSTEM SET ... SCOPE=MEMORY 運行時參數反推構建 PFILE,或從告警日志啟動參數段恢復
  • RAC 環境需在所有節點同步操作,或使用共享存儲上的 SPFILE

最佳實踐:ALTER SYSTEM SET ... SCOPE=SPFILE 前先 CREATE PFILE FROM SPFILE 留存回滾點;關鍵參數變更實施「修改 → 重啟驗證 → 觀察 24h → 確認」流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved