在 RHEL6 上为 Oracle 18C xe 启用大页

在 RHEL6 上为 Oracle 18C xe 启用大页

我一直在尝试从 oracle AMM 切换到 ASMM 大页面。我在 RHEL 6 上做了以下更改

在 /etc/sysctl.conf 中添加了以下条目(按照 Hugepages_setting.sh 的建议)

      vm.nr_hugepages=777

在 /etc/security/limits.conf 中添加了以下条目

       oracle   soft   memlock    2831155
       oracle   hard   memlock    2831155

重新启动服务器,将oracle参数memory_target、memory_max_target、sga_target、sga_max_target、use_large_pages更改为特定值。

数据库重新启动后,我可以看到以下内容:

     [root@rheloracle ~]# grep -i huge /proc/meminfo
      AnonHugePages:         0 kB
      HugePages_Total:     777
      HugePages_Free:        8
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Hugepagesize:       2048 kB

当我关闭数据库时,我可以看到 HugePages_Free 等于 HugePages_Total。

       [root@rheloracle ~]# grep -i huge /proc/meminfo
       AnonHugePages:         0 kB
       HugePages_Total:     777
       HugePages_Free:      777
       HugePages_Rsvd:        0
       HugePages_Surp:        0
       Hugepagesize:       2048 kB

看起来数据库级别和操作系统级别的 HugePage 配置是同步的并且正在使用。但所有示例和文档(我已引用)都表明,启用大页面后,HugePages_Rsvd 应该具有非零值。但同样的情况并没有发生在我的身上。如果我遗漏了什么或者 HugePages_Rsvd 0 是正常的,您能建议一下吗?

(我在 RHEL6 上运行 oracle 18c xpress 版本)

答案1

PRE_PAGE_SGA仅当 Oracle参数设置为FALSE(我认为是 Oracle 11 之前的默认值)时,您才应该看到“保留大页面”的值。

从 Oracle 12 开始,默认情况下您应该看到以下内容:

SQL> show parameter PRE_PAGE_SGA

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pre_page_sga                         boolean     TRUE

$ grep HugePages_Rsvd /proc/meminfo
HugePages_Rsvd:        0

相关内容