环境:
redhat 7.9
问题描述:
数据库启动不了
SQL> startup
ORA-27106: system pages not available to allocate memory
Additional information: 6122
Additional information: 2
Additional information: 3
解决定位:
报错是文件运行太多,
最开始尝试给oracle增加可运行文件数量,解决不了,所以不是超过可运行文件数量的问题
内存是足够的,大页分配问题
解决步骤:
查看大页:
cat /proc/meminfo | grep Huge:
[oracle@ora19 ~]$ cat /proc/meminfo | grep Huge
AnonHugePages: 129024 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
(部分结果没有截图,只有文本)
HugePages_Total 为0,就是没有配大页
查看内存详情:
cat /proc/meminfo:
[root@ora19 ~]# cat /proc/meminfo
MemTotal: 10054452 kB
MemFree: 8081788 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
该命令输出信息很多,因为只有文本,所以就留取有用的信息
查看显示总内存是10G,剩余8G,没有空余就该增加内存,接下来划分给大页
修改配置文件:
vim /etc/default/grub
修改为:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="default_hugepagesz=2M hugepages=4000"
GRUB_DISABLE_RECOVERY="true"
只需要修改GRUB_CMDLINE_LINUX的内容
确认是否修改成功:
cat /etc/default/grub
系统读取:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
查看是否更改成功:
cat /proc/meminfo | grep Huge
尝试启动数据库:
su - oracle 切换 oracle用户
sqlplus / as sysdba 连接会话
startup 启动数据库实例