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

Oracle 在 Solaris 上的核心參數調優指南:共享記憶體與訊號量完整設定

     編輯:Oracle 資料庫基礎

核心資源概念

  • 共享記憶體:多行程可存取的記憶體區域,Oracle 用於構建 SGA。三種配置方式:單一段、連續多段、不連續多段。優先嘗試單一段,失敗則遞降嘗試,全失敗則報錯。
  • 訊號量:同步原語(On/Off 狀態),Oracle 用於控制伺服器程序對 SGA 的存取。兩者皆為 Oracle 在 Unix 上啟動的關鍵資源,不足即啟動失敗。

/etc/system 關鍵參數設定

編輯 /etc/system,修改後需 reboot 生效,並用 sysdef -i 驗證。若未生效,執行 modload /kernel/sys/shmsys。

共享記憶體參數

參數含義建議值範例
shmmax單一共享記憶體段最大值物理記憶體 50%set shmsys:shminfo_shmmax=10485760
shmmin共享記憶體段最小值1set shmsys:shminfo_shmmin=1
shmmni系統最大共享記憶體段數100set shmsys:shminfo_shmmni=100
shmseg單一行程最大可附掛段數20set shmsys:shminfo_shmseg=20

訊號量參數

參數含義計算方式範例
semmni系統最大訊號量集合數固定 100set semsys:seminfo_semmni=100
semmsl單一集合最大訊號量數10 + 所有實例中最大 processes 參數值set semsys:seminfo_semmsl=200
semmns系統最大訊號量總數Σ(各實例 processes) - max_processes + max_processes×2 + 10×實例數set semsys:seminfo_semmns=200
semopm單次 semop 最大操作數100set semsys:seminfo_semopm=100
semvmx訊號量最大值32767set semsys:seminfo_semvmx=32767

多實例環境計算範例

假設兩個實例:Instance A (processes=150),Instance B (processes=200)。
semmsl = 10 + 200 = 210
semmns = (150+200) - 200 + 200×2 + 10×2 = 150 + 400 + 20 = 570

驗證與故障排除

  1. 修改 /etc/system 後重啟:reboot
  2. 檢查當前值:sysdef -i
  3. 若未生效,載入模組:modload /kernel/sys/shmsys
  4. 啟動資料庫測試,若報 ORA-27102 (out of memory) 或 ORA-7279 (semaphore) 則需再調大參數。

注意事項

  • Solaris 10 以降建議使用專案 實現資源控制,而非直接修改 /etc/system。
  • 參數過大可能影響系統穩定,遵循「夠用即好」原則。
  • Oracle 11g R2+ 支援 MEMORY_TARGET 自動管理,減少手工調校需求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved