oracle隨記——spfile和pfile的區別,產生,載入和修複____oracle

來源:互聯網
上載者:User

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也會報錯,無法啟動。

 
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即可。

如有錯誤,還望指出,共同進步;手敲累抽搐,裝載注出處。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.