ORACLE9i——优化SGA最大值超过1.7G后导致实例无法启动
SGA_MAX_SIZE是调优oracle9i非常重要的参数,但也是并不是调的越大越好。相反,oracle9i对SGA_MAX_SIZE的最大值有一个限制:1.7G,超过该值就会造成实例无法启动,系统报以下信息:
1.当你控制台中设置完实例SGA最大值,点击“应用”后,oracle在“正在启动数据库”的过程中,提示:ORA-27102:out of memory,启动失败
2.当你第二次手动启动实例时,系统会提示:ORA-27100:shared memory realm already exists,最终还是启动失败。
解决该问题的思路:想办法把SGA_MAX_SIZE的值修改到1.7G以下,然后再启动
解决该问题需要用到从oracle9i开始才拥有的特性:spfile。
spfile是一个二进制文件,可以通过pfile来创建,而且可以通过rman备份。它管理的是初始化参数;
spfile和pfile不同之处在于:
1.在oracle9i之前使用pfile存储初始化参数设置,当oracle实例启动时去读取这些参数,任何参数的修改都必须重启实例才能生效。
2.使用spfile来管理初始化参数,可以使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,不必重启实例立即生效。
3.除了第一次启动数据库时,oracle读取的是pfile,然后根据pfile来创建spfile,从此启动我们不在需要pfile。
4.pfile是文本文件,可以通过文本编辑器来修改,而spfile是二进制文件,用文本编辑器无法正常编辑。可以修改文本格式的pfile之后,用“create spfile from pfile”命令将文本生成二进制的spfile
好,大概了解了spfile和pfile之后,我们的思路应该很清晰了,下面是解决方法:
1.手动把实例的服务关闭(在服务里找到“OracleServiceSID”服务,右击选择“停止”)
2.打开【程序】-【Oracle - OraHome92】-【Configuration and Migration Tools】-【Administration Assistant for Windows NT
】
3.在该页面中打开树形结构,找到实例结点,右击实例结点选择“启动/关闭选项”,取消“服务启动时启动历程”选项。
4.右击实例结点,点击“启动服务”。
5.运行中敲入“cmd”,进入sqlplus,然后通过命令创建可以修改的pfile文本文件:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 9月 24 22:43:20 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> create pfile='d:\zgznew.ora' from spfile;
文件已创建。
6.然后用文本编辑器打开zgznew.ora,找到SGA_MAX_SIZE参数,并将它修改到1.7G以下,注意,参数值的单位是字节。修改好之后保存,然后再通过命令创建spfile二进制文件:
SQL> create spfile from pfile='d:\zgznew.ora' ;
文件已创建。
7.此时再用startup命令启动实例就可以成功了:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 529079780 bytes
Fixed Size 454116 bytes
Variable Size 503316480 bytes
Database Buffers 25165824 bytes
Redo Buffers 143360 bytes
数据库装载完毕。
数据库已经打开。
阅读(2987) | 评论(0) | 转发(0) |