如何管理Oracle服务器的内核共享内存_shmmax与shmall计算

shmmax需≥SGA最大值(如sga_max_size)并留10%余量,shmall需≥所有实例SGA总和÷4096;RAC环境还需额外考虑GRD开销且各节点独立计算;修改后须sysctl -p生效、验证ipcs -lm、重启listener与数据库。shmmax 设置多少才够用?oracle 实例启动时若报 ora-27123: unable to attach to shared memory segment,八成是 shmmax 太小------它限制单个共享内存段最大字节数,必须 ≥ oracle sga 最大可能值(比如 sga_max_size 配置值)。查当前值:cat /proc/sys/kernel/shmmaxOracle 推荐下限:取 sga_max_size(单位字节)向上取整到 4KB 边界,但实际建议留 10% 余量别盲目设成物理内存一半------64GB 内存设 32GB shmmax 可能导致其他进程共享内存失败常见错误:把 shmmax 设成 4G(即 4294967296),但 Oracle 实际需要 4.2G,仍会报错shmall 怎么算才不溢出?shmall 是系统级总共享内存页数上限(单位:页,通常一页 = 4KB),它不是按 Oracle 单实例算的,而是所有共享内存段加起来不能超这个页数。公式: shmall ≥ (所有 Oracle 实例的 SGA 总和 + 其他应用共享内存) ÷ 4096查当前页大小:getconf PAGESIZE(绝大多数是 4096)漏算点:RAC 环境中每个节点都要算;如果启用了 AMM(memory_target),也要计入,因为 AMM 底层仍走 shm典型坑:只按一个实例算 shmall,上线第二个实例后 ipcs -lm 显示 shmmax 没超,但 shmall 已满,新实例起不来修改后 Oracle 不生效?检查这三处改完 /etc/sysctl.conf 并执行 sysctl -p,不代表 Oracle 就能立刻用上新值------内核参数加载时机和 Oracle 启动顺序有依赖关系。 文小言 百度旗下新搜索智能助手,有问题,问小言。

相关推荐
Cx330❀1 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
c238562 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
我科绝伦(Huanhuan Zhou)2 小时前
MySQL极端场景数据丢失防护:从Crash-Safe到异地备份
数据库·mysql
辞旧 lekkk2 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
明志数科2 小时前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒2 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪3 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
Navicat中国3 小时前
开发者入门:无服务器数据库
数据库·云原生·serverless·navicat
梅雅达编程笔记4 小时前
编程启蒙|Scratch 转 Python 系列第9天:字典/哈希表积木双向对照(AI大模型参数配置表实战)
开发语言·人工智能·python·numpy·pandas
whn19775 小时前
如何避免以root用户执行达梦
数据库