查看linux下的Oracle共享内存段

[oracle@oradb ~]$ ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 1835009 oracle 640 100663296 180
0x00000000 1867778 oracle 640 1174405120 180
0x00000000 1900547 oracle 640 1174405120 180
0x00000000 1933316 oracle 640 1174405120 180
0x00000000 1966085 oracle 640 1174405120 180
0x00000000 1998854 oracle 640 1174405120 180
0x00000000 2031623 oracle 640 1174405120 180
0x00000000 2064392 oracle 640 1174405120 180
0x00000000 2097161 oracle 640 1174405120 180
0x00000000 2129930 oracle 640 1174405120 180
0x00000000 2162699 oracle 640 1174405120 180
0x00000000 2195468 oracle 640 1174405120 180
0x00000000 2228237 oracle 640 1174405120 180
0x00000000 2261006 oracle 640 1174405120 180
0x00000000 2293775 oracle 640 1174405120 180
0x00000000 2326544 oracle 640 637534208 180
0x73c02390 2359313 oracle 640 2097152 180

可以看出Oracle的内存共享段,分成了10余个内存共享段。

为什么会是1174405120字节呢?

通过查询

[oracle@oradb ~]$ cat /etc/sysctl.conf |grep shmmax
kernel.shmmax = 1200000000
[oracle@oradb ~]$ cat /etc/sysctl.conf |grep shmall
kernel.shmall = 10388608

可以知道

shmmax

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。

64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。

* 内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887
* 内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183
* 内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367
* 内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735
* 内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

shmall

该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。

一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),

  • 当内存为 12G 时, kernel.shmall = 3145728
  • 当内存为 16G 时, kernel.shmall = 4194304
  • 当内次为 32G 时, kernel.shmall = 8388608
  • 当内存为 64G 时, kernel.shmall = 16777216
  • 当内存为 128G 时, kernel.shmall = 33554432

调节kernel.shmall和kernel.shmmax的原因

如果我们的sga为16GB。物理服务器是32GB。那么这两个参数设置值如下:

kernel.shmall = 8388608
kernel.shmmax = 17179869184

为什么要设置大一点的shmall和shmmax,因为想让Oracle的一个instance包含在一个共享内存段中。

可以看,上述服务器的共享内存段分配了14个,这样会出现内存地址断层(GAP)。当数据库进行IPC通信时,会出现跨共享内存段的内部数据交互。这样会降低内存段间的数据交互效率。

因此,1个共享内存段包含数据库instance实例所需要的内存,可以减少跨内存段的交互,提高数据库的性能。

【内存优化】Oracle 的SGA与Linux的shmall和shmmax的关联的更多相关文章

  1. oracle内存优化

    一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且google很多下.现在记录下来,做下备份.         一.概述:                ...

  2. Oracle 学习总结 - 内存优化

    实例内存优化 开启自动内存管理 1. 设置memory_max_target alter system set memory_max_target=1G scope=spfile; /*init.or ...

  3. Linux性能优化之内存优化(二)

    前言 不知道大家看完前面一章关于CPU优化,是否受到相应的启发呢?如果遇到任何问题,可以留言和一起探讨这方面的问题.接下来我们介绍一些关于内存方面的知识.内存管理软件包括虚拟内存系统.地址转换.交换. ...

  4. 嵌入式/X86下linux系统死机及内存优化

    一.  CPU 过高或死锁导致系统卡死 1. CPU占用过高 (1)开线程太多导致CPU占用过高,系统卡死 解决:优化应用层业务逻辑,有些业务不必开线程就不开 (2)频繁清缓存导致读spi-flash ...

  5. 安装Oracle需要调整的linux内核参数

    在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-m ...

  6. Oracle 11g RAC for LINUX rhel 6.X silent install(静默安装)

    一.前期规划 1.硬件环境 CPU: Intel(R) Xeon(R) CPU E7-4820 v4 @ 2.00GHz  8*10核 内存:512GB OCR:2147*5 MB DATA1:2TB ...

  7. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  8. 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...

  9. SQLServer2014内存优化表评测

    SQLServer2014内存优化表评测 分类: SQL内存表2014-06-20 11:49 1619人阅读 评论(11) 收藏 举报 目录(?)[-] SQLServer2014的使用基本要求 内 ...

  10. ANDROID内存优化——大汇总(转)

    原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...

随机推荐

  1. 基于quartus的高级时序分析

    基于quartus的高级时序分析 一.派生时钟和异步存储器 派生时钟就是和独立时钟存在频率或者相位关系的时钟,异步存储器就是具有存储读写异步功能的存储器.在时序分析中,这两个部分的静态时序分析是需要设 ...

  2. KingbaseES V8R6备份恢复案例之---sys_waldump解析wal日志PITR恢复

    ​ 案例说明: 复现用户删除表(drop table)误操作,通过wal日志解析找到误操作时间点,执行基于时间点的恢复(PITR). 适用版本: KingbaseES V8R6 一.模拟业务现场操作 ...

  3. STM32中RFID模块(MFRC522)简单应用

    1. 前言 ​ 此篇只是对RFID模块的简单概述以及应用,没有原理,对提供的店家提供的代码,进行注释,以及简单使用流程 2. 函数 //功 能:寻卡 //参数说明: req_code[IN]:寻卡方式 ...

  4. 电影数据集【可供机器学习附爬虫源码】(豆瓣、爱奇艺、IMDB、腾讯视频等)

    电影数据集(豆瓣.爱奇艺.IMDB.腾讯视频.搜狐.1905) 爬虫爬取豆瓣.爱奇艺.IMDB.腾讯视频.搜狐.1905网,电影数据. 获取方式:微信搜索关注[靠谱杨阅读人生]回复[电影]. 整理不易 ...

  5. MySQL索引Innodb存储引擎

    MySQL索引优化 一.基础理解 MySQL语句的查询效率主要和索引树的高度有关,想要降低查询的次数提高查询的速度,减少直接对磁盘的I/O流的次数,就要让索引树的高度越低越好. 索引的定义:索引是帮助 ...

  6. Delving into Sample Loss Curve to Embrace Noisy and Imbalanced Data

    这篇论文: 提出了prob-and-allocate训练策略,在prob阶段获得样本损失,在allocate阶段分配样本权重. 以[2]的meta-weight-net为Baseline,取名为Cur ...

  7. 在DAYU200上实现OpenHarmony跳转拨号界面

    一.简介 日常生活中,打电话是最常见的交流方式之一,那么如何在OpenAtom OpenHarmony(简称"OpenHarmony")中进行电话服务相关的开发呢?今天我们可以一起 ...

  8. Docker 14 Docker Compose

    概述 使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器. 然而微服务架构的应用系统一般包含若干个微服务,每个微服务 ...

  9. JS 取Json中对象特定属性值

    解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...

  10. 关于集群节点timeline不一致的处理方式

    关于集群节点 timeline 不一致的处理方式 本文出处:https://www.modb.pro/db/400223 在 PostgreSQL/MogDB/openGauss 数据库日常维护过程中 ...