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

前几天生产环境需要做服务器的扩容,把原本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给激活一下。

再重启数据库就没有问题了。

时间: 2024-08-30 05:14:10

服务器增加内存后无法重启数据库的问题及解决的相关文章

删除EM,强制结束EM进程后,启动数据库ORA-00119,ORA-00132报错的解决方法_oracle

通过emca -deconfig dbcontrol db -repos drop命令删除EM资料库时,很长时间没有删除完成,期间数据库连接数暴涨,达到数据库最大连接数,结果前台及后台均连接不上数据库.强制杀死EM及应用相关进程,关闭数据库后,重启数据库时报:ORA-00119,ORA-00132错误. SQL> startup; ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syn

win7系统升级PP助手后提示“初始化数据库失败”如何解决

  方法一: 1,打开电脑的[我的文档]后点击鼠标右键--属性; 2.在文档属性里,点击一下[还原默认值],之后重新打开PP助手试试; 方法二: 1.首先下载工具并安装:魔方下载; 2.下载后安装在电脑端,打开[魔方电脑大师]---点击下方的[设置大师]; 3.在魔方设置大师界面选择[系统文件夹设置]--勾选文档--之后点击[恢复系统默认路径]; 4.等待恢复即可后,查看路径是否是C盘路径下的用户路径,确定后即可重新打开PP助手. win7系统升级PP助手后提示"初始化数据库失败"两种

mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法_Mysql

mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法如下所示: 修改mysql5.7的配置文件即可解决,方法如下: linux版:找到mysql的安装路径进入默认的为/usr/share/mysql/中,进行对my-default.cnf编辑 利用查找功能"/"找到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" 将其删除或者是注释即可. windows版:32位找到mysql安装路径

Hibernate实现注册,注册一个账号后得重启服务器才能注册第二个,不然报错

问题描述 Hibernate实现注册,注册一个账号后得重启服务器才能注册第二个,不然报错 public class RegisterAction extends ActionSupport{ private static final long serialVersionUID = 1L; User user = new User(); public User getUser() { return user; } public void setUser(User user) { this.user

用vc++或java每隔一段时间读取一个日志文件(这是一个电话语音接听日志文件,文件内容在随时的增加)后提取有效数据到数据库中

问题描述 用vc++或java每隔一段时间读取一个日志文件(这是一个电话语音接听日志文件,文件内容在随时的增加)后提取有效数据到数据库中,怎么做到从上次读取文件的位置,也就是行数,开始下次的读取.大家知道,java和vc++是通过while()循环来读取文件,我当时的做法是记录上次while()的循环次数,下次读取时先空循环上次记录的行数,然后开始真正的读取文件.看看大伙有没有更好的办法. 解决方案 解决方案二:randomaccessfile+上次读取位置解决方案三:引用1楼inhibitor

HPE第9代ProLiant服务器 增加新处理器和永久内存

ZD至顶网服务器频道 04月05日 新闻消息: HPE近日更新了自己的第9代ProLiant服务器产品组合,引入了英特尔最新的Broadwell处理器以及新的永久内存技术,可让服务器的内存作为一个高性能的存储层. HPE服务器副总裁Tom Lattin表示,最新的HPE第9代服务器ProLiant DL360和DL380服务器还采用了新的管理.安全和存储功能,旨在帮助客户将现有的数据中心基础设施与云紧密结合,运行任务关键型应用. "这次我们的第9代ProLiant服务器引入了一系列新能力,&qu

SQL server服务器大内存配置(转)

以前的服务器,由于内存的价格过高,一般配的内存不是很多,超过4G的当然就不多了.现在的服务器,配置超过4G就很多,在配作SQL数据库服务器后,很多的人只选默认的设置,虽然可以正常使用,可是却把大量的内存给浪费(SQL服务使用的内存不会超过1.8G),系统的性能也不能因为的大内存而提升,这是很可惜的. 在本文中,我大致讲一下配置的过程.(如果服务器的内存少于4G,不用配置)(网上完全讲这个的,没有见过,随手写一个) 1.打开系统中的大内存支持(windows) 若要启用 Windows 2000

Mysql挂掉后无法重启报pid文件丢失的解决方法_Mysql

阿里云单核2G的配置挂着两个企业网站,访问量一般.最近每天几乎都会出现网站打不开显示数据库链接失败的问题. 多方寻求原因发现,mysql的pid文件缺失,并无法重启自建,后来也看了其他帖子说关闭日志什么的未果,查看系统日志发现,是因为内存满了导致mysql进程被杀,然后就一直挂起状态. Sep 25 11:33:48 iZ28jcqqr7lZ kernel: Out of memory: Kill process 23201 (mysqld) score 53 or sacrifice chil

Win8.1电脑关机后自动重启的解决办法

有不少朋友遇到过这个问题,在Win8系统下电脑关机后自动重启,关上十几次也不行.下面介绍一些解决这个问题的几种方法,供您选择使用. 从Win8系统之后,我们都发现关机速度已经比起Win7或者WinXP有了大幅度的提高.这是因为Win8模糊了关机与休眠的定位.由于平板电脑的发展,Win8也逐渐在台式机.笔记本和平板之间做了妥协. 为了提高Win8的开机速度,增加了一个"混合启动"的概念,就是将既有的启动模式和新增的快速休眠.唤起特性后,让操作系统转为一种类似休眠的状态,同时减少内存暂存的