星期天同事打電話反映,數(shù)據(jù)庫(kù)的TNS時(shí)通時(shí)斷,嚴(yán)重影響生產(chǎn)。判斷應(yīng)該是內(nèi)存用完造成用戶無(wú)發(fā)連接造成?墒俏以谛瞧谔焐衔绮艑(nèi)存由1.5G增加到4G的,什么問(wèn)題呢?
星期一上班,打開boot.ini,發(fā)現(xiàn)在內(nèi)存增加后沒(méi)有加 /3G開關(guān)。加上/3G參數(shù),重新啟動(dòng)電腦,過(guò)了約半小時(shí),產(chǎn)線反應(yīng)問(wèn)題復(fù)現(xiàn)---Ora-012500錯(cuò)誤?磥(lái)沒(méi)有徹底解決。在網(wǎng)上查找異常原因,發(fā)現(xiàn)原因是雖然內(nèi)存有4G,但Oracle能用的只有2G(需要做一些修改才能超越此限制,但時(shí)間不允許),而我的SGA用了1.5G, 在獨(dú)占模式下,每一個(gè)session將單獨(dú)分配2M左右的內(nèi)存,300個(gè)Session需要600M,顯然,內(nèi)存已經(jīng)不夠用了。
IXDBA.NET技術(shù)社區(qū)
根據(jù)以上分析,解決方法當(dāng)然有3種,一是修改系統(tǒng)參數(shù),讓Oracle能夠使用超過(guò)2G的內(nèi)存,這需要在測(cè)試環(huán)境測(cè)過(guò)才可在正式環(huán)境進(jìn)行,解決問(wèn)題優(yōu)先,這個(gè)以后再試。第二是減小為每一個(gè)會(huì)話分配的內(nèi)存大小,以能連接更多的用戶。三是減小SGA的大小。第二個(gè)方法其實(shí)很簡(jiǎn)單,先停止oracle服務(wù)和TNS服務(wù),再運(yùn)行以上命令
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
|
|