初始化參數決定資料庫記憶體架構、程序上限、I/O 行為、優化器模式等核心特性。理解參數分類、作用域、PFILE/SPFILE 雙模式操作、錯誤恢復流程,是 DBA 穩定運行與效能調優的基本功。
| 分類 | 特性 | 代表參數 |
|---|---|---|
| 推導參數 | 由其他參數計算得出,不可直接設定 | SESSIONS (由 PROCESSES 推導) |
| OS 依賴參數 | 取值範圍受限於作業系統/硬體 | DB_CACHE_SIZE (受限實體記憶體) |
| 可變參數 | 可動態調整,影響效能與資源限制 | OPEN_CURSORS, PGA_AGGREGATE_TARGET |
-- 查詢現值
SELECT name, value FROM v$parameter WHERE name = 'processes';
-- 修改為 500 (需重啟)
ALTER SYSTEM SET processes = 500 SCOPE = SPFILE;
-- STARTUP FORCE 驗證
風險:設定過小導致 ORA-00020 (最大程序數超過),連 DBA 都無法登入。
| 特性 | PFILE (文字) | SPFILE (二進位) |
|---|---|---|
| 編輯方式 | vi/notepad 直接修改 | 僅 ALTER SYSTEM |
| 動態生效 | 需重啟 | 支援 SCOPE=MEMORY/SPFILE/BOTH |
| 啟動優先序 | 次要 | 預設優先 (spfile |
| 備份/版控 | 易於 Git 管理 | 需 RMAN 或匯出 PFILE |
-- 僅記憶體生效,重啟失效
ALTER SYSTEM SET db_cache_advice = OFF SCOPE = MEMORY;
-- 僅 SPFILE 生效,重啟後生效
ALTER SYSTEM SET db_cache_advice = OFF SCOPE = SPFILE;
-- 即時 + 持久化 (預設)
ALTER SYSTEM SET db_cache_advice = OFF SCOPE = BOTH;
-- 或省略 SCOPE 等同 BOTH
靜態參數 (如 PROCESSES、DB_BLOCK_SIZE) 僅支援 SCOPE=SPFILE,指定 BOTH 會報錯。
CREATE PFILE FROM SPFILE; 產生文字參數檔CREATE SPFILE FROM PFILE; 重建二進位檔STARTUP 正常啟動-- 範例:誤設 db_block_buffers=1000 導致無法啟動
STARTUP; -- 失敗
CREATE PFILE FROM SPFILE;
-- vi $ORACLE_HOME/dbs/initORCL.ora 刪除錯誤行
CREATE SPFILE FROM PFILE;
STARTUP; -- 成功
-- 重置參數至預設值
ALTER SYSTEM RESET parameter SCOPE = SPFILE SID = '*';
-- 指定 PFILE 啟動
STARTUP PFILE = '$ORACLE_HOME/dbs/init_custom.ora';
-- 判斷是否使用 SPFILE
SHOW PARAMETER spfile;
-- 或
SELECT value FROM v$parameter WHERE name = 'spfile';
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/cf_%F';
-- 驗證
SELECT * FROM v$rman_configuration;
RMAN> LIST BACKUP OF SPFILE;
啟用後,結構變更 (ADD DATAFILE、ALTER TABLESPACE) 觸發控制檔+SPFILE 自動備份。
CREATE SPFILE = '/tmp/spfile_restored.ora' FROM MEMORY;
CREATE PFILE = '/tmp/pfile_restored.ora' FROM MEMORY;
無需現有 SPFILE/PFILE,直接從執行個體 SGA 當前參數值重建,極大簡化災難恢復。
-- 設定追蹤事件 (需重啟)
ALTER SYSTEM SET EVENT = '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12' SCOPE = SPFILE;
STARTUP FORCE;
-- 移除事件
ALTER SYSTEM RESET EVENT SCOPE = SPFILE SID = '*';
STARTUP FORCE;
SQL> ARCHIVE LOG LIST;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ARCHIVE LOG LIST;
建立「參數變更申請單 → 測試環境驗證 → 生產維護窗口執行 → 事後監控確認」標準化流程,配合 SPFILE 自動備份與 FROM MEMORY 恢復機制,將參數管理風險降至最低。