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

Linux shmmax 參數對 Oracle SGA 的影響與配置實測

     編輯:DB2 教學

Linux shmmax 參數對 Oracle SGA 的影響與配置實測

shmmax 定義

shmmax 定義系統允許的單一共享記憶體段最大值(位元組)。

實測環境

  • OS:Red Hat Enterprise Linux 5.5
  • DB:Oracle 11.2.0.1.0
  • SGA 目標:~400MB

模擬 shmmax 過小情境

echo 1000 > /proc/sys/kernel/shmmax  # 僅 1KB,極小值(重啟失效)

觀察現象

  • Oracle 啟動報錯:ORA-12547: TNS: lost contact
  • 告警日誌反覆出現:Process J000 died, see its trace file、kkjcre1p: unable to spawn jobq slave process
  • Trace 檔顯示 Process J000 is dead (pid=... state=KSOSP_SPAWNED)

共享記憶體段分析

ipcs -a
# 發現多個 393216 bytes (384KB) 的共享記憶體段,狀態 dest
# SGA 資訊顯示 Maximum SGA Size 422670336 (~403MB)

當 shmmax < SGA 時,Oracle 嘗試用多個共享記憶體段組合 SGA,但若 shmmax 過小導致段數過多,OS 資源耗盡,背景進程(如 J000)無法啟動。

最佳實踐建議

  • 將 shmmax 設定大於 SGA 總大小,使 SGA 置於單一共享記憶體段,避免分段開銷與資源耗盡。
  • 永久生效:修改 /etc/sysctl.conf,如 kernel.shmmax = 68719476736 (64GB),再執行 sysctl -p。

官方文件摘要

UNIX 預設核心資源常不足以支撐中大型 Oracle 實例。SHMMAX(最大共享記憶體段)與 SEMMNS(最大訊號量)可能低於建議值。Windows 採執行緒模型,IPC 資源較少且不可調整。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved