9i中,Oracle可以使用服务器参数文件(SPFILE,System Parameter File)代替传统的init.ora参数文件。SPFILE是Oracle 在操作系统级创建的一个二进制文件,用于存储数据库参数。
可以使用Create spfile命令基于数据库的当前参数设置创建一个SPFILE,可以使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数并且这些更改可以立即生效,你也可以使用ALTER SYSTEM的一个新选项SCOPE来选择使更改只应用于当前实例还是同时应用到spfile。SCOPE参数有三个可选值:MEMORY:只改变当前实例运行;SPFILE:只改变SPFILE的设置(假如修改的是静态参数,则必须指定SCOPE=SPFILE,否则将会报ORA-02095错。);BOTH:改变实例及SPFILE(使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句)。
当使用不带pfile 子句的startup 命令时,Oracle 将从平台指定的默认位置上的服务器参数文件(SPFILE) 中读取初始化参数。Oracle查找SPFILE或者创通的init.ora的顺序是:在平台指定的默认位置上,Oracle首先查找名为spfile$ORACLE_SID.ora的文件,假如没有就查找spfile.ora文件,还没有的话,就找init$ORACLE_SID.ora文件。
在$ORACLE_BASE\admin\db_name\spfile下,你很可能可以看到一个类似这样init.ora.192003215317]名字的文件,这就是初始化参数文件,只是跟上了时间戳。对于Oracle920,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来,你可以去掉这个长后缀,就是标准的pfile文件了。
对于Windows NT 和windows 2000 其位置是:$ORACLE_HOME\database\spfile$ORACLE_SID.ora
使用不带文件名的pfile在缺省位置创建spfile,可以用create spfile from pfile;命令,此时系统根据缺省位置(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)的pfile在缺省位置创建名为spfile.ora的文件。创建SPFILE需要SYSDBA或者SYSOPER的权限。
我们也可以根据SPFILE文件创建PFILE文件:
CREATE PFILE[=’PFILE-NAME’] FROM SPFILE[=’SPFILE-NAME’]
这时创建的pfile文件将是一个可编辑的文本文件。