Linux的daemon进程对Oracle数据库的SGA使用大页内存的处理

简介: Oracle对运行在机器内存超过32G上的数据库推荐使用HugePages 来容纳Oracle数据库的SGA,参见。

大页内存管理在Oracle数据上的应用


Oracle对运行在机器内存超过32G上的数据库推荐使用HugePages 来容纳Oracle数据库的SGA,参见。

Note: 401749.1 - Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration

Note: 361323.1 - HugePages on Linux: What It Is… and What It Is Not…

在linux上配置sga使用hugepage的方法参见: https://blog.csdn.net/weixin_43424368/article/details/104518609

在linux上大页管理使内存的管理单位从4K提高到2M,大大提高了系统的性能,我用swingbench测试的结果是使TPS值大约提高了10%。

配置成功后,数据库启动时在Oracle的alert log中有相应的提示,例如:

************************ Large Pages Information *******************
Per process system memlock (soft) limit = 227 GB
Total Shared Global Region in Large Pages = 190 GB (100%)
Large Pages used by this instance: 97281 (190 GB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 97284 (190 GB)
Large Page size = 2048 KB
********************************************************************


daemon启动Oracle数据库时SGA无法使用大页管理

在大页管理的配置中需要对Oracle的用户增加memlock的设置,但用daemon启动Oracle的数据库时用以系统服务的方式进行的,并没有配置memlock参数,因此SGA无法使用大页管理,在alert log中有下面的提示:

************************ Large Pages Information *******************
Per process system memlock (soft) limit = 64 KB
Total Shared Global Region in Large Pages = 0 KB (0%)
Large Pages used by this instance: 0 (0 KB)
Large Pages unused system wide = 97284 (190 GB)
Large Pages configured system wide = 97284 (190 GB)
Large Page size = 2048 KB
RECOMMENDATION:
  Total System Global Area size is 190 GB. For optimal performance,
  prior to the next instance restart:
  1. Large pages are automatically locked into physical memory.
 Increase the per process memlock (soft) limit to at least 190 GB to lock
 100% System Global Area's large pages into physical memory
********************************************************************


Linux已经配置了大页而Oracle的SGA没有使用的后果

如果Linux已经配置了大页而Oracle的SGA没有,那么SGA将会放在普通的内存页面,将会造成内存耗尽,实际测试中,Centos和Redhat系统处于自我保护会把Oracle进程杀掉,而Oracle的linux(Unbreakable Enterprise Linux)不会。

[oracle@localhost scott]$ dstat -mt 20
------memory-usage----- ----system----
 used  buff  cach  free|     time     
3721M 8192B 6104M 1693M|02-04 03:47:29
5018M 8192B 6146M  353M|02-04 03:47:49
5232M 8192B 6146M  140M|02-04 03:48:09
5277M 8192B 6146M 94.2M|02-04 03:48:29


解决方案

修改文件/etc/security/limits.conf进行配置对daemon是没有用的,因为这个文件是为通过PAM登录的用户设置资源限制。需要对应修改文件“/etc/init.d/daemon-agent ”,增加一行:


LimitMEMLOCK=unlimited

或者修改/usr/lib/systemd/system/daemon-agent.service


[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535


修改完,需要systemctl daemon-reload。

启动时在alert log中有下面的提示,注意memlock是unlimited。

************************ Large Pages Information *******************
Per process system memlock (soft) limit = UNLIMITED
Total Shared Global Region in Large Pages = 190 GB (100%)
Large Pages used by this instance: 97281 (190 GB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 97284 (190 GB)
Large Page size = 2048 KB
********************************************************************


相关文章
|
17天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
64 11
|
1月前
|
Oracle Cloud Native 关系型数据库
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
68 10
Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
|
23天前
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
22天前
|
Linux 调度 C语言
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
算法 调度 开发者
深入理解操作系统:从进程管理到内存分配
本文旨在为读者提供一个深入浅出的操作系统知识之旅,从进程管理的基础概念出发,探索内存分配的策略与技巧。我们将通过实际代码示例,揭示操作系统背后的逻辑与奥秘,帮助读者构建起对操作系统工作原理的直观理解。文章不仅涵盖理论知识,还提供实践操作的指导,使读者能够将抽象的概念转化为具体的技能。无论你是初学者还是有一定基础的开发者,都能在这篇文章中找到有价值的信息和启发。
|
1月前
|
算法 调度 C++
深入理解操作系统:从进程管理到内存分配
【10月更文挑战第42天】本文将带你进入操作系统的神秘世界,探索其核心概念和关键技术。我们将从进程管理开始,了解操作系统如何协调和管理多个程序的运行;然后,我们将深入研究内存分配,看看操作系统如何有效地分配和管理计算机的内存资源。通过这篇文章,你将获得对操作系统工作原理的深入理解,并学会如何编写高效的代码来利用这些原理。
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
1月前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
|
1月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
120 2