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

2021-08-20 06:29:58 字數 1434 閱讀 9356

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

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

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

從資料庫本身來看:

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

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

--清理超過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.增加連線數:

2.清理會話:

3.建立定時任務:

增加 oracle 資料庫連線數

oracle的連線數 sessions 與其引數檔案中的程序數 process 有關,它們的關係如下 sessions 1.1 process 5 但是我們增加process數時,往往資料庫不能啟動了。這因為我們還漏調了乙個unix系統引數 它是 etc system 中semmns,這是unix系...

修改Oracle資料庫的連線數

測試了這個,不錯。摘 一 1.檢視processes和sessions引數 sql show parameter processes name type value db writer processes integer 1 gcs server processes integer 0 job qu...

檢視資料庫連線數

sql server 檢視資料庫連線數 1.獲取當前指定資料庫的連線資訊 select from master.dbo.sysprocesses where dbid in select dbid from master.dbo.sysdatabases where name yourdatabas...