ITPub博客

首页 > 数据库 > Oracle > [20221214]limits.conf里面关于memlock设置问题.txt

[20221214]limits.conf里面关于memlock设置问题.txt

原创 Oracle 作者:lfree 时间:2022-12-14 08:55:07 0 删除 编辑

[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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969886