informix異常down掉以後,原來所占用的內存不會自動釋放。執行oninit -v 指令會提示錯誤。此時常規的做法是將informix所占用的內存釋放掉,然後重啟數據庫。
以下是雙引擎環境下(一個引擎異常當掉,一個引擎正常運行),判斷異常引擎所占內存的方法:
1. 在正常運行的引擎下執行onstat -g pos (如下圖),找到共享內存的起始段:52684801
2. 然後執行 ipcs -a |grep informix |more (如下圖), 對應結果的第三列能看到52684801結尾的內存結構。52684801,52684802,52684803,52684804,52684805就是該正常引擎所占用的內存段。剩下的0x52fe4801,0x52fe4802,0x52fe4803
則為異常引擎所占用的內存段。
3. 找到對應數據段的所對應的第2列。執行ipcrm -m 1546,ipcrm -m 1547,ipcrm -m 1034即可。