初始化参数文件分为两种:一、静态初始化参数 文件 二、动态初始化参数文件
一、静态初始化参数文件:
在oracle9i之前,我们一直使用的是静态的文本文本文件来保存初始化参数的配置,oracle为改文件起名为pfile,我们必须通过操作系统的文本编译器
对该文件进行编译,可以为一个初始化参数设置多个值,但是如果设置多个值,后一个值会把前一个值覆盖。
oracle9i之前,当我们启动数据库实例的时候,会去默认目录下查找pfile.ora是否存在,如果存在则用此文件启动数据库实例。如果不存在,则oracle会先找
initSID.ora如果找到,则使用这个参数文件,如果没有会查找init.ora,如果找到启动oracle,如果没有,就会显示错误信息。
我们可以在启动数据库的时候指定使用初始化参数文件 startup pfile='';
二、动态初始化参数文件
从oracle9i开始,oracle引入了所谓的动态初始化参数文件,起名叫做spfile,之所以引入spfile是因为要弥补pfile的起确定,比如修改完参数要重新启动数据库,
还有就是因为oracle引入了很多自动调整的参数。这些参数的调整都需要使用spfile,而且RMAN能够对spfile进行自动备份。
oracle9i开始,当我们启动数据库实例的时候,会去默认目录下查找spfileSID.ora是否存在,如果存在则用此文件启动数据库实例。如果不存在,则oracle会先找
pfile.ora如果找到,则使用这个参数文件,如果没有会查找initSID.ora,如果找到启动oracle,如果没有会查找initora,如果没有,就会显示错误信息。
oracle9i以后,我们这么写是支持的 startup spfile='';
创建spfile时,我们需要借助pfile,其命令为create spfile [='路径'] from pfile[='路径']
我们也可以根据spfile去生成pfile,其命令为 create pfile [='路径'] from spfile[='路径'] 这种操作在某种场合是相当必要的,比如说,因为数据库的某些参数修改有
问题的话,导致数据库无法启动时,但是我们不能使用文本编译器修改spfile的属性,我们没办法使用spfile启动数据库,所以,我们可以见spfile导成pfile,之后使用文本编译器修改器内容,之后再导成spfile去启动数据库。
怎么判断oracle使用哪个初始化参数文件启动的数据库呢,大概有两种方法:
方法一:
SQL> select distinct ISSPECIFIED from v$spparameter;
ISSPEC
------
FALSE
TRUE
如果只有FALSE,使用的是PFILE,
如果有TRUE,说明用的是SPFILE
方法二:
SQL>show parameters spfile
如果有值说明使用spfile启动,反之pfile
修改spfile的属性,可以通过命令的方式,例如:
alter system set sga_target=200M scope[both(默认) | spfile | memory]