SGA 計算公式
| 版本 | 公式 |
| Oracle 8.0.x | SGA = (db_block_buffers * block_size) + (shared_pool_size + large_pool_size + log_buffers) + 1MB |
| Oracle 8.1.x | SGA = (db_block_buffers * block_size) + (shared_pool_size + large_pool_size + java_pool_size + log_buffers) + 1MB |
理論建議 SGA 佔作業系統物理記憶體 1/2 ~ 1/3,視負載調整。
Solaris /etc/system 核心參數對照
| 參數 | 預設/安裝值 | 建議調整值 | 含義 |
| shmsys:shminfo_shmmax | 4294967295 | 4294967295 | 單一共享記憶體段上限,建議 ≥ 最大 SGA |
| shmsys:shminfo_shmmin | 1 | 1 | 最小共享記憶體段 |
| shmsys:shminfo_shmmni | 100 | 315 | 共享記憶體標識符數量 |
| shmsys:shminfo_shmseg | 15 | 10 | 單一進程可連接最大段數 |
| shmsys:shminfo_shmall | - | > SGA | 系統總共享記憶體頁數上限 |
| semsys:seminfo_semmns | 200 | 630 | 信號量總數,與 PROCESSES 參數相關 |
| semsys:seminfo_semmni | 70 | 315 | 信號量集合數量 |
| semsys:seminfo_semmsl | - | 300 | 單一信號量集合最大信號量數 |
| semsys:seminfo_semopm | - | 315 | 單次 semop 最大操作數 |
| semsys:seminfo_semvmx | - | 32767 | 信號量最大值 |
| ulimit | 3000000 | - | 使用者程序資源限制 |
關鍵參數關聯說明
- shmmax:必須大於等於目標 SGA 大小,否則實例無法啟動。
- semmns:約 =
PROCESSES * 1.1 + 10,支援足夠的並發連線。
- semmsl:≥
PROCESSES,確保單一信號量集合容納所有進程。
- 修改
/etc/system 後需重啟作業系統生效。