如何管理Oracle服务器的内核共享内存_shmmax与shmall计算
shmmax需≥SGA最大值如sga_max_size并留10%余量shmall需≥所有实例SGA总和÷4096RAC环境还需额外考虑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 环境中每个节点都要算如果启用了 AMMmemory_target也要计入因为 AMM 底层仍走 shm典型坑只按一个实例算 shmall上线第二个实例后 ipcs -lm 显示 shmmax 没超但 shmall 已满新实例起不来修改后 Oracle 不生效检查这三处改完 /etc/sysctl.conf 并执行 sysctl -p不代表 Oracle 就能立刻用上新值——内核参数加载时机和 Oracle 启动顺序有依赖关系。 文小言 百度旗下新搜索智能助手有问题问小言。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2521608.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!