1. 程式人生 > >使用dblink導致資料庫連線數

使用dblink導致資料庫連線數

        現有兩個資料庫,自己的資料庫,別人的資料庫

        近期一個功能上線之後,對方的開發人員經常過來抱怨說,他們的資料庫連線數超了,導致

連不上,由於我們的新功能是通過dblink從我們資料庫到他們資料庫查資料,所以他們懷疑是我們資料庫的連線沒關,排查後發現程式碼裡面有關閉連線,沒問題。

後來查閱發現,資料庫通過dblink查詢,會開啟一個session,即使是select也會,附上別人查閱的官方文件

Managing a Distributed Database

Closing Database Links

If you access a database link in a session, then the link remains open until you close the session. A link is open in the sense that a process is active on each of the remote databases accessed through the link. This situation has the following consequences:

  • If 20 users open sessions and access the same public link in a local database, then 20 database link connections are open.

  • If 20 users open sessions and each user accesses a private link, then 20 database link connections are open.

  • If one user starts a session and accesses 20 different links, then 20 database link connections are open.

After you close a session, the links that were active in the session are automatically closed. You may have occasion to close the link manually. For example, close links when:

  • The network connection established by a link is used infrequently in an application.

  • The user session must be terminated.

To close a link, issue the following statement, where linkname

 refers to the name of the link:

ALTER SESSION CLOSE DATABASE LINK linkname;

Note that this statement only closes the links that are active in your current session.

解決:

    我們是通過was連線池取的連線,即使程式程式裡面把連線close了,也只是把連線放回was的連線池,但是session還在,所以連線一隻佔著導致別人的資料庫連線數超了。所以用dblink的時候,就算是select操作,也在後面加上con.commit或者con.rollback

相關推薦

使用dblink導致資料庫連線

        現有兩個資料庫,自己的資料庫,別人的資料庫        近期一個功能上線之後,對方的開發人員經常過來抱怨說,他們的資料庫連線數超了,導致連不上,由於我們的新功能是通過dblink從我們資料庫到他們資料庫查資料,所以他們懷疑是我們資料庫的連線沒關,排查後發現程

ORACLE資料生成awr報告與檢視資料庫連線

一,生成awr報告 查詢awrrpt.sql檔案位置 1 find / -name awrrpt.sql 2,進入oracle目錄 3登入oracle sqlplus / as sysdba 4, SQL>@/home/oracle/app/oracle/produc

個人筆記:修改資料庫連線

select count(*) from v$process; --當前的資料庫連線數 select value from v$parameter where name ='processes'; --資料庫允許的最大連線數 alter system set processes =

檢視oracle使用者資料庫連線

1、查詢oracle的連線數 select count(*) from v$session; ps -ef|grep "(LOCAL=NO)"|wc -l 2、查詢oracle的併發連線數 select count(*) from v$session where sta

Oracle誤刪.DBF檔案導致資料庫連線不上解決

由於之前刪點東西,不小心把oracle中的一個.DBF檔案給刪除了。導致了我資料庫一直連線不上,加上有一個多月沒有使用oracle,所以弄了一個早上才解決。下面我就來總結一下解決方法   1.以管理員的身份執行cmd,輸入 sqlplus/nolog  2.接著

mysql資料庫連線、併發相關資訊

1.mysql> show status like ‘Threads%’; +——————-+——-+ | Variable_name | Value | +——————-+——-+ | Threads_cached | 58

shell指令碼 監控資料庫連線

