解决内存设置过大导致实例无法启动ORA-27100


在安装一台新设备的之后,由于操作失误多在参数值多加了个0,导致SGA_MAX_SIZE和SGA_TARGET设置的值超大,在重启数据库的时候提示ORA-27100: shared memory realm already exists,该错误的解释如下:

ORA-27100:
    shared memory realm already exists
Cause:    Tried to start duplicate instances, or tried to restart an instance that had not been properly shutdown
Action:    Use a different instance name, or cleanup the failed instance's SGA
环境配置:windows2003 +Oracle 10.2.0.1

知道原因之后,解决办法就是修正正确的参数值,办法就是使用备份的pfile来启动实例和打开数据库,但是处理过程中有些细节需要注意的,在此记录下。
首先,出现在这个错误之后,我首先想到的是参数设置错误了,因此尝试使用pfile来启动实例,但是还是继续报错,是在不解,于是重启机器,之后再次尝试还是无果;
windows2003的环境,安装之后默认的服务启动方式没有改变,是自动启动的,在重启之后尝试也还是报错,于是就想到应该把自启动改成手工启动,再次重启机器之后使用pfile启动实例成功(当然需要把spfile从原位置移开,方法有很多),随后再次进行参数调整即可,整个过程还算顺利,因为在操作前对参数文件进行了备份,因此对该问题的处理还是比较顺利。
事后分析了下原因,为什么在第1次报错以及重启之后还是无法使用pfile启动实例,我的猜测是:由于在使用错误的参数尝试启动实例和打开数据库失败之后,已经有相关的信息写入到系统或者内存信息中,这个时候如果不进行重启系统,是无法错误加载的信息清理干净掉的,因此处理过程中重要的操作就是要重启操作系统(这也是win系统的悲催,在linux下测试过,是没有这个问题的)。
-The End-

相关内容