| 特性 | PFILE (init.ora) | SPFILE (spfileSID.ora) |
|---|---|---|
| 格式 | 純文字 | 二進位 |
| 可手動編輯 | 是 | 否(需透過 ALTER SYSTEM) |
| 動態參數生效 | 需重啟 | 可即時生效 |
| 備份/版控 | 容易 | 需透過 RMAN 或 CREATE PFILE |
| 啟動優先順序 | 次要 | 主要(預設) |
手動修改二進位 SPFILE 會導致檔案損壞,資料庫無法啟動。恢復流程如下:
-- 典型路徑:$ORACLE_BASE/admin//pfile/init.ora.
-- 複製並重命名為 init.ora
cp $ORACLE_BASE/admin/orcl/pfile/init.ora.20240101120000 $ORACLE_HOME/dbs/init.ora
SQL> CONN / AS SYSDBA
SQL> STARTUP PFILE='$ORACLE_HOME/dbs/init.ora';
SQL> CREATE SPFILE='$ORACLE_HOME/dbs/spfileorcl.ora'
FROM PFILE='$ORACLE_HOME/dbs/init.ora';
File created.
SQL> STARTUP;
-- 現在使用預設 SPFILE 啟動成功
C:\> sqlplus /nolog
SQL> CONN / AS SYSDBA
Connected to an idle instance.
SQL> STARTUP PFILE='E:\Oraclexe\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:\Oraclexe\app\Oracle\product\10.2.0\server\dbs\SPFILEXE1.ORA'
FROM PFILE='E:\Oraclexe\app\Oracle\product\10.2.0\server\config\scripts\init.ora';
File created.
SQL> STARTUP;
ORACLE instance started.
...
Database opened.
CREATE PFILE FROM SPFILE; 產生文字備份,納入版控AUDIT SYSTEM 追蹤 ALTER SYSTEM 操作SID.parameter=valueALTER SYSTEM SET ... SCOPE=SPFILE#!/bin/bash
# restore_spfile.sh
SID=$1
PFILE_BACKUP=$ORACLE_BASE/admin/$SID/pfile/init.ora.latest
cp $PFILE_BACKUP $ORACLE_HOME/dbs/init${SID}.ora
sqlplus -s / as sysdba <
參數檔管理是資料庫可用性的基石。建立「修改→匯出 PFILE→版控→驗證」的標準流程,能在災難發生時將恢復時間壓縮至分鐘級。