logfile="./test.log" while true do sleep 1s thread_count=`mysqladmin -uroot -p1234 status |a

ORACLE資料庫連線滿的分析及優化

最近在使用Oracle的過程中,出現了資料庫連線數滿的情況,導致程式及資料庫連線工具連線不上。主要從兩個方面來考慮這件事,從程式方面來看:    1.進行資料庫連線操作後未釋放連線;    2.若使用了資料庫連線池,則考慮連線池的超時設定。從資料庫本身來看:    1.可以增

檢視mysql資料庫連線、併發相關資訊

1.mysql> show status like 'Threads%'; +-------------------+-------+ | Variable_name     | Value | +-------------------+-------+ | Thr

ojdbc14版本過低導致資料庫連線失敗 Connection reset

java.sql.SQLException: Io 異常: Connection resetat oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)at oracle.jdbc.dbaccess.

檢視/修改mysql資料庫連線、併發相關資訊

在使用MySQL資料庫的時候,經常會遇到這麼一個問題,就是“Can not connect to MySQL server. Too many connections”-mysql 1040錯誤,這是因為訪問MySQL且還未釋放的連線數目已經達到MySQL的上限。通常,mysql的最大連線數預設是100,

伺服器上mysql資料庫連線、併發相關資訊

1.開啟資料庫 mysql -u 使用者名稱 -p 2.當出現Enter password:時輸入密碼 3.查詢資料庫相關資訊:show status like 'Threads%'; Threads_connected 跟show processlist結果相同,表示當

檢視oracle使用者資料庫連線(檢視修改資料庫最大連線等)

一、檢視oracle使用者資料庫連線數 1、查詢oracle的連線數 select count(*) from v$session; 2、查詢oracle的併發連線數 select count(*) from v$session where status='ACTIVE

SqlServer資料庫連線與客戶端連線池關係測試(一)

  連線池連線數             DB連線數      峰值錯誤資訊     連線峰值   40000 0(32767)    ? ? 3000 0(32767) ? ? 40000 3000 ? ?

finally被置空導致資料庫連線掛死

        今天寫了幾行程式碼,向資料庫插入一篇文章,程式執行表現很好,完全按照我的意願去走,可以寫入時都成功寫入資料庫,該失敗時果斷失敗。可是當我回頭再看程式碼時,突然驚恐萬分。這裡面隱藏了多麼弱智的bug,甚至說是外行的錯誤,可是想了一下,似乎又很有可能出現,一不

資料庫的最大連線過小導致openstack的dashboard報錯

一、現象: 在點選openstack的dashboard時右上角總是彈出一些錯誤的提示,再次重新整理時又不提示了。 二、原因: MYSQL資料庫安裝完成後,預設最大連線數是100,一般流量

oracle11g連線滿導致資料庫重啟

現象: 版本:oracle11.2.0.3 今天資料庫出現連線數滿導致資料庫重啟的現象 PMON failed to acquire latch, see PMON dump Mon Jan 21 16:23:55 2013 ORA-00020: 超出最大程序數 (600)

關於更新表結構時碰到的DDL鎖導致資料庫無法連線

記一次更新表結構時語句一直處於等待無法執行的解決辦法 我們在更新資料庫表結構的時候,當資料庫有連線正在進行中的事務時,那麼你的更新請求會處於一個等待的狀態,一直等待到當前未提交的事務完成之後才會進行更新操作,但是這個未提交的事務會需要多久時間完成對我們來講是一個未知數,(自己第一次碰到這個情況的時候,竟然以

資料庫預設連線 遠遠 大於 資料庫連線池的 連結,為什麼還要使用資料庫連線

1. 資料庫的讀寫能力與計算機硬體相關, 所以連結太多,資料庫也不能一下子處理。連線數超過資料庫最大連線數,連結就會等待,超時就會報錯。 2. 建立連結很浪費資源。資料庫連線池保持現有連線後不會再建立連線池,而是複用這些連結。 3. 如果併發超過連線池連線數,則連結排隊等待,直到空出連結。 4.如果

TIME_WAIT、NON_ESTABLISHED 連線過高,導致tomcat服務直接宕機

TCP常見配置參考地址: http://shift-alt-ctrl.iteye.com/blog/1966744;https://www.cnblogs.com/fczjuever/archive/2013/04/05/3000697.html 以上圖最大連線數接近了2000,這個對於單機環境來說基本已