標籤:style color 使用 strong io 檔案 資料 art
pfile(Parameter File)從oracle8i開始使用,在oracle9i中也可以用。它以文字檔的形式存在,可以用vi等編輯器對 其中資料庫參數進行修改。檔案格式為initSID.ora。Oracle 9i在安裝時為每個資料庫建立了一個Pfile,預設的名稱為“init+例 程名.ora”。
Oracle8i使用pfile儲存初始化參數配置,這些參數在執行個體啟動時被讀取,任何修改需要重起執行個體才會生效。
spfile專用於oracle9i及以後版本,以二進位檔案形式存在,含有資料庫及常式的參數和數值,能夠使用RMAN進行備份,但不能用文本編輯工具開啟,不能用vi編輯器對其中資料庫參數進行修改。檔案格式為spfileSID.ora。
Oracle9i及以後版本,使用spfile儲存初始化參數配置,支援使用ALTER SYSTEM或ALTER SESSION來動態修改那些可動態修改的參數,任何更改能夠立即生效,您能夠選擇使更改只應用於當前執行個體還是同時應用到spfile。這就使得任何對spfile的修改都能夠在命令列完成,我們能夠完全告別手工修改初始化參數文檔,這就大大減少了人為錯誤的發生。
除了第一次啟動資料庫需要pfile(然後根據pfile建立spfile),我們能夠不再需要pfile,ORACLE強烈推薦使用spfile,應用其新特性來儲存和維護初始化參數配置。
spfile改正了pfile管理混亂的問題,在多結點的環境裡,pfile會有多個image,啟動時候需要跟蹤最新的image。這是個煩瑣的過程。 用spfile以後,所有參數改變都寫到spfile裡面(只要定義scope=spfile或both),參數配置有個權威的來源。
pfile和pfile的區別
就Oracle的spfile和pfile的區別主要是spfile的修改是可以線上的,而pfile的修改必須關閉資料庫,到參數檔案所在路徑下通過vi或記事本等文本編輯工具修改。(因為參數檔案裡面的內容太多,編輯起來容易導致錯誤的編輯到其它的參數,從而導致資料庫無法起來,所以在9i以前一般都是要備份pfile後再來做參數的修改,而且修改任何參數都需要停庫,非常的不方便;在9i以後的spfile就可以同通過命令修改指定的參數了,而且有很多參數都不用重啟資料庫,能夠線上生效,這個線上生效的參數會隨著資料庫的版本增高而增加。如果參數修改有問題資料庫起不來了可以在nomount狀態下建立成pfile再修改回來即可。)
修改spfile參數的三種模式:
scope=both 立即並永久改變,(預設模式)
scope=spfile 下次啟動執行新的改變。
scope=memory 立即臨時改變下次啟動新參數失效
spfile 修改的方法:
SQL> alter system set processes = 100 scope=both; ----該參數不支援動態修改,必須修改完後重啟資料庫
alter system set processes = 100 scope=both
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
-------------------------------------------------------------------------------------------------------------------------------
SQL> show parameter pga;
NAME TYPE VALUE
------------------------------------ -------- ------
pga_aggregate_target big inte 798M
ger
SQL> alter system set pga_aggregate_target = 500m scope=both; -----該參數支援動態修改,所以就立即生效了
System altered.
SQL> show parameter pga;
NAME TYPE VALUE
------------------------------------ -------- ------
pga_aggregate_target big inte 500M
ger
SQL>
SQL> alter system set processes = 100 scope=spfile; ----修改完後重啟資料庫能生效,不信你試試。
System altered.
SQL> alter system set pga_aggregate_target = 700m scope=spfile; ----當然也可以選擇資料庫下次啟動的時候生效。
System altered.
SQL> alter system set processes = 100 scope=memory; ----因為該參數不支援動態修改,同樣也就無法實現立即生效,下次啟動失效。
alter system set processes = 100 scope=memory
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL>
SQL> alter system set pga_aggregate_target = 600m scope=memory; ---因為該參數支援動態修改,當然也就可以實現立即生效,下次啟動失效咯。
System altered.
SQL>
如果使用的是pfile則無法通過命令進行修改,會報ORA-02095或32001錯誤。
SQL> alter system set processes = 100;
alter system set processes = 100
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set processes = 100 scope=spfile;
alter system set processes = 100 scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
SQL> alter system set processes = 100 scope=both;
alter system set processes = 100 scope=both
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set processes = 100 scope=memory;
alter system set processes = 100 scope=memory
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
pfile檔案路徑/admin/pfile下面
通過create pfile=‘e:\initeyglen.ora‘ from spfile;儲存
startup pfile=‘e:\initeyglen.ora‘
create spfile from pfile=‘e:\initeyglen.ora‘; //新的spfile生效,spfile是二進位檔案,看不到,在系統運行時有