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 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如果數據庫使用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'];通過spfile創建pfile文件(此時會在$ORACLE_HOME/dbs目錄下生成pfile.當然你也可以指定參數文件的位置。
SQL> create pfile from spfile;File created.如果當前實例是使用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但你可以使用指定不同于默認路徑的方式來創建spfile。
SQL> create spfile = '/opt/app/oracle/oradata/orcl/spfile.ora' from pfile; File created.如果在pfile 和 spfile 的相互轉化過程中需要的話pfile 也是可以指定路徑的。
create pfile 與create spfile 只要實例啟動以后就可以執行。
通過spfile文件修改動態參數
alter system set parameter=Value scope=memory|spfile|bothmemory:只改變當前實例運行,重啟數據庫后失效
spfile:只改變spfile設置,不改變當前實例設置,重啟數據庫后生效
both:同時改變spfile和實例設置,當前更改立即生效,重啟后依然有效
當沒有指定scope 的時候,如果實例是使用pfile 啟動的那么默認的scope 方式是memory。如果實例是使用spfile 啟動的默認的scope 方式是both。
備份spfile
rman 提供了備份spfile 的功能.
RMAN> backup spfile;--顯示的發出備份spfile 的命令。開啟spfile 的自動備份功能。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored設置了上述參數以后rman 在執行backup 命令的時候會自動的備份控制文件和參數文件(前提是實例是使用spfile啟動的)。
注:初始化參數文件中至少要包含一個參數:DB_NAME 該參數是沒有默認值的。如果要刪除spfiel 中的某個參數使用
刪除的參數在下次實例運行期間生效。
總結
以上是生活随笔為你收集整理的Oracle-PFILE和SPFILE解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle优化06-Hint
- 下一篇: Oracle-PROCEDURE权限解读