Oracle Express 間歇性停止響應,需要重新啟動作業系統才能修復
在過去的 2 天裡,我一直在使用 Oracle XE 時遇到問題,這真的讓我大吃一驚。
發生這種情況或何時發生似乎沒有押韻或原因,但昨天發生了 6 次,今天早上到目前為止發生了兩次。我正在開發一個 .NET 應用程序,有時當我啟動應用程序、刷新頁面或執行任何操作時,我會收到無法與數據庫建立連接的異常。然後我嘗試連接我剛剛得到的 sqlplus:
C:\>sqlplus user/password@localhost SQL*Plus: Release 11.2.0.2.0 Beta on Wed May 1 11:08:53 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved.
然後它就永遠坐在那裡。沒有超時,沒有錯誤,什麼都沒有。我也無法連接任何其他數據庫程序,整個伺服器只是沒有響應。
如果我進入服務管理器,我會看到服務確實在執行,所以沒有任何崩潰:
我試過重啟
OracleServiceXE
和OracleXETNSListener
. 兩者都將關閉並重新啟動,但是我仍然無法連接到伺服器。解決此問題的唯一方法是完全重新啟動 Windows。然而,這當然需要 5-10 分鐘,而且真的開始變老了。
此時在 Windows 事件查看器中似乎沒有任何與 Oracle 相關的內容。我很高興添加任何其他有助於調試的資訊。有任何想法嗎?
更新:
我確實注意到
listener.log
. 這些錯誤與崩潰開始發生的時間完全相同:30-APR-2013 08:50:42 * 12531 TNS-12531: TNS:cannot allocate memory Tue Apr 30 08:52:28 2013 30-APR-2013 08:52:28 * 12531 TNS-12531: TNS:cannot allocate memory Tue Apr 30 08:52:58 2013 30-APR-2013 08:52:58 * 12531 TNS-12531: TNS:cannot allocate memory
最後 1,000 行 alert_XE.log 在這裡。
您遇到這些問題是因為您在 64 位 Windows 上執行 32 位版本的 Oracle XE。這不是受支持的配置,並且已知有許多記錄在案的問題。
第一期
在非英語 Windows 安裝上執行時,大約在通過偵聽器建立 2048 個連接之後,可能會發生此錯誤。
修復問題 1
在 listener.exe 所在的電腦上創建一個名為**Administrators的 Windows 使用者組。**這可以解決聽者死亡的問題。
***參考:***我一找到第一期的連結就貼出來
第 2 期
此錯誤也可能發生在桌面應用程序堆太小的 Windows 64 位系統上。
修復問題 2
嘗試在其位於的 Windows 中增加桌面應用程序堆系統資料庫
HKLM\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows
就像注意不要自己添加這個值一樣,你必須依賴於文件。
基本上搜尋系統資料庫項並更改 key 的第三個值
SharedSection=1024,20480,1024
。這是一種反複試驗的方法,但似乎可以改善聽者的穩定性和記憶問題。參考: TNS:cannot allocate memory - 一個盒子上的數據庫數量是否有限制(Oracle 開發人員社區)