spfile与pfile
SYS@ora11g>show parameter spfile
NAME TYPE
------------------------------------ --------------------
VALUE
------------------------------
spfile string
+DATA/ora11g/spfileora11g.ora
SYS@ora11g>Select isspecified,count(*) from v$spparameter group by isspecified;
ISSPEC COUNT(*)
------ ----------
TRUE 17
FALSE 327
2 rows selected.
spfile是二进制文件,始终存在数据库服务器中
spfile(server parameter file)服务器参数文件
查看系统是以pfile还是spfile启动
Select isspecified,count(*) from v$spparameter group by isspecified;
如果isspecified里有true,表明用spfile进行了指定配置
如果全为false,则表明用pfile启动
使用SPfile的好处
Spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image
启动时候需要跟踪最新的image。这是个烦琐的过程。
用spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfile或both),参数配置有个权威的来源。
查看spfile location
show parameter spfile
从spfile获取pfile
Create pfile='d:pfileSID.ora' from spfile;
Create pfile='d:pfileSID.ora' from spfile='spfile_location';
从pfile获取spfile
Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'
动态修改参数
alter system set parameter=Value scope=spfile|both|memory
Startup nomount的时候需要读去spfile或pfile,两者共存,spfile优先
强制用pfile启动
SQL>startup pfile='Your_Pfile.ora'
startup spfile='/data/oracle/product/10.2.0/db_1/dbs/dbs/spfile_mqq.ora' force
alter system set parameter= value scope=spfile;
这里面的scope=spfile是什么意思,下面详细解释一下:
SCOPE参数值有三个选项。默认both
SCOPE=MEMORY:仅在内存中应用改变的值。对于动态参数而言,改变立即生效,但在下一次启动时将恢复为原来的值。静态参数不允许使用此参数。
SCOPE=SPFILE:改变仅对spfile有效。对于动态参数而言,改变将在下一次启动时生效。静态参数只能通过这种方式改变。
SCOPE=BOTH:改变同时应用于spfile文件和内存。对于动态参数而言,改变将立即生效,而且在下一次启动时依然有效。静态参数不允许使用此参数。