1. 程式人生 > >ORACLE資料庫連線數滿的分析及優化

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

最近在使用Oracle的過程中,出現了資料庫連線數滿的情況,導致程式及資料庫連線工具連線不上。主要從兩個方面來考慮這件事,從程式方面來看:

    1.進行資料庫連線操作後未釋放連線;

    2.若使用了資料庫連線池,則考慮連線池的超時設定。

從資料庫本身來看:

    1.可以增加資料庫的最大連線數;

    2.可以定時清理資料庫中INACTIVE的會話。

對於增加最大連線數的資料很多,文末也會推薦一個連結,定時清理INACTIVE會話需要建立一個儲存過程找出超過2小時(根據需求設定)的會話,然後斷開會話,具體如下:

--清理超過2小時的INACTIVE會話
CREATE OR REPLACE PROCEDURE DB_KILL_IDLE_CLIENTS AUTHID DEFINER AS
    job_no number;
    num_of_kills number := 0;
BEGIN

    FOR REC IN
        (SELECT SID, SERIAL#, INST_ID, MODULE,STATUS
        FROM gv$session S
            WHERE S.USERNAME IS NOT NULL
            AND S.LAST_CALL_ET >= 2*60*60
            AND S.STATUS = 'INACTIVE'
        ORDER BY INST_ID ASC
        ) LOOP
        DBMS_OUTPUT.PUT('LOCAL SID ' || rec.sid || '(' || rec.module || ')');
        execute immediate 'alter system disconnect session ''' || rec.sid || ', ' ||
        rec.serial# || '''immediate' ;

        DBMS_OUTPUT.PUT_LINE('. killed locally ' || job_no);
        num_of_kills := num_of_kills + 1;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE ('Number of killed system sessions: ' || num_of_kills);
END DB_KILL_IDLE_CLIENTS;

建立定時任務執行這個儲存過程:

begin
  sys.dbms_job.submit(job => :job,
                      what => 'SYS.DB_KILL_IDLE_CLIENTS;',
                      next_date => to_date('25-05-2018 17:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'TRUNC(sysdate,''hh'') + 1/(24)');
  commit;
end;

注意以sys角色登入操作。

以下是參考的資料:

1.增加連線數:https://blog.csdn.net/lele2426/article/details/4978283

2.清理會話:https://www.cnblogs.com/kerrycode/p/3636992.html

3.建立定時任務:https://www.cnblogs.com/yx007/p/6519544.html

相關推薦

ORACLE資料庫連線滿分析優化

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

【轉】SignalR站點瀏覽器連線限制分析解決方案

SignalR 搭建實時重新整理應用雖然非常方便,但是有個問題你必須考慮到,就是一般的瀏覽器,對於SignalR的全雙工通訊方式,絕大多數瀏覽器都只支援6個新視窗,如果你開啟第7個,那麼新的框口頁面是不會載入的。 這其實是客戶端瀏覽器的限制,這是以連線的域名為單位來限制,

jmeter測試伺服器效能之資料連線瓶頸分析優化

前面搭建的測試環境linux+Servlet+mysql+tomcat都是採用的預設設定 先介紹一個在linux伺服器下,批量kill掉mysql連線數的方法。 1)vi kill.sh 複製下面的程式碼進去 2)chmod 700 kill.sh

關於oracle資料庫訪問報12519異常修改oracle最大連線的解決方法

業務系統試執行期間,後臺一直報12519異常,詳情參見下圖: 經網上方法查詢是資料庫超過了最大連線數。於是對oracle進行修改操作,方法如下: 1、在cmd中輸入:sqlplus / as sysdba; 2、select count(*) from v$process

PostgreSQL CPU滿(100%)性能分析優化(轉)

mark ike -- 過多 mar 是不是 影響 sas sql日誌 PostgreSQL CPU滿(100%)性能分析及優化 轉自:https://help.aliyun.com/knowledge_detail/43562.html 在數據庫運維當中,

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

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

檢視oracle使用者資料庫連線

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

C# Oracle資料庫連線操作

1、  將光碟放入光碟機,自動彈出安裝介面,選擇開始安裝; 2、  歡迎:下一步; 3、  檔案定位,所有內容預設,如果更改oracle安裝路徑,在目標路徑中進行更改,下一步; 4、  可用產品:伺服器端選擇第一個

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

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

oracle11g連線滿導致資料庫重啟

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

Maven專案中oracle資料庫連線不上(已經在pom檔案中配置jdbc驅動檔案)

在Maven專案中配置資料庫連線的過程中,出現java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver: 但是檢查了很久都沒有發現哪裡出現錯誤,該配置的都配置了,然後在百度找了一下,發現是oracle版本不同造成的: 參

Mysql 多表聯合查詢效率分析優化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

微信小程式:藍芽BLE連線10003問題分析解決

10003是微信藍芽連線經常碰到的問題,微信官方給出的文件中就簡單的描述為“connection fail”,備註為“連線失敗”。然而,實際上出現10003的狀況有很多,比如根據deviceId連線藍芽時,藍芽裝置未開啟或異常導致無法連線;藍芽裝置被佔用或者上次藍芽連線未斷開導致無法

MYSQL多表聯查效率分析優化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!         &n

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

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

Oracle資料庫查詢表空間使用情況建立表空間

--查詢表空間使用狀況 select total.tablespace_name, round(total.MB, 2) as Total_MB, round(total.MB - free.MB, 2) as Used_MB, round((1 - free.MB

MySQL慢日誌功能分析優化增強

此文已由作者溫正湖授權網易雲社群釋出。歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。MySQL慢日誌(slow log)是MySQL DBA及其他開發、運維人員需經常關注的一類資訊。使用慢日誌可找出執行時間較長或未走索引等SQL語句,為進行系統調優提供依據。本文結合線上案

Druid資料庫連線池原始碼分析

Druid不僅僅是一個數據庫連線池,還有很多標籤,比如統計監控、過濾器、SQL解析等。既然要分析連線池,那先看看DruidDataSource類 getConnection方法的實現:   @Override public DruidPooledConne

設計容錯的資料庫連線池程式設計思路--架構優化之道【JAVA核心】

本專案的原始碼已經上傳,歡迎點選下載1、資料庫連線池的產生背景?資料庫在高併發情況下會面臨諸多問題——JDBC:管道的臨時建立——非常耗用資源,而且在高併發中,多個客戶端同時建立IO管道DB的承受能力如何考慮?執行SQL語句完畢後又要馬上銷燬——之後難道不要再用?最大連線管道

MYSQL,SQLSERVER,ORACLE 資料庫連線

public class SysDatabase { private String type;//資料庫型別 如 MYSQL,SQLSERVER,ORACLE private String ip;//ip地址 如 localhost private String port;/