服务器增加内存后无法重启数据库的问题及解决 (36天)

前几天生产环境需要做服务器的扩容,把原本64G的内存扩到了128G.然后调整了一些其他的kernel参数,在此基础上需要调整sga的大小,以便分配更多的缓存。 环境是11gR2的RAC环境,这时候rac有一个明显的优点就显现出来了,就是没有downtime。一个实例一个实例的改动,调整kernel,db参数都很方便管理。 所在的每个服务器只有一个oracle_home,各有两套rac环境在同一个unix账户下。所以我启停数据库的时候也是一套环境一套环境的来。反正节点也不多。 我先是按照要求把sga调整了一下,从20G调整到40G,这样一个服务器两套环境就占用80G,还有68G的空余。 然后保证另一个节点能够正常failover之后,开始改动,很多改动完一套环境,倒也没出什么问题, 开始第二套环境的时候,按照步骤先启停,做检查。 然后准备重启数据库的时候,报了下面的错误。显示内存问题,还有空间的问题,我检查了一把空间情况,没有发现什么问题。 用free -m检查内存使用情况,空余内存还多着呢。 Connected to an idle instance. SQL> startup nomount ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORA-27102: out of memory Linux-x86_64 Error: 28: No space left on device SQL> !oerr ora 27102 查看metalink(ID 301830.1),说是内核参数的配置不够。 内核参数的值如下: Last login: Sun Mar 30 22:42:16 2014 from xxxx -bash-4.1$ cat /proc/sys/kernel/shmall 16383998 -bash-4.1$ cat /proc/sys/kernel/shmmax 67108855808

CAUSE

shmall is the total amount of shared memory, in pages, that the system can use at one time.

SOLUTION

Set shmall equal to the sum of all the SGAs on the system, divided by the page size.

来做个演算, shmall应该是shmmax/page_size=67108855808/4096=16383998,这个和当前的设置相等 但是同一个unix账户下有两套环境,需要分配两套sga。所以shmall就远远不够了,需要同时修改shmmax,一般建议为内存的90%左右。 调整后参数值如下: -bash-4.1$ cat /proc/sys/kernel/shmall 33030178 -bash-4.1$ cat /proc/sys/kernel/shmmax 135291609088 然后需要sysctl给激活一下。 再重启数据库就没有问题了。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全华班

java学习手册-CentOS 6.3(x86_32)下安装Oracle 10g R2

CentOS 6.3(x86_32)下安装Oracle 10g R2 一、硬件要求 1、内存 & swap Minimum: 1 GB of RAM Reco...

3675
来自专栏崔庆才的专栏

一言不合就改成 777 权限?会出人命的!

最近和几个朋友开发项目,期间使用了一台服务器跑模型,这台服务器是多人公用的,很多人都在上面有自己的账号,互不干涉内政,一切看起来十分井然有序。

3353
来自专栏Gaussic

使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 顶

访问GitHub下载最新源码:https://github.com/gaussic/SpringMVCDemo

1381
来自专栏MoeLove

用正确的姿势开源Python项目

一般我们都会选择在项目的顶层包含较基础的文件,比如setup.py,requirements,README等文件。 一般情况下,一个预发布的Python项目中应...

1583
来自专栏PhpZendo

Symfony 服务容器:使用 XML 或 YAML 文件描述服务

本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:

801
来自专栏Hadoop实操

HDFS添加 NFS Gateway 角色实例启动失败问题及解决办法

昨天登录公司测试集群的时候,发现HDFS存在告警信息,查看详细信息,发现 NFS Gateway 进程退出,尝试重启该角色实例,执行重启操作后,报如下异常:

1K3
来自专栏菩提树下的杨过

redis 学习笔记(6)-cluster集群搭建

上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,...

2115
来自专栏大魏分享(微信公众号:david-share)

对,俺差的是安全! | 从开发角度看应用架构18

在Gartner定义的“第三平台”盛行的年代,html5大行其道。所以http方式访问的应用很多。因此,谈到应用的安全,我们先要了解http的几种认证方式。

711
来自专栏Java后端技术

解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.A

  最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@Resp...

1153
来自专栏纯洁的微笑

springcloud(九):配置中心和消息总线

我们在springcloud(七):配置中心svn示例和refresh中讲到,如果需要客户端获取到最新的配置信息需要执行 refresh,我们可以利用webho...

38412

扫码关注云+社区