[20221214]limits.conf里面关于memlock设置问题.txt
--//别人给我的反馈,就是无论设置/etc/security/limits.conf多小,数据库一样能起来不知道为什么,做一个记录.
--//OS的基本概念不熟悉.我自己也不知道问题在那里.
1.建立测试环境:
# grep "^oracle" /etc/security/limits.conf | grep memlock
oracle hard memlock 0
oracle soft memlock 0
$ egrep "Max locked memory|Limit" /proc/self/limits
Limit Soft Limit Hard Limit Units
Max locked memory 0 0 bytes
$ cd /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs
--//建立参数文件initxxxx.ora
$ cat initxxxx.ora
db_name=xxxx
instance_name=xxxx
sga_target=50G
sga_max_size=50G
shared_pool_size=2G
pre_page_sga=true
# grep "^vm.nr" /etc/sysctl.conf
vm.nr_hugepages = 26000
vm.nr_overcommit_hugepages = 1300
# sysctl -p
..
# sysctl vm.nr_hugepages
vm.nr_hugepages = 26000
--//vm.nr_hugepages设置生效.
2.测试:
--//启动数据库前:
# grep -i page /proc/meminfo
AnonPages: 217416 kB
PageTables: 6400 kB
AnonHugePages: 57344 kB
HugePages_Total: 26000
HugePages_Free: 26000
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
$ export ORACLE_SID=xxxx
SYS@xxxx> startup nomount
ORACLE instance started.
Total System Global Area 5.3447E+10 bytes
Fixed Size 2265864 bytes
Variable Size 5.3284E+10 bytes
Database Buffers 134217728 bytes
Redo Buffers 26480640 bytes
--//居然可以启动.也就是我设置memlock=0的情况,数据依旧可以启动.
$ grep -i pages /proc/meminfo
AnonPages: 281204 kB
AnonHugePages: 77824 kB
HugePages_Total: 26000
HugePages_Free: 473
HugePages_Rsvd: 74
HugePages_Surp: 0
Hugepagesize: 2048 kB
$ ps -ef |grep dbw[0]
oracle 36844 1 0 08:50 ? 00:00:00 ora_dbw0_xxxx
$ egrep "Max locked memory|Limit" /proc/36844/limits
Limit Soft Limit Hard Limit Units
Max locked memory 0 0 bytes
--//说明从bash shell继承的memlock的设置.
--//找到一个链接:
https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR402
Edit the memlock setting in the /etc/security/limits.conf file. The memlock setting is specified in KB, and the maximum
locked memory limit should be set to at least 90 percent of the current RAM when HugePages memory is enabled and at
least 3145728 KB (3 GB) when HugePages memory is disabled. For example, if you have 64 GB RAM installed, then add the
following entries to increase the maximum locked-in-memory address space:
--//翻译如下:
编辑/etc/security/limits.conf文件中的成员锁设置。内存锁设置在KB中指定,当HugePages内存被启用时,最大锁定内存限制应至少设
置为当前RAM的90%,当HugePages内存被禁用时,至少设置为3145728 KB(3 GB)。例如,如果您安装了64 GB RAM,则添加以下条目以增加
最大锁定内存地址空间:
* soft memlock 60397977
* hard memlock 60397977
--//60397977/1024 = 58982.3994140625
--//64*1024*1024*.9 = 60397977.6,与oracle建议值一致.
You can also set the memlock value higher than your SGA requirements.
Log in as oracle user again and run the ulimit -l command to verify the new memlock setting:
$ ulimit -l
60397977
--//不熟练linux OS的相关知识,也不知道问题在那里,仅仅做一个记录.我前一次遇到的情况可能是内存不足导致的情况.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2927977/ ,如需转载,请注明出处,否则将追究法律责任。