敬业的IT人 >> 数据库 >> 其他数据库 >> 对Spfile之参数错误修改的解决办法

对Spfile之参数错误修改的解决办法

敬业的IT人 互联网 佚名 2008-1-8 16:14:56
众所周知,在Oracle9i中对初始化参数的管理引入了一个新的文件:Spfile.这个参数是个二进制文件,手工对其进行编辑会出错.可以采用alter system set ......的命令方式来对其进行修改.
  
  不妙的是,有的时候,错误的修改了参数之后发现系统不能启动,而粗心的用户或者初级DBA可能还没有对该文件(或者参数文件的内容)进行备份.
  
  这个时候如何解决呢?
  
  下面是模拟出错的场景:
  
  SQL> connect / as sysdba
  已连接。
  SQL> show parameter spfile
  


  NAME TYPE VALUE
  ------------------------------------ ---------- ------------------------------
  spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
  
  #使用了Spfile
  
  SQL> show parameter db_cache_size;
  
  NAME TYPE VALUE
  ------------------------------------ ---------- ----------------------------
  db_cache_size big integer 67108864
  
  SQL> alter system set db_cache_size=671088640000000 scope=spfile;
  
  系统已更改。
  
  #我们在上一步把一个参数进行“错误的调整”
  
  SQL> shutdown immediate;
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  
  SQL> startup
  ORA-27102: out of memory
  OSD-00029: Message 29 not found; product=RDBMS; facility=SOSD
  
  O/S-Error: (OS 8) ?洢???????????????
  SQL>


进入讨论组讨论。   #错误出现,不能启动数据库。
  
  有的朋友可能看到过《9i新特点:SPFILE的使用》(参见下面的参考资料)这篇文章,其中有这样一句话:
  
  你可以在PFILE链接到SPFILE文件,同时在PFILE中定义其他参数,如果参数重复设置,后读取的参数将取代先前的设置。
  
  稍加注意这句话,发现正是解决我们目前问题的办法:
  
  手工创建一个pfile 类型的文件,内容如下:
  
  spfile='D:\ORACLE\ora92\database\SPFILEDEMO.ORA'
  *.db_cache_size=67108864
  
  在SPFILEDEMO.ORA文件中已经有一个db_cache_size 参数,后读取的参数将取代先前的设置。
  OK。
  现在用这个参数启动数据库:
  
  SQL> STARTUP pfile='D:\ORACLE\ora92\database\initdemotest.ora'
  ORACLE 例程已经启动。
  
  Total System Global Area 160505408 bytes
  Fixed Size 454208 bytes
  Variable Size 92274688 bytes
  Database Buffers 67108864 bytes
  Redo Buffers 667648 bytes
  数据库装载完毕。
  数据库已经打开。
  
  马上要做的事情就是备份spfile 的内容:
  
  SQL> create pfile='D:\ORACLE\ora92\database\initdemo.ora' from spfile;
  
  亡羊补牢,记得再修改初始化参数之前做好备份。
  
  参考资料:
  
  《9i新特点:SPFILE的使用》 (eygle大作,ITPub 电子杂志第四期)
  下载地址:http://www.itpub.net/magazine/itpub200304.rar
  
  《Oracle9i Database Administrator's Guide Release 2 (9.2)》
  下载地址: http://tahiti.oracle.com

  http://www.google.com

进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com