首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 記憶體參數手動調整實戰:PFILE/SPFILE 轉換、SGA/PGA 關鍵參數設定與生效流程

     編輯:Oracle 資料庫基礎

適用場景

  • 資料庫啟動失敗需調整記憶體參數
  • 非 AMM (Automatic Memory Management) 環境手動微調
  • 遷移參數檔、備份參數檔

前提假設

  • Oracle 安裝目錄:D:\Oracle (Windows) 或 /u01/app/oracle (Linux)
  • Instance 名稱:ORCL (對應 initORCL.ora、spfileORCL.ora)

完整調整流程 (Windows 範例,Linux 同理)

步驟 1:以 SYSDBA 登入、匯出 PFILE、關閉資料庫


D:\Oracle> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> CREATE PFILE FROM SPFILE;  -- 產生 D:\Oracle\ora92\database\INITORCL.ORA
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT

步驟 2:編輯 PFILE 修改關鍵記憶體參數

打開 D:\Oracle\ora92\database\INITORCL.ORA,修改/新增下列參數:


*.db_cache_size        = 819M
*.shared_pool_size     = 256M
*.pga_aggregate_target = 256M
*.large_pool_size      = 64M
*.java_pool_size       = 64M

參數說明:

參數用途建議值 (視實體記憶體)
DB_CACHE_SIZE預設 Buffer Cache (標準塊大小)實體記憶體 40~50%
SHARED_POOL_SIZEShared Pool (Library Cache, Dictionary Cache)實體記憶體 10~15%
PGA_AGGREGATE_TARGETPGA 總量目標 (排序、雜湊、Bitmap)實體記憶體 20~30%
LARGE_POOL_SIZE並行、備份、共用伺服器64M~256M
JAVA_POOL_SIZEJava Stored Procedure / EJB64M~256M (若無用 Java 可設 0)

注意:若啟用 AMM (MEMORY_TARGET),上述手動參數會被忽略。建議關閉 AMM 後手動調優。

步驟 3:刪除舊 SPFILE、以新 PFILE 啟動並轉回 SPFILE


-- 作業系統層面刪除
DEL D:\Oracle\ora92\database\SPFILEORCL.ORA

-- 再次啟動
D:\Oracle> sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> CREATE SPFILE FROM PFILE;  -- 產生新 SPFILE
SQL> EXIT

步驟 4:驗證參數生效


SQL> SHOW PARAMETER db_cache_size;
SQL> SHOW PARAMETER pga_aggregate_target;
SQL> SELECT * FROM V$SGAINFO;

Linux/Unix 路徑對照

檔案類型預設路徑
PFILE$ORACLE_HOME/dbs/init<SID>.ora
SPFILE$ORACLE_HOME/dbs/spfile<SID>.ora
參數檔備份建議$ORACLE_BASE/admin/<SID>/pfile/

進階:記憶體架構選擇指南

模式關鍵參數適用場景
手動 SGA + 手動 PGASGA_TARGET=0, PGA_AGGREGATE_TARGET 手動精細控制、舊版相容、特殊工作負載
自動共用記憶體 (ASMM)SGA_TARGET > 0, PGA_AGGREGATE_TARGET 手動**推薦**:SGA 內部自動再平衡、PGA 手動控制
自動記憶體管理 (AMM)MEMORY_TARGET > 0, MEMORY_MAX_TARGET簡單部署、開發/測試、不需精細控制

生產環境最佳實務:採用 ASMM (SGA_TARGET + PGA_AGGREGATE_TARGET),保留彈性同時避免 AMM 在 Linux 上 /dev/shm 不足導致啟動失敗。

參數變更線上生效 vs 需重啟

參數SCOPE=MEMORYSCOPE=SPFILESCOPE=BOTH
DB_CACHE_SIZE立即生效 (縮小需空間)下次啟動立即 + 持久
SHARED_POOL_SIZE立即生效下次啟動立即 + 持久
PGA_AGGREGATE_TARGET立即生效下次啟動立即 + 持久
PROCESSES不可動態下次啟動下次啟動
MEMORY_TARGET立即 (有上限)下次啟動立即 + 持久

習慣使用 ALTER SYSTEM SET ... SCOPE=BOTH 確保即時與持久同步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved