當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

連接池滿問題

1. 問題描述

若日志報 ORA-12519 TNS:no appropriate service handler found,是數據庫連接失敗的錯誤,12519 錯誤是監聽不能提供服務。

2. 原因

原因是我們定義數據連接後,點擊連接時,此時會用掉一個連接池中的一個連接。
而在定義數據集後,點擊預覽按鈕,此時連接池就會分配連接,可能會使用之前那個連接(之前的連接已釋放),或分配一個其他的連接或新建一個連接。
若此時連接池所有連接都已用完,就會報如下錯誤:

當客戶請求數據庫連接時,首先是查看連接池中是否有空閑連接(指當前沒有分配出去的連接)。
假如存在空閑連接,則把連接分配給用戶,并作相應的處理(即标記該連接爲正在使用,引用計數加 1)。
假如沒有空閑連接,則查看當前所開的連接數是不是已經達到 maxConn(最大連接數),若沒達到就重新創建一個連接給請求的客戶;
若達到就按設定的 maxWaitTime(最大等待時間)進行等待;
若等待 maxWaitTime 後,仍沒有空閑連接,就抛出無空閑連接的異常給用戶。

3. 解決方案

若您在FR 連接池屬性 的設置中,已将最大連接數設置得過大,還出現如上的報錯,此時通常就是數據庫進程(processes)達到上限導緻的,可增大數據庫中的連接數目來解決此問題。如下在數據庫中修改最大連接數:

查看當前的連接數

select count(*) from V$process;

查看數據庫允許的最大連接數

select value from V$parameter where name='processes';

修改最大連接數爲1000

alter system set processes=1000 scope=spfile

重啓數據庫,再查詢最大連接數,數字改變就表示已修改成功。

說明:當客戶釋放數據庫連接時,先判定該連接的引用次數是否已超過規定值,假如超過就删除該連接,并判定當前連接池内總的連接數是否小於 minConn(最小連接數),若小於就将連接池布滿;假如沒超過就将該連接标記爲開放狀态,可供再次複用。可看出正是這套策略保證了數據庫連接的有效複用,避免頻繁地建立、釋放連接所帶來的系統資源開銷。

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

反饋已提交

網絡繁忙