您的位置:首页 > 其它

sga_max_size设置过大导致ORALCE无法启动ORA-27100解决办法

2011-08-26 09:25 447 查看
服务器环境:32位WINDOWS SERVER 2003旗舰版、16G内存、ORACLE10.1.0.2
由于系统内存16G,于是将ORACLE的SGA_MAX_SIZE设置为2G,结果重启数据库时报错:ORA-27100shared memory realm already exists原来是32位操作系统对SGA_MAX_SIZE大小有1.7G限制,超过限制就会报错。

解决办法:

1、>create pfile from spfile;

通过当前spfile创建pfile.

注意:pfile:文本文件,可以编辑,可以通过spfile创建;

spfile:二进制文件,只有通过create spfile from pfile方式创建,无法编辑。

NT平台下,默认的spfile位于$ORACLE_HOME\database,名称通常为SPFILE+$ORACLE_SID.ORA;

pfile默认生成路径同上,名称通常为INIT+$ORACLE_SID.ORA;

2、手工修改创建的pfile文件,将sga_max_size修改为较小的值,不要超过1.7G(注:pfile中是字节);

3、>startup pfile='pfile的绝对路径' 强制oracle从指定的pfile文件启动。

因为windows平台下,oracle服务强制跟随系统服务启动,这种情况下即使shutdown,oracle并没有完全关闭。而如果服务不开启,则无法通过sqlplus /nolog ;conn /as sysdba启动。

所以启动数据库依然提示ORA-27100: shared memory realm already exists

ORA- 27100往往是你在不正确的更改了ORACLE实例参数后,并将其永久保存到SPFILE后,重启ORACLE服务时,ORACLE会以这个不正确的 SPFILE来启动实例,虽然可能不会成功装载和打开数据库,但启动WINDOWS的服务:OracleServiceSID肯定会启动ORACLE实例,也就是说会分配SHAREMEMORY REALM(尽管ORACLE数据库没有启动),这时,你连接ORACLE,肯定是不成功的。当你试图用SQLPLUS登进去,发布STARUP
时,ORA-27100就出来了。而当你发布SHUTDOWN时,因为ORACLE没有正确的启动,所以也不能成功关闭。

解决办法:关闭ORACLE服务,删除数据库的spfile文件,用新的正确的pfile启动后,再生成新的spfile;

4、startup pfile=''

createspfile from pfile='' (数据库启动默认SPFILE启动)

shutdownimmediate;

startup;(此处调用SPFILE)数据库OPEN 成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: