Oracle-PFILE和SPFILE解讀

概述

ORACLE中的參數文件是一個包含一系列參數以及參數對應值的操作系統文件,可以分爲兩種類型。它們是在數據庫實例啓動時候加載的,決定了數據庫的物理結構、內存、數據庫的限制及系統大量的默認值、數據庫的各種物理屬性、指定數據庫控制文件名和路徑等信息,是進行數據庫設計和性能調優的重要文件。

初始化參數文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直採用PFILE方式存儲初始化參數,該文件爲文本文件。

服務器參數文件(Server Parameter Files),從Oracle 9i開始,Oracle引入了SPFILE文件,該文件爲二進制格式,不能通過手工修改。 
只能通過alter system set 命名動態的修改初始化參數的值,如果手動的修改spfile 將會導致文件損壞,實例不能啓動。


從Oracle 9i開始,Oracle缺省使用spfile啓動數據庫,spfile必須由pfile創建,新建的spfile將在下一次啓動數據庫時生效。


查看oracle實例是由那種類型的初始化參數文件啓動

SQL> select decode(value, null, 'pfile', 'spfile')  from V$parameter where name = 'spfile';

DECODE(VALUE,NULL,'PFILE','SPF
------------------------------
spfile
  • 1
  • 2
  • 3
  • 4
  • 5
SQL> select value from V$parameter where name = 'spfile';

VALUE
------------------------------------------------------------
/oracle/product/112/dbs/spfilecc.ora
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

或者

SQL>  show parameter pfile

NAME          TYPE        VALUE
-------- ------ ------------
spfile    string      /oracle/product/112/dbs/spfilecc.ora

++++++++++++++++++++++++++++++++++++++++++++++

SQL> show parameter spfile

NAME          TYPE        VALUE
-------- ------ ------------
spfile    string      /oracle/product/112/dbs/spfilecc.ora

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

如果數據庫使用spfile參數文件,那麼用show parameter spfile與 show parameter pfile的結果一致,如果數據庫使用pfile參數文件,那麼上面命令得到的結果都是空.


spfile 優點

  • 1、可以使用rman 來備份spfile,rman 不支持備份pfile。

  • 2、減少人爲錯誤,spfile 是由oracle 數據庫維護的,在對其中的參數做修改的時候oracle 數據庫會做檢查。

  • 3、使用方便,如果你想遠程啓動數據庫,不像pfile 需要本地的初始化參數文件副本。

  • 4、查找定位方便。

pfile 與 spfile 的區別

  • 1、pfile 是靜態的如果需要修改可以使用vi 等文字編輯工具手動修改。如果需要遠程啓動數據庫,需要pfile 的本地副本。

  • 2、spfile 可以通過alter system set 命名動態的修改初始化參數的值,如果手動的修改spfile 將會導致文件損壞,實例不能啓動。


重建pfile 或 spfile

create spfile[='xxxxx'] from pfile[='xxxx']; 

create pfile[='xxxxx'] from spfile[='xxxx'];    
  • 1
  • 2
  • 3

通過spfile創建pfile文件(此時會在$ORACLE_HOME/dbs目錄下生成pfile.當然你也可以指定參數文件的位置。

SQL> create pfile from spfile;

File created.
  • 1
  • 2
  • 3

如果當前實例是使用spfile 啓動的那麼是不可以使用下面的命令來創建spfile 的。

SQL> create spfile from pfile;
create spfile from pfile
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance
  • 1
  • 2
  • 3
  • 4
  • 5

但你可以使用指定不同於默認路徑的方式來創建spfile。

SQL> create spfile = '/opt/app/oracle/oradata/orcl/spfile.ora' from pfile;
File created.
  • 1
  • 2

如果在pfile 和 spfile 的相互轉化過程中需要的話pfile 也是可以指定路徑的。 
create pfile 與create spfile 只要實例啓動以後就可以執行。

通過spfile文件修改動態參數

alter system set parameter=Value scope=memory|spfile|both  
  • 1

memory:只改變當前實例運行,重啓數據庫後失效

spfile:只改變spfile設置,不改變當前實例設置,重啓數據庫後生效

both:同時改變spfile和實例設置,當前更改立即生效,重啓後依然有效

當沒有指定scope 的時候,如果實例是使用pfile 啓動的那麼默認的scope 方式是memory。如果實例是使用spfile 啓動的默認的scope 方式是both。


備份spfile

rman 提供了備份spfile 的功能.

RMAN> backup spfile;--顯示的發出備份spfile 的命令。
  • 1

開啓spfile 的自動備份功能。

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
  • 1
  • 2
  • 3
  • 4

設置了上述參數以後rman 在執行backup 命令的時候會自動的備份控制文件和參數文件(前提是實例是使用spfile啓動的)。 
注:初始化參數文件中至少要包含一個參數:DB_NAME 該參數是沒有默認值的。如果要刪除spfiel 中的某個參數使用

alter system reset parameter = values...
  • 1

刪除的參數在下次實例運行期間生效。

發佈了284 篇原創文章 · 獲贊 69 · 訪問量 272萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章