Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4634
  • 博文数量: 6
  • 博客积分: 200
  • 博客等级: 二等列兵
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-10 11:10
文章分类
文章存档

2011年(1)

2009年(5)

我的朋友
最近访客

分类: Oracle

2009-11-11 11:26:03

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
数据库装载完毕。
数据库已经打开。
阅读(332) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:解决ORA-00824: cannot set sga_target due to existing

给主人留下些什么吧!~~