Skip to main content

spfile v.s. pfile

  1. pfile 純文字檔案, client端參數檔案;不能動態修改,可以用普通的編輯器修改,修改之後需要重啟。pfile可能會導致伺服器啟動不一致,因為可以在客戶端啟動。
  2. spfile 二進制檔案,伺服器端參數檔案,有了spfile,oracle可以實現動態參數在線修改,部分參數修改之後無需重啟。但是,因為是二進制檔案,所以不能用普通的編輯器修改,要用alter命令從sql裡面來修改。spfile保證伺服器每次的啟動都是一致的。

spfile 與 pfile 設定檔可以互相轉換,只有 spfile 而沒有 pfile 文件時

create pfile='位置+名字' from spfile;

例如:

create pfile='E:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\spfileorcl_bak.ora' from spfile;

同理,只有pfile而沒有spfile時,可以透過:

create spfile='位置+名字' from pfile;

檢查系統是以pfile還是spfile啟動

如果 isspecified 裡有 true,表明用 spfile 啟動,如果全為 false,則表明用pfile啟動

select isspecified,count(*) from v$spparameter group by isspecified;
檢查 spfile 的檔案路徑
show parameters spfile
從 spfile 取得 pfile
Create pfile='d:pfileSID.ora' from spfile='spfile_location';
從 pfile 取得 spfile
Create spfile='spfile_location' from pfile='Your_pfile_location';
Backup current spfile

exp: spfile = spfilewin.ora

CREATE pfile='/opt/oracle/product/10.2.0/db_1/dbs/pfile.tmp' FROM spfile='/opt/oracle/product/10.2.0/db_1/dbs/spfilewin.ora'
CREATE spfile='/opt/oracle/product/10.2.0/db_1/dbs/spfilewin.ora.20140313' FROM pfile='/opt/oracle/product/10.2.0/db_1/dbs/pfile.tmp'
使用其他 spfile/pfile 啟動資料庫
startup nomount

startup pfile='my_pfile'

startup spfile='my_spfile'