利用ipcrm清除資料庫crash後沒有釋放的記憶體段
某測試庫,開發報告無法連線使用,登陸進該server,首先輸入ps –ef | grep ORACLE_SID發現該instance沒有啟動,
檢視alertlog,日誌顯示11月28號0:00db有過一次日誌切換,10分鐘後開始出現7445錯誤,過一會dbw0程式dead,然後PMON程式terminated,此時資料庫crash;
緊接著是啟動資料庫,版本為10.2.0.4,在open階段報告錯誤
ORA-00704:
bootstrap process failure
ORA-39700: database must be opened with UPGRADE option
如此反覆了幾次資料庫始終沒有正常啟動
僅從以上錯誤很容易讓人聯想到是資料庫升級沒有成功,需要升級一下資料字典即可;但是alertlog並沒有資料庫曾經升級過的記錄,而且此套資料庫有好幾個公司維護,也很難求證此前資料庫有過什麼重大變更。
正在糾結於要不要根據提示升級資料字典時,一條重要線索出現,該資料庫原本是10.2.0.5的,自從crash後才有人試圖以10.2.0.4的版本將其啟動,怪不得會有上述錯誤。
重新設定LD_LIBRARY_PATH/ORACLE_HOME為10.2.0.5,以sysdba登陸,應該顯示connected to a idle instance才對,可此次只提示session connected;
輸入startup,報告ORA-03113: end-of-file on communication channel;
輸入shutdown immediate,報告ORA-01033: ORACLE initialization or shutdown in progress
再次執行ps –ef | grep ORACLE_SID,後臺程式並沒有啟動,執行ipcs –m | grep oracle返回10條記錄,而ps –ef | grep pmon | -V “grep”返回9條,原因終於找到了。
資料庫crash的時候,對應的共享記憶體段並沒有被OS及時釋放,才導致既無法啟動又無法關閉的怪現象。
解決辦法:ipcs –m | grep oracle找到對應的nattach為0的記錄,然後執行ipcrm –m id即可釋放對應的共享記憶體段;此時再次登陸,敲入startup即可正常啟動資料庫,版本10.2.0.5
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-712517/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 共享記憶體段未釋放導致資料庫記憶體被耗盡記憶體資料庫
- Linux釋放記憶體及手動釋放Oracle共享記憶體段Linux記憶體Oracle
- Redis刪除大量key後,佔用的系統記憶體卻沒有釋放?Redis記憶體
- ORA-27102 IPCRM無法清除共享記憶體記憶體
- 如何在Mac上釋放記憶體?Mac清除RAM教程Mac記憶體
- 又是訊號量和共享記憶體沒有釋放的db待機記憶體
- iOS開發筆記— 資料庫、Crash、記憶體問題分析iOS筆記資料庫記憶體
- 資料庫連線沒有釋放造成的奇怪問題資料庫
- vector 的記憶體釋放記憶體
- 共享記憶體相關(ipcs/ipcrm)記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- XCode釋放記憶體XCode記憶體
- linux釋放記憶體Linux記憶體
- vector 避免記憶體頻繁分配釋放與手動釋放vector記憶體記憶體
- JDBC ResultSet佔用的記憶體 在close後能否釋放?JDBC記憶體
- 正確釋放Vector的記憶體記憶體
- 【OpenCV】有關記憶體釋放的一些問題OpenCV記憶體
- 記憶體資料庫記憶體資料庫
- 記憶體資料庫有幾個人用過?記憶體資料庫
- 轉 linux 記憶體釋放Linux記憶體
- Linux釋放cache記憶體Linux記憶體
- linux 記憶體釋放命令Linux記憶體
- golang 釋放記憶體機制的探索Golang記憶體
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- C# 垃圾回收釋放記憶體C#記憶體
- FireFox記憶體自動釋放Firefox記憶體
- .NET 記憶體管理兩種有效的資源釋放方式記憶體
- 如何主動釋放 HeapIdle 的記憶體API記憶體
- .Net記憶體管理釋放的兩種方式記憶體
- Vector清空資料與釋放記憶體(.clear與.swap的區別與使用)記憶體
- 【記憶體資料庫】TimesTen記憶體資料庫
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- vector clear() 方法 記憶體釋放問題記憶體
- C/C++記憶體分配以及釋放C++記憶體
- Linux之 手動釋放記憶體Linux記憶體
- mongodb釋放記憶體-切換日誌MongoDB記憶體
- Linux下如何釋放cache記憶體Linux記憶體