星期天同事打電話反映,數據庫的TNS時通時斷,嚴重影響生產。判斷應該是內存用完造成用戶無發連接造成。可是我在星期天上午才將內存由1.5G增加到4G的,什么問題呢?
星期一上班,打開boot.ini,發現在內存增加后沒有加 /3G開關。加上/3G參數,重新啟動電腦,過了約半小時,產線反應問題復現---Ora-012500錯誤。看來沒有徹底解決。在網上查找異常原因,發現原因是雖然內存有4G,但Oracle能用的只有2G(需要做一些修改才能超越此限制,但時間不允許),而我的SGA用了1.5G, 在獨占模式下,每一個session將單獨分配2M左右的內存,300個Session需要600M,顯然,內存已經不夠用了。
IXDBA.NET技術社區
根據以上分析,解決方法當然有3種,一是修改系統參數,讓Oracle能夠使用超過2G的內存,這需要在測試環境測過才可在正式環境進行,解決問題優先,這個以后再試。第二是減小為每一個會話分配的內存大小,以能連接更多的用戶。三是減小SGA的大小。第二個方法其實很簡單,先停止oracle服務和TNS服務,再運行以上命令
C:oracleora81bin>orastack oracle.exe 500000
Dump of file oracle.exe
Current Reserved Memory per Thread = 1048576
Current Committed Memory per Thread = 4096
New Reserved Memory per Thread = 500000
C:oracleora81bin>orastack tnslsnr.exe 500000
Dump of file tnslsnr.exe
Current Reserved Memory per Thread = 1048576
Current Committed Memory per Thread = 4096
|
|