对Spfile之参数错误修改之后的解决办法(FAQ)
2024-07-21 02:08:40
供稿:网友
众所周知,在oracle9i中对初始化参数的管理引入了一个新的文件:spfile.这个参数是个二进制文件,手工对其进行编辑会出错.可以采用alter system set ......的命令方式来对其进行修改.
不妙的是,有的时候,错误的修改了参数之后发现系统不能启动,而粗心的用户或者初级dba可能还没有对该文件(或者参数文件的内容)进行备份.
这个时候如何解决呢?
下面是模拟出错的场景:
sql> connect / as sysdba
已连接。
sql> show parameter spfile
name type value
-------------------------------- ---------- --------------------
spfile string %oracle_home%/database pfile%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 pfiledemo.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
本文出处:
<a href="http://www.csdn.net/develop/read_article.asp?id=22598">http://www.csdn.net/develop/read_article.asp?id=22598</a>
网站运营seo文章大全提供全面的站长运营经验及seo技术!