一次对spfile错误的修改引发的问题

2009-11-27,在对Oracle的学习过程中,尝试修改SPFILE里定义的初始化参数。直接打开SPFILE文件(Solaris平台下),用VI命令修改了其中的部分参数,修改强制保存后,数据库无法启动:出现如下错误:

ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/10gr2/dbs/initstevendb.ora'

原因:

spfile以二进制格式存放,不支持直接对文件的修改。强制修改就改变文件类型。

知识点分析:

1. Oracle10启动需要一个参数文件,查找启动参数文件的顺序如下:

spfile<ORACLE_SID>.ora-->spfile.ora-->init<ORACLE_SID>.ora,由上面的错误显示可以看出Oracle启动时,依次尝试寻找三个参数文件,直至尝试用最后一个文件initstevendb.ora启动失败。

查看spfile location的方法:

SQL>show parameter spfile;


2. Oracle启动参数的修改可以在SQL*PLUS下动态进行,修改及时生效,无需重启ORACLE生效。

语法:

alter system set parameter=value scope=spfile|both|memory;

或者将spfile文件导出生成pfile文件,pfile是文本文件,可以直接修改文件,后又将pfile导成spfile,启动数据库使修改生效。

语法:

$ su - oracle
$ sqlplus / as sysdba
SQL> create pfile from spfile;
File created.
$ vi init<ORACLE_SID>.ora

'修改参数‘
:wq '保存退出'
SQL> shutdown immediate;
SQL> startup pfile=$ORACLE_HOME/dbs/init<ORACLE_SID>.ora
SQL> create spfile from pfile;

3.spfile损坏后的恢复

Oralce数据库安装过程中,会生成一个pfile文件,存放于'/***/oracle/admin/$ORACLE_SID/pfile'目录下,文件名为:

init.ora.8232009110,后面的数字在不同的环境里有不同的值,可以根据这个pfile文件恢复spfile文件。

$ su - oracle
$ sqlplus / as sysdba
SQL> create spfile from spfile='/***/oracle/admin/$ORACLE_SID/pfile/init.ora.8232009110';
File created.
$startup


你可能感兴趣的:(spfile)