2014-08-25 Created By BaoXinjian
一、摘要
ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型PFile and SPFile。
它们是在数据库实例启动时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息,是进行数据库设计和性能调优的重要文件。
1. 概念
初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用PFILE方式存储初始化参数,该文件为文本文件。
服务器参数文件(Server Parameter Files),从Oracle 9i开始,Oracle引入了SPFILE文件,该文件为二进制格式,不能通过手工修改。
2. 修改spfile参数的三种模式
- scope=both 立即并永久生效(默认模式)
- scope=spfile 下次启动才能生效
- scope=memory 立即生效但下次启动时失效
3. 如何查看SPFILE与PFILE的目录位置
方法1. 查看动态视图
SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';
方法2. 查看参数
SQL> show parameter spfile
SQL> show parameter pfile
4. 判断数据库从SPFILE还是PFILE启动
方法1:查询动态视图V$PARAMETER,如果VALUE值为非空,则是SPFILE启动,否则是PFILE。
SELECT name, value, display_value FROM v$parameter WHERE name ='spfile';
方法2:SHOW PARAMETER命令查看
SQL> show parameter spfile;
方法3:通过v$spparameter视图,如果一下查询返回0值,表示你在使用pfile,否则表明你使用的是spfile
SQL> SELECT COUNT(1) FROM v$spparameter WHERE value is not null;
此v$spparameter的值来自于spfile文件定义,并在动态性能视图中显示
二、PFile 和 SPFile的区别
1:PFILE是文本文件的,而SPFILE是二进制格式的。
PFILE文件可以用文本编辑器打开手工配置、而SPFILE不行,只能通过SQL命令在线修改。
从操作系统上可以看到这两者的区别,初始化参数文件为ASCII文本文件,SPFILE为数据文件。
2:SPFILE的修改是可以通过SQL命令在线修改,不再需要通过手工修改,对于动态参数所有更改可以立即生效,而PFILE的修改必须重启实例才能生效。
3:手动创建数据库而不是通过DBCA,则开始创建数据库时,只能定义PFILE。
创建数据库完成后再通过PFILE定义SPFILE
三、Oracle启用参数文件顺序
Step1. spfile<sid>.ora
Unix/Linux缺省存放目录 $ORACLE_HOME/dbs/
Step2. spfile.ora
Unix/Linux缺省存放目录 $ORACLE_HOME/dbs/
Step3. init<sid>.ora
Unix/Linux缺省存放目录 $ORACLE_HOME/dbs/
四、案例 - 创建一个PFile,并启动,后复制为SPFile再次启动
1. 建立PFile
2. 通过PFile建立SPFile <create spfile from pfile>
3. 查看SPFile内容, v$spparameter
Thanks and Regards