故障描述
a, Oracle 11.2.3 + Linux 6.2
b, 調整Linux記憶體16G -> 32G
c, 調整Oracle記憶體SGA_TARGET 7760M -> 14G
d, 啟動資料庫報錯
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
解決方法
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 2097152
參數設定過小所緻,當SGA_TARGET增大到14G,kernel.shmall必須大于14*1024*1024*1024/4096=3670016,我修改為16*1024 *1024*1024/4096=4194304。
官方解釋
"如何使用Linux HugePages提高大型資料庫的x86記憶體性能"
http://www.oracle.com/technetwork/cn/articles/servers-storage-dev/hugepages-2099009-zhs.html
AMM與Linux HugePages
"ASMM versus AMM and LINUX x86-64 Hugepages Support (Doc ID 1134002.1)"
If AMM is enabled and Linux hugepage's are enabled as well, then AMM will
override Linux hugepage's usage.
The AMM feature is not to be confused with Automatic Shared Memory Management
(ASMM) which was introduced in 10g. ASMM along with the PGA_AGGREGATE_TARGET
database parameter will automatically manage the SGA memory and the PGA
memory and does not conflict with Linux hugepage's. Thus, if you want to use
Linux hugepage's and automatically manage database memory then using ASMM is
the workaround.
ASMM is supported with LINUX x86-64 Hugepages but AMM is not supported with Hugepages.