今天測試服務器遇到問題
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參數為合適的值,解決最初的問題。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
