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

本單位新增一臺服務器,內存配置爲8G,在安裝ORACLE 9i數據庫以後,想重新設置一下SGA。在測試過程中我們發現,當將SGA的最大大小的設置過大時會損壞數據庫的SPFILE文件造成數據庫不能啓動,經過網上查找資料發現對於32位機器ORACLE的SGA有個1.7G的限制,如果由於不小心將SGA_MAX_SIZE的值設置的超過1.7G,則在ORACLE數據庫啓動過程中會報ORA-27100 shared memory realm already exists錯誤。

   解決方法有如下兩種(本次遇到錯誤有第一種成功解決):

 

第一種:

Spfile文件(在盤符:/oracle/ora92/database目錄下)是二進制文件不可以直接編輯,可以通過重新建立pfile文件(在盤符:/oracle/admin/SID/pfile目錄下)。

SQL> Shutdown immediate;

Pfile文件是可以直接編寫的,可以改掉錯誤的sga_max_size的值到合適的大小,重新以SYSDBA身份連接數據庫,然後就可以從pfile啓動

SQL> Startup pfile='D:/oracle/ora92/database/pfileSID.ora';

將原來的spile文件刪除,再通過已經改正過的pfile文件重新建立spile文件

SQL>Create spfile='D:/oracle/ora92/database/spfileSID.ora'

From pfile='D:/oracle/ora92/database/pfileSID.ora';

SQL> Startup;

總結:當實例是因爲Sga的改動而無法啓動,這種情況下無法通過spfile(二進制文件)更改過來,就可以通過建立pfile文件進行更改。

    

   第二種:

   仔細分析一下,這是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)

 

 

轉載自:http://blog.sina.com.cn/s/blog_5fdd008d0100dfvn.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章