Oracle 執行個體啟動時,必須讀取參數檔案(PFILE/SPFILE)以初始化 SGA 與背景程序。本文透過實際操作演示,說明參數檔案搜尋順序、最小必要參數,以及啟動後的預設路徑與警示日誌內容。
Oracle 依序尋找下列檔案,找到第一個即停止搜尋:
spfile.ora spfile.orainit.ora init.ora預設路徑:$ORACLE_HOME/dbs (Unix/Linux) 或 %ORACLE_HOME%\database (Windows)。
注意:SPFILE 為二進位格式,不可直接用文字編輯器修改,須透過 ALTER SYSTEM 指令變更。
建立實例理論上僅需一個參數:db_name。以下實測流程以 ORACLE_SID=julia 為例:
$ export ORACLE_SID=julia
$ sqlplus "/ as sysdba"
SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initjulia.ora'
錯誤訊息顯示 Oracle 最後嘗試讀取 initjulia.ora。建立該檔案並寫入 db_name=julia 後,再次啟動即成功:
SQL> ! echo "db_name=julia" > /opt/oracle/product/9.2.0/dbs/initjulia.ora
SQL> startup nomount;
Oracle instance started.
Total System Global Area 97588504 bytes
...
SQL> show parameter dump_dest
NAME TYPE VALUE
-------------------- ------ ------------------------------
background_dump_dest string ?/rdbms/log
core_dump_dest string ?/dbs
user_dump_dest string ?/rdbms/log
SQL> show parameter control_files
NAME TYPE VALUE
------------- ------ ------------------------------
control_files string ?/dbs/cntrl@.dbf
Mon May 8 11:09:04 2006
Starting Oracle instance (normal)
WARNING: EINVAL creating segment of size 0x0000000006400000
fix shm parameters in /etc/system or equivalent
...
System parameters with non-default values:
db_name = julia
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
日誌記錄了非預設參數(db_name)、共用記憶體段建立警告(建議調整 /etc/system),以及背景程序啟動序列。
ORA-01078,依錯誤訊息指示的檔案路徑建立最小 PFILE 即可快速驗證實例啟動邏輯。shmmax、shmall 等核心參數。