一次對spfile錯誤的修改引發的問題

2021-05-09 16:10:07 字數 1423 閱讀 8577

2009-11-27,在對oracle的學習過程中,嘗試修改spfile裡定義的初始化引數。直接開啟spfile檔案(solaris平台下),用vi命令修改了其中的部分引數,修改強制儲存後,資料庫無法啟動:出現如下錯誤:

ora-01078: failure in processing system parameters

lrm-00109: could not open parameter file '/opt/oracle/product/10gr2/dbs/initstevendb.ora'

原因:spfile以二進位制格式存放,不支援直接對檔案的修改。強制修改就改變檔案型別。

知識點分析:

1. oracle10啟動需要乙個引數檔案,查詢啟動引數檔案的順序如下:

spfile.ora-->spfile.ora-->init.ora,由上面的錯誤顯示可以看出oracle啟動時,依次嘗試尋找三個引數檔案,直至嘗試用最後乙個檔案initstevendb.ora啟動失敗。

檢視spfile location的方法:

sql>show parameter spfile;

2. oracle啟動引數的修改可以在sql*plus下動態進行,修改及時生效,無需重啟oracle生效。

語法:alter system set parameter=value scope=spfile|both|memory;

或者將spfile檔案匯出生成pfile檔案,pfile是文字檔案,可以直接修改檔案,後又將pfile導成spfile,啟動資料庫使修改生效。

語法:$ su - oracle

$ sqlplus / as sysdba 

sql> create pfile from spfile;

file created.

$ vi init.ora 

'修改引數『

:wq '儲存退出'

sql> shutdown immediate;

sql> startup pfile=$oracle_home/dbs/init.ora

sql> create spfile from pfile; 

3. spfile損壞後的恢復

oralce資料庫安裝過程中,會生成乙個pfile檔案,存放於'/***/oracle/admin/$oracle_sid/pfile'目錄下,檔名為:

init.ora.8232009110,後面的數字在不同的環境裡有不同的值,可以根據這個pfile檔案恢復spfile檔案。

$ su - oracle

$ sqlplus / as sysdba 

sql> create spfile from spfile='/***/oracle/admin/$oracle_sid/pfile/init.ora.8232009110';

file created.

$ startup 

Initrd is too big 的一次錯誤嘗試

luo weifeng 2011 5 2 昨天編譯完核心開始製作initrd,由於在編譯的時候選擇了除錯資訊,所以肯定編譯出來的東東就超級的大,是 讓做核心除錯搞的,所以也沒有辦法,網路上關於這個too big的問題一般都是 disable memory hole,但是我在vmware bios裡邊...

一次String的錯誤使用

今日,在寫 的過程中,程式執行乙個方法居然出現了heap space溢位的異常。從來還沒有遇到這樣的異常,打斷點發現是做字串拼接時出現此異常。所以知道了是string使用的異常,因為我做的操作是要大量的拼接字串,次數很多。每次string拼接一次之後,都相當於是重新new了乙個string,然後拼接...

一次傻乎乎的錯誤QAQ

東北聯賽上有一道題,資料範圍是2 60,當時不記得long long的範圍,於是寫了乙個程式試了一下,把隊友帶入了乙個大數的大坑qaq 蠢哭 當時寫的 是這樣的 1 include2 3using namespace std 45 intmain 6 程式輸出0。於是我就把隊友帶入了大數的大坑一去不...