伺服器重啟後 Oracle 執行個體無法啟動,報錯 ORA-01078 / LRM-00109:找不到參數檔 init。本文記錄從診斷到修復的完整標準作業流程,適用於 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 遺失,且無 spfile 可供啟動。
su - oracle
export ORACLE_SID=blogJava
export ORACLE_HOME=/Oracle/product/9.2
vi $ORACLE_HOME/dbs/initblogJava.ora
-- 僅一行內容:
spfile=/Oracle/product/9.2/dbs/spfileblogJava.ora
關鍵:必須以 oracle OS 使用者建立,否則後續啟動會報 ORA-01031: insufficient privileges。
sqlplus /nolog
CONN / AS SYSDBA
CREATE SPFILE FROM PFILE='/Oracle/admin/blogJava/pfile/init.ora';
此處 init.ora 為備份/樣板參數檔(通常位於 $ORACLE_BASE/admin/)。執行成功後會在 $ORACLE_HOME/dbs/ 產生 spfileblogJava.ora。
STARTUP;
-- 應顯示:Database opened.
| 情境 | 症狀 | 處理方式 |
|---|---|---|
| 僅有舊 PFILE 文字檔 | 無 SPFILE、無 init.ora | 直接 STARTUP PFILE=/path/to/init.ora,啟動後 CREATE SPFILE FROM PFILE |
| SPFILE 損壞/遺失,有 RMAN 備份 | 啟動報 LRM-00109 | RESTORE SPFILE FROM AUTOBACKUP;(需控制檔/目錄完整) |
| RAC 環境 | 需叢集倉儲共享 SPFILE | SPFILE 必須置於 ASM/共享檔案系統,srvctl config database -d 確認路徑 |
| 12c/19c CDB/PDB | CDB 啟動成功但 PDB 掛載失敗 | 檢查 PDB_FILE_NAME_CONVERT、CREATE_FILE_DEST,或 ALTER PLUGGABLE DATABASE ALL OPEN |
ALTER SYSTEM SET ... SCOPE=BOTH 即時生效且持久化。CONFIGURE CONTROLFILE AUTOBACKUP ON 會自動包含 SPFILE;或手動 CREATE PFILE FROM SPFILE 產生文字備份。$ORACLE_HOME/dbs/init.ora 、spfile.ora 納入 Git/SVN,記錄每次參數變更。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 啟動失障風險降至最低,確保業務連續性。