[声明:本文是学习著名ORACLE DBA盖国强先生的大作《深入解析ORACLE--DBA 入门 进阶与诊断案例》的学习笔记与心得体会。在此声明,文中摘录了书中部分内容,非是出于抄袭目的,而是有感于盖国强先生所写确实经典。在此声明对原作者的尊重与敬佩。]
第三章 参数和参数文件
一:参数
Oracle初始化参数分为三类:推导参数、操作系统依赖参数、可变参数。
1.推导参数:推导参数依赖其它参数,推导得出,这类参数不需要修改。
2.操作系统依赖参数:这类参数跟操作系统或者物理设置由关。
3.可变参数:这类参数是可以调整的,对影响Oracle性能或者运行起着重要专用。
其它分类介绍:
1.按照修改方式分:静态参数/动态参数。静态参数只能在参数文件中修改,动态参数可以动态调整,调整后立刻生效。
2.按照获取方式分:显示参数/隐含参数。显示参数可以通过V$PARAMETER查询得到;隐含参数通常以"_"开头,必须通过查询系统表获取。
初始化参数的获取
通过V$PARAMETER试图可以查询系统的初始化参数,查询方式有两种
1.show parameter pra_name
2.select name,name_col_plus_show_param from V$PARAMETER where name='pra_name';
实际上,以上两种方式是一样的。方式1是方式2的封装语句,从告警文件中可以发现,show parameter其实是执行了方式2的语句。
二:参数文件
1.参数文件简介
参数文件是一个包含一系列参数及参数对应值的操作系统文件,分为两类
A.PFILE---初始化参数文件---init<ORACLE_SID>.ora------ASCII文本文件
B.SPFILE--服务器参数文件---spfile<ORACLE_SID>.ora----二进制文件
下面简单介绍这两个文件特点
A.PFILE.
这种文件是在Oracle9i之前的唯一参数文件,对这类文件的修改是需要手工进行的,并且修改后,重启Oracle实例才会生效。
B.SPFILE.
这种文件是在Oracle10g中引入的新的参数文件机制,从此,我们可以告别手工修改参数文件的历史,转而使用ALTER SYSTEM pra_name命令来修改参数。对于动态参数所有更改可以立即生效,甚至可以将更改同时
应用到SPFILE文件与数据库实例。对于静态参数只能将修改应用到SPFILE,在Oracle实例重启后生效。
既然SPFILE如此高科技,为什么还要使用PFILE呢?下面就是答案。
A.在数据库第一次被创建的时候,系统收集到数据库创建者设置的各个参数,生成PFILE的,然后,数据库第一次启动就是依靠这个PFILE,启动后,根据PFILE创建SPFILE文件,之后,将不再需要PFILE文件。下次启动使用的是PFILE。
可以通过查看数据库创建脚本来发现这个过程。
B.如果将来数据库不出现故障,那么PFILE很可能就可以束之高阁了。但是很遗憾,这是不可能的,所以不久的将来,你很可能会从书架上将这张落满灰尘的小纸片翻出来,那时候,它将变身一把圣剑,直斩一切阻碍,甚至以后,你会频繁使用到这把剑,
而且越用你的剑法就越高超。最终,草木竹石皆可为剑。
2.参数文件创建
A.SPFILE文件必须由PFILE文件创建:CREATE spfile FROM pfile。
B.PFILE文件可以由SPFILE文件创建:CREATE pfile FROM spfile。
3.参数文件修改
A.PFILE可以通过修改文件内容来改变参数。也可以通过SPFILE服务器参数文件修改后重新创建。
B.SPFILE可以通过修改命令ALTER SYSTEM SET pra_name="value" SCOPE=scopevalue 来修改,也可以通过PFILE修改后重新创建。
SCOPE有三种:MEMORY,SPFILE,BOTH.
MEMEORY是只修改当前实例,只在当前实例下生效;重启后,将失效。
SPFILE是只修改服务器参数文件,只在下次启动后失效。
BOTH是同时修改当前实例和服务器参数文件,对修改立刻失效,并在将来持续有效。
注意:对于静态参数,是不允许修改实例的,所以MEMEORY和BOTH都不能用,只能通过修改SPFILE后,重启实例来失效。