oracle數據庫的配置文件指的是系統在啓動到「nomount」階段須要加載的文件,也叫作pfile或者spfile,可是其實pfile和spfile是不一樣的文件。
不一樣的數據庫配置文件是不一樣的,可是格式大致是近似的,默認地址是oracle安裝目錄下database 文件夾,例如:「c:\app\Administrator\product\11.2.0\dbhome_1\database」。
前面提到,配置文件分兩種,一種叫pfile,一種叫spfile,區別在於spfile是二進制文件,給機器看的,pfile是文本文件,給用戶看的,可是oracle啓動的時候只會加載其中一個文件,固然最好是加載二進制的spfile,速度更快。
雖然配置文件分兩種,可是文件裏的配置,或者說文件想表達的內容是同樣的,因此這兩個文件是能夠相互轉換的,以sysdba身份進入sqlplus(如下不作特殊申明,默認表示已經以sysdba身份登陸了):
sqlplus / as sysdba;
1. 首先先看看系統加載的spfile信息
show parameter spfile(或者show parameter pfile,顯示的結果是同樣的)
name顯示的是spfile,value是加載的spfile文件地址,即表示當前加載的是spfile文件。
spfile文件命名規則:」 SPFILE」 +sid. ora;例如SPFILEORCL.ORA
pfile文件命名規則:」 INIT」+ sid. ora;例如INITorcl.ORA
2. pfile和spfile文件的相互轉換
可能大多數朋友發現,在存放配置文件的文件夾裏,只有spfile,沒有pfile,本人電腦上的數據庫是剛安裝的64位oracle,也是沒有,那麼想要數據庫用文本文件啓動,或者想用文本文件查看下配置文件的參數,卻又沒有這個文件怎麼辦呢,命令oracle以spfile文件的配置生成一個pfile就能夠了,輸入如下命令:
create pfile from spfile;
提示文本文件已建立。
再次查看文件夾會發現已存在pfile文件
C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITorcl.ORA
3. 讓oracle加載pfile或者spfile
系統默認用二進制文件啓動,可是有的朋友喜歡用文本文件啓動,方便查看實時的參數。這裏說明下,系統沒法修改用哪一種參數文件啓動(我的猜想是由於參數文件是oracle啓動時加載的第一個文件,若是這個文件能夠隨意配置,會致使沒法啓動等故障)。可是oracle對參數文件有一個加載順序,優先查找加載spfile,找不到再去找pfile,因此咱們能夠生成了pfile後將spfile文件刪除,這樣系統就自動加載pfile了 ,這時候再去執行spfile命令,查到的結果就是空(加載的必定是pfile文件 ,若是沒有加載任何文件的話,數據庫沒法啓動)
4. spfile加載順序
這裏詳細提一下配置文件的加載順序
1) SPFILE.ORA
2) SPFILE.ORA
3) INIT.ora
4) startup pfile=’’
startup pfile=’’是以指定的pfile文件去啓動數據庫,按理說這個應該排在第一,可是oracle在加載的時候,即使指定了pfile文件,也依然會去查找有沒有符合條件的pfile文件,若是有,就加載,若是都沒有,纔會去加載指定的pfile文件。
第一個找的是以PFILE開頭,接sid的名稱,以ora結尾的文件;若是沒有,再找SPFILE.ORA這個文件;若是仍是沒有再找以INIT開頭,接sid名稱,以ora結尾的文件;這三個都沒有的狀況下,再去加載指定的pfile文件;若是指定的文件也沒有,那就沒法啓動數據庫了。
若是有前三種文件中任意一個,再指定加載一個pfile,那麼oracle也會報錯,沒法啓動。sql
5. 修復配置文件
若是配置文件壞了怎麼辦,數據庫沒法啓動怎麼辦?有不少種方法,這裏介紹一個最簡單的。
若是壞了,丟失了,完全刪除了,備份數據也不行了,各類絕望了,能夠試試這樣,隨便找一個pfile(必定要是文本文件,方便修改),將文件裏相關地址或者數據文件的信息,根據實際數據庫的信息作修改,或者增長相應的文件夾,並把文件裏的sid改爲實際數據庫的sid,例如這些參數:
*.control_files=’C:\app\Administrator\oradata\orcl\control01.ctl’,’C:\app\Administrator\flash_recovery_area\orcl\control02.ctl’
改爲本身項目裏對應的controller文件,而後啓動數據庫,若是報錯,就根據保存信息刪除多餘的參數,直到能夠啓動爲止。。。
只要數據庫啓動了,萬事好商量。
執行這條語句:
create pfile from memory;
從內存中生成一個spfile文件,這樣下次啓動就不須要再指定pfile了。
6. 替換文件的某個參數
假如由於一個spfile文件的某個參數的緣由,數據庫不能啓動,沒有備份,沒有pfile,各類蛋疼的沒有,怎麼辦?新建一個ora文件,文件內容以下:
spfile=C:\app\Administrator\product\11.2.0\dbhome_1\database\11SPFILEORCL.ORA
參數名=參數值
startup pfile=’’
這表示用指定的pfile文件啓動,這個pfile文件包含了C:\app\Administrator\product\11.2.0\dbhome_1\database\11SPFILEORCL.ORA文件的全部數據,而且還有後面的那些參數,後面的參數會將前面的參數覆蓋掉,順利啓動後,生成一個新的spfile便可。數據庫