ORA-27100: shared memory realm already exists解決方法

mengzhaoliang發表於2009-04-07

/*
*時間:2009-04-07  Monday
*環境:Windows 2003   Oracle10g10.2.0.1.0
*標題:ORA-27100: shared memory realm already exists解決方法
*/

   在改變資料庫的中的sga和pga的引數時,遇到了ORA-27102和ORA-27100之類的錯誤。
1、啟動報錯:報記憶體異常
SQL> startup
ORA-27102: out of memory
OSD-00022: ????????????
O/S-Error: (OS 8) ??????????????????????????????

2、用剛修改的pfile檔案啟動,報ORA-27100錯誤
SQL> startup pfile='E:\oracle\product\10.2.0\db_1\database\initXBOMS.ora'
ORA-27100: shared memory realm already exists


http://blog.csdn.net/yzsind/archive/2008/09/02/2868340.aspx找到了答案
仔細分析一下,這是windows服務及oracle的問題,oracle在windows啟動中如果由於sga_max_size的問題,例項不會啟動成功,但是仍然會有一個錯誤的例項存,shutdown immediate及shutdown abort都關閉不了。由於預設安裝時,oracle在windows服務啟動時會自動啟動例項,所以每次啟動服務都會自動用預設的錯誤的spfile啟動例項,導至記憶體錯誤。
 
知道問題的原因後,解決的辦法就很簡單,解決的辦法以下兩種:
1.關閉服務,刪除資料庫的spfile檔案,用新的正確的pfile啟動後,再生成新的spfile;
2.設定資料庫在服務啟動時不自動啟動例項,再用正確的pfile啟動例項,然後再生成新的spfile。
 

如何設定資料庫在服務啟動時不自動啟動例項有以下兩種方法:
1.直接修改登錄檔HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下的資料庫物件項ORA_MYDB_AUTOSTART值為false
2.使用ORACLE安裝的工具Administration Assistant for Windows NT修改資料庫啟動關閉選項。
“Oracle Managed Objects”——》“資料庫”——》“資料庫名稱”——右鍵“啟動關閉選項”——》“服務啟動時啟動例程”的勾去掉。(也可以在這裡右鍵停止資料庫的服務)

 

1、後來把資料庫的pfile檔案中的
*.sga_max_size=1224736768  (1168M)
*.sga_target=1224736768
上面的sga引數設定小

2、關閉“服務”中“Oracle”程式,然後重新啟動時,用pfile來啟動資料庫。最後可以成功啟動。
(系統不一樣,很多情況不太一樣,windows中的Oracle中感覺老有很多問題,還是比較喜歡UNIX和Linux系統中的Oracle)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-586518/,如需轉載,請註明出處,否則將追究法律責任。

相關文章