平台:windows2003 32bit + oracle 9i 32bit
因为32位windows2003上,oracle最大SGA具有1.8G的限制,如果修改db_cache_size
和sga_max_size 为错误的参数,将导致数据库无法启动,在startup时显示ORA-27100: shared memory
realm already exists错误。
如果没有对pfile进行备份,解决步骤如下:
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文件,将db_cache_size和sga_max_size修改为较小的值;
3、>startup
pfile='E:\oracle\ora92\database\INIT**.ORA'
强制oracle从指定的pfile文件启动。
因为windows平台下,oracle服务强制跟随系统服务启动,这种情况下即使shutdown
,oracle并没有完全关闭。而如果服务不开启,则无法通过sqlplus /nolog ;conn /as sysdba启动。
所以启动数据库依然提示ORA-27100: shared memory realm already exists
4、修改系统注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
将ORA_MYDB_AUTOSTART值由TRUE为 false
5、重新通过指定pfile方式启动数据库,如果依然无法启动,备份好pfile文件不断调整SGA参数;
6、启动成功,别忘记重新创建spfile:
>create spfile from
pfile='E:\oracle\ora92\database\INIT**.ORA'
因为oracle默认通过spfile启动;
7、修改系统注册表,让oracle随系统服务自动启动 。