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

Oracle 啟動失敗排查實戰:缺少參數檔、SPFILE 建立與權限問題完整解決流程

     編輯:Oracle 資料庫基礎

伺服器重啟後 Oracle 執行個體無法啟動,報錯 ORA-01078 / LRM-00109:找不到參數檔 init.ora。本文記錄從診斷到修復的完整標準作業流程,適用於 Oracle 9i/10g/11g/12c/19c(非 CDB 架構)。

錯誤現場還原

SQL> STARTUP;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/Oracle/product/9.2/dbs/initblogJava.ora'

原因:$ORACLE_HOME/dbs/init.ora 遺失,且無 spfile.ora 可供啟動。

標準修復步驟(9 步驟 SOP)

1. 確認環境變數

su - oracle
export ORACLE_SID=blogJava
export ORACLE_HOME=/Oracle/product/9.2

2. 建立極小化 PFILE 指向 SPFILE

vi $ORACLE_HOME/dbs/initblogJava.ora
-- 僅一行內容:
spfile=/Oracle/product/9.2/dbs/spfileblogJava.ora

關鍵:必須以 oracle OS 使用者建立,否則後續啟動會報 ORA-01031: insufficient privileges。

3. 以 SYSDBA 進入 SQL*Plus 建立 SPFILE

sqlplus /nolog
CONN / AS SYSDBA
CREATE SPFILE FROM PFILE='/Oracle/admin/blogJava/pfile/init.ora';

此處 init.ora 為備份/樣板參數檔(通常位於 $ORACLE_BASE/admin//pfile/)。執行成功後會在 $ORACLE_HOME/dbs/ 產生 spfileblogJava.ora。

4. 啟動驗證

STARTUP;
-- 應顯示:Database opened.

常見變體與對應處理

情境症狀處理方式
僅有舊 PFILE 文字檔無 SPFILE、無 init.ora直接 STARTUP PFILE=/path/to/init.ora,啟動後 CREATE SPFILE FROM PFILE
SPFILE 損壞/遺失,有 RMAN 備份啟動報 LRM-00109RESTORE SPFILE FROM AUTOBACKUP;(需控制檔/目錄完整)
RAC 環境需叢集倉儲共享 SPFILESPFILE 必須置於 ASM/共享檔案系統,srvctl config database -d 確認路徑
12c/19c CDB/PDBCDB 啟動成功但 PDB 掛載失敗檢查 PDB_FILE_NAME_CONVERT、CREATE_FILE_DEST,或 ALTER PLUGGABLE DATABASE ALL OPEN

預防措施:參數檔管理最佳實務

  1. 永遠使用 SPFILE:ALTER SYSTEM SET ... SCOPE=BOTH 即時生效且持久化。
  2. 定期備份 SPFILE:RMAN CONFIGURE CONTROLFILE AUTOBACKUP ON 會自動包含 SPFILE;或手動 CREATE PFILE FROM SPFILE 產生文字備份。
  3. 版本控管:將 $ORACLE_HOME/dbs/init.ora、spfile.ora 納入 Git/SVN,記錄每次參數變更。
  4. 監控啟動狀態:腳本定期嘗試 STARTUP FORCE 或解析 alert.log 關鍵字 ORA-01078、LRM-00109 發送告警。

一鍵診斷腳本

#!/bin/bash
# check_oracle_startup.sh
SID=$1
. /home/oracle/.bash_profile
export ORACLE_SID=$SID
sqlplus -s / as sysdba <

遵循「建立指向 SPFILE 的 PFILE → 從備份 PFILE 建立 SPFILE → 啟動」標準流程,配合參數檔備份與版控機制,即可將 Oracle 啟動失障風險降至最低,確保業務連續性。

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