【DB筆試面試537】在Oracle中,PFILE和SPFILE的區別是什麼?

  • 2019 年 10 月 10 日
  • 筆記

題目部分

在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程序員面試筆試寶典》,作者:李華榮。