《Oracle高性能自动化运维》一一1.4 Linux内存体系与Oracle内存空间

简介: 本节书摘来自华章出版社《Oracle高性能自动化运维》一 书中的第1章,第1. 5节,作者:冷菠  著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 Linux内存体系与Oracle内存空间
1.4.1 Linux用户空间与内核空间
一般来说,Linux操作系统把虚拟地址空间划分为用户空间和内核空间。例如x86架构下的32位Linux虚拟地址空间是4GB(0x0000 0000~0xffff ffff),其中大致将前3GB(0x0000 0000~0xbfff ffff)划分为用户空间,后1GB(0xc000 0000~0xffff ffff)划分为内核空间。
用户程序只能在用户模式(用户空间)下执行,而不能访问特权模式(内核空间)的数据,也不能跳转到内核代码执行,这样的设计可以保护内核,最主要的原因是当一个用户进程访问了非法地址,最坏的情况是该进程崩溃,而不会影响到内核和其他进程正常运行。
CPU在产生中断或异常时会自动切换模式,由用户模式切换到特权模式,这时就可以允许跳转到内核代码中执行中断或异常服务程序。事实上,所有内核代码的执行都是从中断或异常服务程序开始的,整个Linux内核就是由各种中断处理和异常处理程序组成的。
image

Linux下的Oracle内存分配如图1-3、图1-4所示。
Oracle10g中的SGA与PGA在Linux中是独立分配的,但是在11g中,默认情况下SGA内存区域包含了PGA的内存空间。
1.4.2 Linux下的Oracle内存体系结构
我们知道,Oracle主要是由内存结构和物理结构组成的,如图1-5所示。

image

图1-5 Oracle体系结构
可以看出,Oracle 内存结构存在于操作系统的用户空间,因此我们在部署Oracle前,就必须事先在Linux操作系统层面配置好Oracle内存地址空间,这样才能成功地配置SGA与PGA,从而避免在安装Oracle的时候出现类似“ORA-27102:out of memory”的错误。
1.4.3 Linux下的Oracle内存分配
Oracle内存结构处于Linux操作系统的用户空间,因此需要通过设置Linux操作系统内核参数来对Oracle 内存进行分配。由于Linux延续了SystemV IPC以及后来的POSIX IPC通信标准,因此Linux下的内存分配主要由以下参数决定,如表1-1所示。
image

SHMALL在很多系统上是用页面数而不是字节数来计算的。对于一般的Linux来说,Page页的大小一般为4096。
参数SHMMAX是Oracle最重要的Linux内核参数之一,该参数以字节为单位限制单个共享内存段的最大值。与此同时,参数SHMALL用于限制共享内存总数(字节或者Page页)。对于Oracle而言,必须保证这个数值足够大,建议值为超过数据库共享内存与其他共享内存的总和。Oracle官方文档对Linux参数限制描述如图1-6所示。
image

图1-6 Oracle官方Linux内核参数
我们可以通过以下示例来验证Linux下的Oracle(10g)内存分配:
1)查看Oracle SGA与PGA分配情况,如图1-7所示。
2)查看Linux系统共享内存分配情况,如图1-8所示。
可以看到,Linux系统分配了3个共享内存段,每个共享内存段的大小为2GB。
3)查看Linux环境中的sysctl.conf配置,如图1-9所示。
结合前面内容,不难看出:
单个共享内存段最大值为kernel.shmmax=2147483648B=2GB,与图1-10一致;
SGA=3(共享内存段数量)×2GB(单个内存段最大值)=6GB;
PGA=2GB;
Linux共享内存大小=kernel.shmall=2097152×4096/1024/1024/1024=8GB=SGA(6GB)+PGA(2GB)。
image

图1-7 Oracle SGA与PGA分配
image

图1-8 共享内存段
image

图1-9 sysctl.conf配置
上述内容可以概括如图1-10所示。
结合前面内容,我们可以得出以下结论:
参数kernel.shmmax决定了单个共享内存段的最大值为2GB,即在Linux操作系统层面能分配的单个共享内存段的最大值为2GB。如果所需共享内存大于该值,则需要分配多个共享内存段,以最大共享内存段(2GB)为阈值对所需共享内存段进行拆分分配。
参数kernel.shmall(8GB)决定了Linux操作系统能够提供给Oracle共享内存的上限值,SGA与PGA总和不能超过该阈值。
image

图1-10 Linux下的Oracle内存分配(10g)
当sga_target设置为6GB时,kernel.shmmax(2GB)决定了Linux系统分配的单个共享内存段上限值,因此需要分配3(6GB/2GB)个共享内存段来提供给SGA。Oracle推荐1个Instance使用1个共享内存段,那么当上述3个共享内存段被分配时,将会在共享内存段之间产生内存地址断层(GAP)。所以当数据库进行IPC通信时,可能存在跨共享内存段的内部数据交互,这样会降低共享内存段间的数据交互效率。因此,建议Linux环境中的Oracle使用1个共享内存段,这样可以减少跨内存段的数据交互,从而提升数据库性能。
图1-10是以Oracle 10g为例进行讲解的,有兴趣的读者可以结合图1-4对Oracle11g进行扩展。

相关文章
|
Oracle 关系型数据库 MySQL
Oracle Linux 8.10 编译安装sysbench
Oracle Linux 8.10 编译安装sysbench
613 34
|
Oracle Cloud Native 关系型数据库
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
647 11
Oracle Linux 10 - Oracle 提供支持 RHEL 兼容发行版
|
Oracle Cloud Native 关系型数据库
Oracle Linux 9.6 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.6 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
707 0
Oracle Linux 9.6 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
|
Oracle 关系型数据库 MySQL
Oracle linux 8 二进制安装 MySQL 8.4企业版
Oracle linux 8 二进制安装 MySQL 8.4企业版
724 1
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
1016 0
|
Oracle 关系型数据库 Linux
linux8安装oracle 11g遇到的问题记录
Oracle 11g在Linux 8上安装时会遇到link编译环节的问题。官方建议忽略安装中的链接错误,安装完成后应用DBPSU 11.2.0.4.240716补丁及一次性补丁33991024,再重新编译二进制文件,并配置监听器和数据库。但因11g已退出服务期,这些补丁需付费获取。网上信息显示22年1月的PSU补丁也可解决问题,找到该补丁后按常规方式打补丁即可。如有需求或疑问可咨询我。
1065 20
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
679 6
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
3860 0