Oracle 資料庫啟動時需讀取參數檔案,主要分為三種類型,了解其差異、搜尋順序與常見操作,是 DBA 基本功。
| 類型 | 檔名格式 | 特性 |
|---|---|---|
| SPFILE | spfile | 二進位格式,支援動態修改並持久化,不可直接用文字編輯器修改 |
| PFILE | init | 純文字格式,可手工編輯,修改後需重啟生效 |
| INIT.ORA | init.ora | 舊版預設範本,純文字,不建議生產環境直接使用 |
spfile.ora spfile.orainit.ora init.ora預設目錄:$ORACLE_HOME/dbs (Unix/Linux)
SQL> show parameter spfile;
若 VALUE 欄位有路徑,表示以 SPFILE 啟動。
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=SPFILE;
SCOPE 三種模式:
SPFILE:僅修改 SPFILE,下次重啟生效MEMORY:僅修改記憶體中目前值,重啟失效BOTH:同時修改記憶體與 SPFILE(預設)並非所有參數皆可動態修改,可查詢 V$SYSTEM_PARAMETER 的 ISSYS_MODIFIABLE、ISSES_MODIFIABLE 欄位判斷。
錯誤訊息:ORA-32001: write to SPFILE requested but no SPFILE specified at startup
原因:資料庫啟動時未使用 SPFILE。
解決步驟:
$ORACLE_HOME/dbs 是否存在 spfile.ora CREATE SPFILE FROM PFILE;ALTER SYSTEM 指令SQL> STARTUP PFILE='/custom/path/init.ora';
SQL> STARTUP SPFILE='/custom/path/spfile.ora';
SCOPE=BOTH 即時生效並持久化。V$SYSTEM_PARAMETER 確認可修改性,避免錯誤導致啟動失敗。