ITPub博客

首页 > 数据库 > Oracle > [20260421]测试21c下测试use_large_pages遇到的问题.txt

[20260421]测试21c下测试use_large_pages遇到的问题.txt

原创 Oracle 作者:lfree 时间:2026-04-28 20:12:57 0 删除 编辑

[20260421]测试21c下测试use_large_pages遇到的问题.txt

--//最近几天一直在测试21c下测试use_large_pages设置,在测试中遇到1个情况,做一个记录.
--//首先测试时遇到如果use_large_pages=only或者auto_only的情况下,vm.nr_overcommit_hugepages设置无效.
--//但是测试有时候会在tmux各个面板下切换,会出现混乱的情况,也就是在这样的情况下遇到的情况,做一个记录.

1.环境:
# grep ^vm /etc/sysctl.d/98-oracle.conf
vm.nr_hugepages = 530
vm.nr_overcommit_hugepages = 20

SYS@book> startup nomount
ORACLE instance started.
Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes
--//已经启动实例.

SYS@book> show parameter use_large_pages
PARAMETER_NAME  TYPE    VALUE
--------------- ------- --------
use_large_pages string  ONLY

# grep -i hugepage /proc/meminfo
AnonHugePages:     57344 kB
HugePages_Total:     530
HugePages_Free:       11
HugePages_Rsvd:       11
HugePages_Surp:        0
Hugepagesize:       2048 kB

2.修改内核参数:
# grep ^vm /etc/sysctl.d/98-oracle.conf
vm.nr_hugepages = 520
vm.nr_overcommit_hugepages = 20

# grep ^vm /etc/sysctl.d/98-oracle.conf
vm.nr_hugepages = 520
vm.nr_overcommit_hugepages = 20

# sysctl -p /etc/sysctl.d/98-oracle.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.nr_hugepages = 520
vm.nr_overcommit_hugepages = 20
--//使参数生效。

# grep -i hugepage /proc/meminfo
AnonHugePages:     57344 kB
HugePages_Total:     530
HugePages_Free:       11
HugePages_Rsvd:       11
HugePages_Surp:       10
~~~~~~~~~~~~~~~~~~~~~~~~
Hugepagesize:       2048 kB

--//再次查看/proc/meminfo,可以发现HugePages_Surp:10。

# sysctl  vm.nr_hugepages
vm.nr_hugepages = 520

--//相当于通过vm.nr_overcommit_hugepages参数,借用了10个hugepages。
--//这样520+10=530.

SYS@book> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

# grep -i hugepage /proc/meminfo
AnonHugePages:     14336 kB
HugePages_Total:     520
HugePages_Free:      520
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

--//再次重启实例:
SYS@book> startup nomount
ORA-27106: system pages not available to allocate memory
Additional information: 6311
Additional information: 1

--//可以发现无法启动实例。必须设置vm.nr_hugepages=530,才可以启动实例。
# sysctl -w  vm.nr_hugepages=530
vm.nr_hugepages = 530

--//再次启动实例ok.
SYS@book> startup nomount
ORACLE instance started.
Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes

--//也就是use_large_pages=only的情况下,必须设置vm.nr_hugepages大于需要hugepages的数量,才能启动oracle实例成功。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3116909/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969347