Expert Oracle Database Architecture 学习笔记
Pfile & Spfile(位于书中第三章.文件)
一、两种参数文件pfile 和 spfile:
1、参数文件pfile(parameter file),又称初始文件( init file)
默认文件名为:
init$ORACLE_SID.ora (Unix)
init%ORACLE_SID%.ora (Windows)
默认保存位置:
$ORACLE_HOME/dbs (Unix)
%ORACLE_HOME%\DATABASE (Windows)
2、服务器参数文件(server parameter file, SPFILE)
从ORACLE9i Release 1之后,引入了服务器参数文件Spfile。Spfile是Oracle做出的一个重要改变。有了Spfile,可以消除传统参数存在的两个严重问题:
◎可以杜绝参数文件的繁殖。spfile总是存储在数据库服务器上;必须存放在服务器主机本身,不能放在客户机上。对于参数设置来说,这样就可以只有一个“信息来源”。
◎无需在数据库之外使用文本编辑器手动地维护参数文件(实际上,更确切地说是不能手动地维护)。
默认文件名为:
spfile$ORACLE_SID.ora (Unix)
spfile%ORACLE_SID%.ora (Windows)
默认保存位置:
$ORACLE_HOME/dbs (Unix)
%ORACLE_HOME%\DATABASE (Windows)
我的机器上的spfile文件:
SQL> show parameter spfile
NAME TYPE VALUE
------ ------ ---------------------------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA
Tom强烈建议对Spfile使用默认位置,因为Spfile在其默认位置,几乎一切都会为你做好。但如果将spfile移到一个非默认的位置,你就必须告诉Oracle到哪里去找Spfile,这又导致遗留参数文件(指init.ora文件)的一大堆问题卷土重来。
3、两种参数文件的转换:
creste spfile from pfile;
create pfile='pfilename' from spfile;
二、有两种方法可以得到一个实例参数的当前值:
1、查询V$视图v$parameter
select value
from v$parameter
where name = 'pga_aggregate_target';
2、在SQL*Plus中使用SHOW PARAMETER 命令,如:
show parameter pga_agg
从v$parameter能得到更多信息,因为可以选择更多的列
但是使用SHOW PARAMETER 命令更为简单,而且它会自动完成“通配”。
三、修改服务器参数
1、Alter system set parameter=value <comment='text'> <deferred>
<scope=memory|spfile|both> <sid='sid|*'>
其中:
parameter=value 提供参数名及参数的新值。
comment='text' 是一个与此参数设置相关的可选注释。这个注释将会出现在V$parameter视图的update_comment字段里。如果使用了相应的选项允许同时保存对spfile文件的修改,注释会写进spfile,即使服务器重启也依然保留。
deferred指定系统修改只会对以后的会话生效。可以使用以下查询看看哪些参数必须使用deferred:
select name
from v$parameter
where issys_modifiable = 'DEFERRED';
<scope=memory|spfile|both> 表明本次修改的作用域为 内存/spfile/两者均有
<sid='sid|*'>主要用在集群环境,默认值为<sid='*'>。这样就可以为集群中任何给定的实例唯一地指定参数设置。
2、取消spfile中的值设置
alter system reset parameter <scope=memory|spfile|both> sid='sid|*'
这个命令中,sid='sid|*'不再可选。在非RAC环境中,应指定 sid='*'