♣
题目部分
在Oracle中,PFILE和SPFILE的区别是什么?
♣
答案部分
参数文件(Parameter File)也叫初始化文件,它主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库,如内存的分配,允许打开的进程数和会话数等。Oracle的参数文件主要分为2类:PFILE(Parameter File)和SPFILE(Server Parameter File)。SPFILE和PFILE的区别参考下表:
表 3-12 SPFILE和PFILE的区别
比较内容 | SPFILE | PFILE |
---|---|---|
格式 | 二进制格式 | 文本格式 |
编辑方式 | Oracle 9i之后引入的概念,不能用文本编辑工具打开,不能直接修改,只能存放在Oracle服务器端,只能使用如下几种方式修改:1、利用OEM修改2、在SQL*Plus里使用ALTER SYSTEM语句进行修改 | 1、利用OEM修改(重启失效)2、利用文本工具(vi、vim、本文编辑器)直接进行修改 |
默认名称 | spfile<SID>.ora | init<SID>.ora |
默认路径 | Linux下:$ORACLE_HOME/dbs/spfile$ORACLE_SID.oraWindows下:%ORACLE_HOME%databasespfile$ORACLE_SID.ora | Linux下:$ORALCE_HOME/dbs/init$ORACLE_SID.oraWindows下:%ORALCE_HOME%databaseinit$ORACLE_SID.ora |
启动次序 | SPFILE优于PFILE | PFILE低于SPFILE |
是否支持RMAN备份 | 可以由RMAN备份 | 不支持RMAN备份 |
互相转换 | 由PFILE生成SPFILE命令如下所示:CREATE SPFILE FROM PFILE;CREATE SPFILE [='路径+文件名'] FROM PFILE[='路径+文件名'];例如:CREATE SPFILE FROM PFILE='?/dbs/initlhrdb.ora'; | 由SPFILE生成PFILE命令如下所示:CREATE PFILE FROM SPFILE;CREATE PFILE [='路径+文件名'] FROM SPFILE[='路径+文件名'];例如:CREATE PFILE='?/dbs/initlhrdb.ora' FROM SPFILE; |
是否使用SPFILE | 用SHOW PARAMETER SPFILE命令来显示参数配置,假如以下结果VALUE列返回空值,那么说明使用的是PFILE,若有值,则说明使用的是SPFILE文件:SYS@lhrdb> SHOW PARAMETER SPFILENAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string DATA/lhrdb/spfilelhrdb.ora |
需要注意的是,Oracle数据库在启动时寻找参数文件的顺序如下所示,如果这些文件都不存在,那么Oracle会报错:
spfile<SID>.ora --> spfile.ora --> init<SID>.ora
& 说明:
有关参数文件spfile和pfile的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2139146/
真题1、Which three statements regarding the server parameter file (SPFILE) are true?(Choose three.)
A、An SPFILE is abinary file.
B、An SPFILE cannot reside on a client.
C、An SPFILE cannot contain static parameters.
D、An SPFILE can store changes persistently across instance restarts.
E、An SPFILE can be read by the database server,but it is not written to by the server.
F、An SPFILE must be created manually,before creating a database,even if you use the Database Configuration Assistant(DBCA) to create the database.
答案:A、B、D。
本题考察的是SPFILE的相关知识。
本题中,对于选项A,SPFILE是一个二进制文件。所以,选项A正确。
对于选项B,SPFILE不能用在客户端。所以,选项B正确。
对于选项C,SPFILE可以包含静态参数。所以,选项C错误。
对于选项D,SPFILE可以永久存储参数的值。所以,选项D正确。
对于选项E,SPFILE可以由数据库进行写入。所以,选项E错误。
对于选项F,DBCA创建的数据库不用手动创建SPFILE。所以,选项F错误。
所以,本题的答案为A、B、D。
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。