天天看點

oracle9i修改sga_max_size引起問題解決

為了改善oracle性能,嘗試修改某些參數,結果修改sga_max_size=2G後資料庫啟動失敗(後來才知道最大值不能超過1.7G),再啟動的時候報:

ORA-27123: unable to attach to shared memory segment

Linux Error: 22: Invalid argument

這時候用sysdba登入,已經不能修改參數了。經過瘋狂Google後,用以下方法解決:

1、用另外的pflie啟動資料庫

pfile檔案去上面那個目錄找找,一般會有,沒有的話去别的機器上面拷一個回來,沒有,我就不知道該怎麼搞了,你也别看下去了。

2、生成spfile。這個時候資料庫是正常跑起來了,但是還改不了參數的,會報一下錯誤:

ORA-32001: write to SPFILE requested but no SPFILE specified at startup
           

正常用startup啟動也還是不行的,是以要先生成spfile。用這個指令:

create spfile from pfile='${ORACLE_BASE}/admin/***(sid)/pfile/init***(sid).ora'
           

3、關掉它,再起來。這步不知道是不是一定要的,習慣性喜歡重新開機(最有效的排障手段呀)。

4、現在正常了,改改參數吧,這次可别改錯了。

alter system set sga_max_size=1500M scope=spfile;
           

沒問題,資料庫可以繼續跑。有問題隻能說各有各的不幸,慢慢Google吧。

據說pfile是不能直接編輯的,我編輯過沒跑起來,當然我不确定是因為我編輯過是以不行了,但是推薦還是别改它了。

搞資料庫的新手,郁悶得很,但是這次還是學到一點點東西:

1、資料庫可以在startup的時候指定一個pfile(其實我不是很明白pfile是什麼來的,不過我知道它很重要,下次一定備份一個能用的).

2、pfile可以通過spfile建一個。用下面的指令(路徑自己指定):

create pfile='/opt/oracle/init.ora' from spfile;
           

3、通過指定pfile啟動資料庫後,要切到spfile(不然你每次指定pfile啟動吧,不過其實spfile是什麼?)。用下面的指令:

create spfile from pfile='${ORACLE_BASE}/admin/***(sid)/pfile/init***(sid).ora'