以下是Linux環境下Oracle內存配置的核心建議,結合搜索資源中的關鍵信息整理:
共享內存配置
kernel.shmmax
:設置為SGA最大值的1.1倍(如SGA=8G時,設為8.8G),確保單個共享內存段足夠容納SGA。kernel.shmall
:計算公式為SGA大小/4KB
,并向上取整(如SGA=8G時,設為2097152),避免共享內存段拆分。kernel.shmmni
:建議設為4096,滿足多共享內存段需求。大頁內存啟用
vm.nr_hugepages
,數值為(SGA大小+100MB)/2MB
(向上取整),并設置vm.hugetlb_shm_group
為Oracle用戶組,避免內存碎片。SGA_TARGET
動態調整各組件比例,無需手動設置DB_CACHE_SIZE
等參數。
SGA_TARGET
:設置為物理內存的50%-60%(如16G物理內存設為8G-9.6G),需小于SGA_MAX_SIZE
。SGA_MAX_SIZE
:設為SGA_TARGET
的1.1倍,預留擴展空間。PGA_AGGREGATE_TARGET
控制總內存,Oracle自動分配排序、哈希等操作內存。
PGA_AGGREGATE_TARGET
:設置為物理內存的20%-30%(如16G物理內存設為3.2G-4.8G),需預留部分內存給操作系統。V$PGASTAT
視圖,確保cache hit percentage
(緩存命中率)>90%,避免頻繁磁盤排序。避免內存過度分配
監控與調優
V$SGA
和V$SGASTAT
監控SGA組件使用情況,通過V$PGA_TARGET_ADVICE
獲取PGA配置建議。ALTER SYSTEM FLUSH SHARED_POOL
),避免內存碎片。生產環境驗證
# /etc/sysctl.conf
kernel.shmmax=17179869184 # 16G*1.1
kernel.shmall=4194304 # 16G/4KB
vm.nr_hugepages=8192 # (8G+0.1G)/2MB
-- 啟用ASMM
ALTER SYSTEM SET SGA_TARGET=8G SCOPE=SPFILE;
ALTER SYSTEM SET SGA_MAX_SIZE=8.8G SCOPE=SPFILE;
-- 啟用PGA自動管理
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=3G SCOPE=SPFILE;
ALTER SYSTEM SET WORKAREA_SIZE_POLICY=AUTO SCOPE=SPFILE;
參考來源: