Oracle-PFILE和SPFILE解读
概述
ORACLE中的參數(shù)文件是一個包含一系列參數(shù)以及參數(shù)對應(yīng)值的操作系統(tǒng)文件,可以分為兩種類型。它們是在數(shù)據(jù)庫實例啟動時候加載的,決定了數(shù)據(jù)庫的物理結(jié)構(gòu)、內(nèi)存、數(shù)據(jù)庫的限制及系統(tǒng)大量的默認值、數(shù)據(jù)庫的各種物理屬性、指定數(shù)據(jù)庫控制文件名和路徑等信息,是進行數(shù)據(jù)庫設(shè)計和性能調(diào)優(yōu)的重要文件。
初始化參數(shù)文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用PFILE方式存儲初始化參數(shù),該文件為文本文件。
服務(wù)器參數(shù)文件(Server Parameter Files),從Oracle 9i開始,Oracle引入了SPFILE文件,該文件為二進制格式,不能通過手工修改。
只能通過alter system set 命名動態(tài)的修改初始化參數(shù)的值,如果手動的修改spfile 將會導(dǎo)致文件損壞,實例不能啟動。
從Oracle 9i開始,Oracle缺省使用spfile啟動數(shù)據(jù)庫,spfile必須由pfile創(chuàng)建,新建的spfile將在下一次啟動數(shù)據(jù)庫時生效。
查看oracle實例是由那種類型的初始化參數(shù)文件啟動
SQL> select decode(value, null, 'pfile', 'spfile') from V$parameter where name = 'spfile';DECODE(VALUE,NULL,'PFILE','SPF ------------------------------ spfile SQL> select value from V$parameter where name = 'spfile';VALUE ------------------------------------------------------------ /oracle/product/112/dbs/spfilecc.ora或者
SQL> show parameter pfileNAME TYPE VALUE -------- ------ ------------ spfile string /oracle/product/112/dbs/spfilecc.ora++++++++++++++++++++++++++++++++++++++++++++++SQL> show parameter spfileNAME TYPE VALUE -------- ------ ------------ spfile string /oracle/product/112/dbs/spfilecc.ora如果數(shù)據(jù)庫使用spfile參數(shù)文件,那么用show parameter spfile與 show parameter pfile的結(jié)果一致,如果數(shù)據(jù)庫使用pfile參數(shù)文件,那么上面命令得到的結(jié)果都是空.
spfile 優(yōu)點
1、可以使用rman 來備份spfile,rman 不支持備份pfile。
2、減少人為錯誤,spfile 是由oracle 數(shù)據(jù)庫維護的,在對其中的參數(shù)做修改的時候oracle 數(shù)據(jù)庫會做檢查。
3、使用方便,如果你想遠程啟動數(shù)據(jù)庫,不像pfile 需要本地的初始化參數(shù)文件副本。
4、查找定位方便。
pfile 與 spfile 的區(qū)別
1、pfile 是靜態(tài)的如果需要修改可以使用vi 等文字編輯工具手動修改。如果需要遠程啟動數(shù)據(jù)庫,需要pfile 的本地副本。
2、spfile 可以通過alter system set 命名動態(tài)的修改初始化參數(shù)的值,如果手動的修改spfile 將會導(dǎo)致文件損壞,實例不能啟動。
重建pfile 或 spfile
create spfile[='xxxxx'] from pfile[='xxxx']; create pfile[='xxxxx'] from spfile[='xxxx'];通過spfile創(chuàng)建pfile文件(此時會在$ORACLE_HOME/dbs目錄下生成pfile.當(dāng)然你也可以指定參數(shù)文件的位置。
SQL> create pfile from spfile;File created.如果當(dāng)前實例是使用spfile 啟動的那么是不可以使用下面的命令來創(chuàng)建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但你可以使用指定不同于默認路徑的方式來創(chuàng)建spfile。
SQL> create spfile = '/opt/app/oracle/oradata/orcl/spfile.ora' from pfile; File created.如果在pfile 和 spfile 的相互轉(zhuǎn)化過程中需要的話pfile 也是可以指定路徑的。
create pfile 與create spfile 只要實例啟動以后就可以執(zhí)行。
通過spfile文件修改動態(tài)參數(shù)
alter system set parameter=Value scope=memory|spfile|bothmemory:只改變當(dāng)前實例運行,重啟數(shù)據(jù)庫后失效
spfile:只改變spfile設(shè)置,不改變當(dāng)前實例設(shè)置,重啟數(shù)據(jù)庫后生效
both:同時改變spfile和實例設(shè)置,當(dāng)前更改立即生效,重啟后依然有效
當(dāng)沒有指定scope 的時候,如果實例是使用pfile 啟動的那么默認的scope 方式是memory。如果實例是使用spfile 啟動的默認的scope 方式是both。
備份spfile
rman 提供了備份spfile 的功能.
RMAN> backup spfile;--顯示的發(fā)出備份spfile 的命令。開啟spfile 的自動備份功能。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored設(shè)置了上述參數(shù)以后rman 在執(zhí)行backup 命令的時候會自動的備份控制文件和參數(shù)文件(前提是實例是使用spfile啟動的)。
注:初始化參數(shù)文件中至少要包含一個參數(shù):DB_NAME 該參數(shù)是沒有默認值的。如果要刪除spfiel 中的某個參數(shù)使用
刪除的參數(shù)在下次實例運行期間生效。
總結(jié)
以上是生活随笔為你收集整理的Oracle-PFILE和SPFILE解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle优化06-Hint
- 下一篇: Oracle-PROCEDURE权限解读