ORA-00845: MEMORY_TARGET not supported on this system
常見於:DBCA 創建數據庫、調整 SGA 後重啟、Linux 環境下 Oracle 11g/12c/19c。
Oracle 11g 引入 Automatic Memory Management (AMM),參數 MEMORY_TARGET 依賴 Linux /dev/shm (tmpfs) 共享內存文件系統。
報錯核心原因: /dev/shm 空間 小於 MEMORY_TARGET 設定值(或 MEMORY_MAX_TARGET)。
例:SGA 設定 4GB,但 /dev/shm 僅 1GB(Linux 默認往往為物理內存 50%)。
mount -o remount,size=6G /dev/shm
# 1. 編輯 fstab
vi /etc/fstab
# 2. 找到 tmpfs 行,修改 size 參數
# 原:tmpfs /dev/shm tmpfs defaults 0 0
# 新:tmpfs /dev/shm tmpfs defaults,size=6G 0 0
# 建議:size 設置為物理內存的 80%-90%,且 ≥ MEMORY_MAX_TARGET
# 3. 重新掛載生效
mount -o remount /dev/shm
# 4. 驗證
df -h /dev/shm
# 輸出應顯示 Size 為 6G
若受限於虛擬化環境無法調整 /dev/shm,可禁用 MEMORY_TARGET:
-- 1. 關閉數據庫
SHUTDOWN IMMEDIATE
-- 2. 創建 PFILE(若用 SPFILE)
CREATE PFILE FROM SPFILE;
-- 3. 編輯 PFILE,註釋/刪除 MEMORY_TARGET,設置 SGA/PGA 獨立參數
*.memory_target=0
*.sga_target=3G
*.pga_aggregate_target=1G
-- 4. 啟動數據庫
STARTUP PFILE='/path/to/init.ora'
-- 確認無誤後創建 SPFILE
CREATE SPFILE FROM PFILE;
-- 查看當前內存參數
SHOW PARAMETER memory_target
SHOW PARAMETER sga_target
SHOW PARAMETER pga_aggregate_target
-- 查看 /dev/shm 使用情況
!df -h /dev/shm
-- 查看 SGA 組件
SELECT * FROM V$SGAINFO;
df -h /dev/shm 到日常巡檢,閾值 80% 報警。MEMORY_TARGET 動態調整無需重啟,但底層依賴 /dev/shm 不變。總結: ORA-00845 本質是 OS 共享內存資源不足。首選擴展 /dev/shm 保持 AMM 優勢(自動平衡 SGA/PGA),次選退回 ASMM 手動管理。切記:修改 fstab 後必須 remount 並驗證 df 輸出。