SPFILE(二進制)不支持直接文本編輯,誤修改會導致資料庫無法啟動。標準修復路徑:找 PFILE → 用 PFILE 啟動 → 由 PFILE 重建 SPFILE → 替換舊文件 → 正常啟動。
路徑通常為 $ORACLE_BASE/admin/。去掉時間戳重命名為 init.ora。
SQL> CONN / AS SYSDBA
SQL> STARTUP PFILE='$ORACLE_BASE/admin//pfile/init.ora';
SQL> CREATE SPFILE='$ORACLE_HOME/dbs/spfile.ora'
FROM PFILE='$ORACLE_BASE/admin//pfile/init.ora';
File created.
spfile.ora 複製至 $ORACLE_HOME/dbs/(覆蓋舊文件)。init.ora ,建議重命名備份。SQL> STARTUP;(此時將自動讀取新 SPFILE)。C:\> sqlplus /nolog
SQL> CONN / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP PFILE='E:\Oracle_xe\app\Oracle\product\10.2.0\server\config\scripts\init.ora';
ORACLE instance started.
Total System Global Area 285212672 bytes
...
Database opened.
SQL> CREATE SPFILE='E:\Oracle_xe\app\Oracle\product\10.2.0\server\dbs\SPFILEXE1.ORA'
FROM PFILE='E:\Oracle_xe\app\Oracle\product\10.2.0\server\config\scripts\init.ora';
File created.
SQL> STARTUP;
ORACLE instance started.
...
Database opened.
| 文件類型 | 特點 | 修改方式 |
|---|---|---|
| PFILE (init.ora) | 文本文件,可直接編輯 | 文本編輯器,重啟生效 |
| SPFILE (spfileSID.ora) | 二進制,不可直接編輯 | ALTER SYSTEM SET ... SCOPE=SPFILE 或重建 |
CREATE PFILE FROM SPFILE:逆向導出文本參數文件,便於備份/遷移/對比。SHOW PARAMETER:查看當前實例生效值(內存值),而非文件值。