当从一个文本初始化参数文件创建服务器参数文件spfile时,在初始化参数文件中在相同行的特定注释会作为参数设置在spfile文件中被维护.所有其它的注释会被忽略.
Oracle建议你允许数据库给spfile使用缺省名和缺省存储位置.这简化的数据库的管理.比如使用startup命令就会从缺省位置读取spfile文件.
下面的表格显示了在UNIX,Linux和Windows平台上的文本初始化参数文件pfile和服务器参数文件spfile的缺省文件名和存储位置.
PFILE and SPFILE Default Names and Locations on UNIX, LInux, and Windows
-------------------------------------------------------------------------------------------------------------
platform pfile default name spfile default name pfile default location spfile default location
-------------------------------------------------------------------------------------------------------------
unix,linux initORACLE_SID.ora spfileORACLE_SID.ora ORACLE_HOME/dbs或者 不使用oracle asm:
与数据文件在同一个目录 ORACLE_HOME/dbs或者与
数据文件在同一个目录
使用oracle asm:与数据文件
在同一个磁盘组
windows initORACLE_SID.ora spfileORACLE_SID.ora ORACLE_HOME\database 不使用oracle asm:
ORACLE_HOME\database
使用oracle asm:与数据文件
在同一个磁盘组
---------------------------------------------------------------------------------------------------------------
注意:在启动时,实例首先搜索一个名叫spfileORACLE_SID.ora的spfile文件,如果没有找到就会搜索spfile.ora文件.
使用spfile.ora能让所有的oracle rac实例使用相同的服务器参数文件.
如果spfile没找到实例将搜索文本初始化参数文件initORACLE_SID.ora.
如果你不是在缺省位置创建一个spfile文件那么你必须创建一个缺省的pfile在pfile文件的根部指示这个服务器参数文件.
当使用dbca创建数据库且使用oracle asm时,dbca将会把spfile存储在一个oracle asm磁盘组也会在pfile文件的部指示这个服务器参数文件.
spfile初始化参数
spfile初始化参数包含了当前服务器参数文件的名字.当数据库使用缺省的服务器参数文件时,也就是执行没有pfile参数的startup命令时--这个spfile的值由服务器内部指定.在SQL*Plus中执行show parameter spfile(或任何其它的方法来查询参数的值)来显示当前使用的服务器参数文件名.
改变初始化参数值
使用alter system语句来设置,修改或还原初始化参数值.如果你正使用一个文本初始化参数文件,alter system语句就只能对当前实例改变参数的值.因为没有机制可以自动更新磁盘上的文本初始化参数文件.你必须手工更新.使用服务器参数文件可以克服这个问题.
有两种类型的初始化参数文件
.动态初始化参数对于当前oracle实例是可以修改的.这种改变会立即生效.
.静态初始化参数对于当前实例是不能修改的.必须修改文本初始化参数文件或者服务器参数文件中的参数然后重新启动实例使修改生效
设置或修改初始化参数值
使用有set子句的alter system的语句来设置或修改初始化参数的值.可选scope子句用来指定修改的范围:
----------------------------------------------------------------------------------------------------
scope clause description
----------------------------------------------------------------------------------------------------
scope=spfile 这种修改只应用于服务器参数文件.它的效果如下:
.对当前实例不会生效
.对于动态和静态参数只有在重启实例之后才会生效
这是唯一可以修改静态参数的scope范围级别
scope=memory 这种修改只应用于内存.它的效果如下:
.这种改变只应用于当前实例且会立即生效
.对于动态参数会立即生效.但是不是永久生效因为没有更新spfile文件
对于静态参灵数不能在这个范围级别进行修改
scope=both 这种修改应用于服务器参数文件和内存,它的效果如下:
.对于当前实例这种改变会立即生效
.对于动态参数会永久生效因为修改了服务器参数文件.
对于静态参灵数不能在这个范围级别进行修改
----------------------------------------------------------------------------------------------------
如果设置scope=spfile或scope=both有错误实例使用服务器参数文件是不能启动的.如果实例是使用服务器参数文件启动的那么缺省的参数修改范围级别为scope=both.如果实例是使用文本初始化参数文件来启动的那么缺省的参数修改范围级别为scope=memory
对于动态参数,还可以指定deferred关键字.当指定这个关键字后改变只对以后的会话生效.