1、问题
在启动数据库时,报内存不足或空间不足的信息
[oracle@hyzxora:/home/oracle]$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Nov 25 16:10:27 2021 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. 16:10:27 SYS@mesorcl>startup ORA-27102: out of memory Linux-x86_64 Error: 28: No space left on device Additional information: -268435456 Additional information: 1
2、分析
一般为内存分配问题:
(1)配置的kernel.shmmax 值小于给sga分配的值,需要增加kernel.shmmax的值或减小sga的值
(2)配置的vm.nr_hugepages的值,将内存占用光了,需要把值调小一些。(物理机内存越小越敏感)
--配置vm.nr_hugepages时,配合free -m查看。
比如:给vm.nr_hugepages分配值为20000,大约为20000*2m=40G,如果此时free的值为39G,启动数据库startup时,因为要直接占用40G的空间,当前空闲没有这么大,所以会报out of memory。此时:
--可以改小vm.nr_hugepages(vm.nr_hugepages的值,1大约为1.8m-2m,所以设置20000大约35G-40G)
--也可以通过释放buff/cache,使free变大
echo 1 > /proc/sys/vm/drop_caches --1:释放页缓存
echo 2 > /proc/sys/vm/drop_caches --2:释放dentries和inodes
echo 3 > /proc/sys/vm/drop_caches --3:释放所有缓存,常用 echo 0 > /proc/sys/vm/drop_caches --0:是系统默认值,默认情况下表示不释放内存,由操作系统自动管理