解決記憶體設定過大導致例項無法啟動ORA-27100

iteye_20954發表於2011-12-29
上週在安裝一臺新裝置的之後,由於操作失誤多在引數值多加了個0,導致SGA_MAX_SIZE和SGA_TARGET設定的值超大,在重啟資料庫的時候提示ORA-27100: shared memory realm already exists,該錯誤的解釋如下:

ORA-27100:
shared memory realm already exists
Cause: Tried to start duplicate instances, or tried to restart an instance that had not been properly shutdown
Action: Use a different instance name, or cleanup the failed instance's SGA
環境配置:windows2003 +oracle 10.2.0.1

知道原因之後,解決辦法就是修正正確的引數值,辦法就是使用備份的pfile來啟動例項和開啟資料庫,但是處理過程中有些細節需要注意的,在此記錄下。
首先,出現在這個錯誤之後,我首先想到的是引數設定錯誤了,因此嘗試使用pfile來啟動例項,但是還是繼續報錯,是在不解,於是重啟機器,之後再次嘗試還是無果;
windows2003的環境,安裝之後預設的服務啟動方式沒有改變,是自動啟動的,在重啟之後嘗試也還是報錯,於是就想到應該把自啟動改成手工啟動,再次重啟機器之後使用pfile啟動例項成功(當然需要把spfile從原位置移開,方法有很多),隨後再次進行引數調整即可,整個過程還算順利,因為在操作前對引數檔案進行了備份,因此對該問題的處理還是比較順利。
事後分析了下原因,為什麼在第1次報錯以及重啟之後還是無法使用pfile啟動例項,我的猜測是:由於在使用錯誤的引數嘗試啟動例項和開啟資料庫失敗之後,已經有相關的資訊寫入到系統或者記憶體資訊中,這個時候如果不進行重啟系統,是無法錯誤載入的資訊清理乾淨掉的,因此處理過程中重要的操作就是要重啟作業系統(這也是win系統的悲催,在linux下測試過,是沒有這個問題的)。
-The End-


相關文章