Oracle調整內存超出限制出現ORA-27100: shared memory realm already exists問題解決辦法


今天測試服務器遇到問題

ORA-04030:out of process memory when trying to allocate string bytes

一看就猜到是內存不足了,把Oracle給累壞了


Oracle版本;Oracle 10.2.0

操作系統:Windows Server 2003


於是,直接查了下怎么修改Oracle內存大小的命令:

alter system set sga_max_size=2048M scope=spfile;

然后果斷重啟Oracle,於是杯具就產生了,Oracle起不來了,出現異常

ORA-27100: shared memory realm already exists


以前也遇到過修改WAS內存大小起不來的情況,難道也是相同的原因?

網上查了下,貌似真是這樣

Oracle process使用的內存數量是有一定限制的: 

A. 對於32位 系統,有SGA 1.7G限制 

B. 某些OS系統本身也有一些內存參數限制,比如Linux可以運行ulimit查看

C. OS系統本身物理內存+Swap的限制 


怎么辦?想辦法改回去唄先

於是,繼續查找改回Oracle內存的方法


找到了這篇帖子

http://blog.csdn.net/yzsind/article/details/2868340

已經說明了修改的方法

大體意思就是spfile中的內存信息已經更新,需要重建

遺憾的是博主卻沒有說明怎么具體修改


甚至找到這篇文章

http://www.cnblogs.com/pdfpatcher/archive/2012/03/16/2400536.html

直接編輯二進制的spfile文件,嘗試了一番,使用二進制文件編輯器編輯之后的spfile文件,Oracle是不識別的,也許是二進制文件編輯器的版本問題,總之,沒有成功


經過實踐,總結ORA-27100: shared memory realm already exists問題的解決辦法如下:

1、sqlplus /nolog登錄,然后conn /as sysdba切換dba身份;

2、關閉Oracle服務,如果shutdown命令無法使用,直接從服務管理器中關閉或者殺掉進程;

3、使用pfile啟動Oracle服務

pfile在哪里?可以使用Oracle安裝時自帶的,目錄一般在

${ORACLE_HOME}/db_1/admin/orcl/pfile/init.ora.xxxxxxxxxxxx

startup命令如下:

startup pfile="D:\Oracle\10.2.0\db_1\admin\orcl\pfile\init.ora.514201432247"

4、使用如下命令重建spfile文件

create spfile = 'D:\Oracle\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfile='D:\Oracle\10.2.0\db_1\admin\orcl\pfile\init.ora.514201432247'>

其中,spfile參數是要重建生成的spfile文件路徑,pfile參數是Oracle的pfile文件模板;

如果重建的spfile文件路徑不在${ORACLE_HOME}/db_1/dbs目錄,需要人工拷貝過去

5、重啟Oracle服務,或者重啟服務器,驗證問題是否解決;

6、重新調整Oracle的SGA參數為合適的值,解決最初的問題。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM