亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

在Oracle 8x中實現自動斷開后再連接

2024-08-29 13:46:41
字體:
來源:轉載
供稿:網友

  在實際的數據庫應用中,我們經常碰到這樣一個問題,連接到Oracle數據庫的用戶在作了一次操作后,再也沒有后續操作,但卻長時間沒有和數據庫斷開連接。對于一個小型的應用系統來講,本身的連接數目就有限,這似乎沒有什么嚴重的后果,但假如對于一個大型的數據庫應用。 如稅務、工商等,假如數據庫的連接數目很多,對于數據庫服務器來講,多一個連接就要多消耗一份資源,假如大量用戶連接進入數據庫系統但卻不進行任何的操作,這無形之中就白白造成了服務器系統資源的浪費,同時造成服務器負載的提高,對于那些確實在工作的用戶來講,就不能最大限度的利用服務器的資源,嚴重情況下可能造成系統性能的急劇下降。

  針對這種問題,該如何處理呢?對于目前流行的三層結構(Browser/application/Server)開發來講,這個問題可以通過設置應用服務器端的連接共享池(shared pool)來避免。但對于傳統的兩層結構(Client/Server)應用,就必須由我們人為干預來避免這種資源浪費情況。具體可以通過一個后臺任務來監控系統中的所有進程,對于那些空閑超過一定時間的進程采取一定的非凡處理措施,如在客戶端提示用戶連接時間太長,假如沒有后續操作系統將自動殺掉該連接或者直接將該空閑連接殺掉。下面就來具體討論如何在Oracle 8x環境下實現用戶進程的自動監控及其對對超過一定空閑時間連接的處理辦法。

  一、識別系統中超過一定空閑時間的連接

  要實現后臺任務自動對超過一定時間空閑連接的處理,首先第一步工作就是要從所有與數據庫服務器的連接中識別出那些連接需要處理,也就是需要獲得與服務器連接的每個用戶的登陸時間及其最后一次操作后的空閑時間。在Oracle系統中,有一個動態性能視圖v$session,該視圖保存著系統當前連接的各種動態信息。其中,有兩個字段LOGON_TIME和 LAST_CALL_ET可以得到上面的兩個答案。

  l LOGON_TIME是一個日期型(Date)字段,為用戶登陸時間;

  l LAST_CALL_ET是一個數字型(Number)字段,其含義是用戶最后一條語句執行完畢后的時間,單位為秒。每次用戶執行一個新的語句后,該字段復位為0,重新開始記數。我們可以通過該字段來獲得一個連接用戶最后一次操作數據庫后的空閑時間。

  下面的SQL查詢語句可以得到與當前數據庫連接的所有用戶的一些基本情況,如用戶名、狀態、連接機器的名稱,操作系統中用戶的名稱,UNIX系統的進程號,在UNIX操作系統級斷開連接的語句,Oracle數據庫系統斷開連接的語句,登陸時間以及最后一次操作到現在的空閑時間等等。

SELECT s.username 用戶名稱, s.status 狀態,s.machine 機器名稱,
    osuser 操作系統用戶名稱,spid UNIX進程號,
'kill -9 'spid UNIX級斷開連接,
'alter system kill session ' ''''s.sid','s.serial# ''';' Oracle級斷開連接,
TO_CHAR (logon_time, 'dd/mm/yyyy hh24:mi:ss') 登陸時間,
last_call_et 空閑時間秒,
TO_CHAR (TRUNC (last_call_et / 3600, 0))' '' HRS '
TO_CHAR (
TRUNC ((last_call_et - TRUNC (last_call_et / 3600, 0) * 3600) / 60, 0)
) ' MINS' 空閑時間小時分鐘,
module 模塊
FROM v$session s, v$PRocess p
WHERE TYPE = 'USER'
AND p.addr = s.paddr
AND status != 'KILLED'
-- AND SUBSTR (machine, 1, 19) NOT IN ('機器名')
AND last_call_et > 60 * 60 * 1 -- 空閑時間超過1小時的連接
ORDER BY last_call_et desc;

  在上面的查詢中,我們可以通過SUBSTR (machine, 1, 19) NOT IN ('機器名')這個條件來屏蔽一些機器,這些機器可能需要運行一些耗費很長時間的SQL語句或其他一些非凡情況的機器。屏蔽這些機器的原因就是在后面的后臺自動識別及處理任務中對這些機器不作處理。
  二、識別及斷開空閑用戶的存儲過程

  上面的查詢語句可以得到系統中所有的連接用戶的一些基本情況,但是又如何來實現系統自動判定空閑超過一定時間的連接并將其自動斷開呢?Oracle系統提供了一種稱之為后臺任務(Job)自動處理的機制。 我們可以編寫一個后臺任務來定時執行,從而判定是否存在這樣的用戶連接,假如存在,則通過后臺任務將其自動斷開。

  首先創建一個存儲過程來完成空閑一定時間用戶的識別和斷開工作,然后添加一個后臺任務來定時(根據空閑時間長短來確定)執行該過程,即可實現自動斷開系統中空閑超過一定時間用戶的需求。

  存儲過程p_monitor見下,其中參數an_nimutes為用戶輸入參數,用來確定識別和斷開多長空閑時間連接的用戶,單位為分鐘,默認為60分鐘,也就是1小時。需要注重一點的是,該存儲過程,需要以sys用戶身份運行。相應,調用該存儲過程的后臺任務也需要以SYS身份來添加。


CREATE OR REPLACE PROCEDURE P_MONITOR(
AN_MINUTES NUMBER DEFAULT 60)
/*******************************************
存儲過程用途:識別出系統中超過一定空閑連接時間(
  AS_MINUTES)的用戶,并將其kill掉參數:
  AN_MINUTES 空閑時間數,單位為分鐘,默認為60分鐘
********************************************/
AS
 v_Str VARCHAR2(100);
 CURSOR C_users(v_minutes number) IS  SELECT s.username,
 s.status, s.machine, 'alter system kill session '
 ''''s.sid','s.serial# '''' Operates
 FROM v$session s, v$process p
 WHERE TYPE = 'USER'
 AND p.addr = s.paddr
 AND status != 'KILLED'
 -- AND SUBSTR (machine, 1, 19) NOT IN ('需要屏蔽不被處理的機器名')
 AND last_call_et > v_minutes*60
 ORDER BY last_call_et desc;

BEGIN
FOR T_users IN C_users(an_minutes) LOOP
v_Str := T_USERS.OPERATES;
EXECUTE IMMEDIATE v_str;
END LOOP;
END;
/
  三、后臺任務的定時執行

  最后,我們為系統添加一個定時任務,定時調用上面創建的存儲過程,即可完成系統自動識別和處理空閑用戶的工作。

  下面是一個實際調用的例子,在sys用戶下,首先添加一個任務,該任務每隔半小時運行一次,每次均調用P_monitor存儲過程,找出系統中空閑時間超過1小時的連接,然后自動斷開。

DECLARE
jobno number;
BEGIN
DBMS_JOB.SUBMIT(
job => jobno,
what => 'p_monitor(60);',
next_date => SYSDATE,
interval => '/*1:Hr*/ sysdate + 30/1440); -- 每半小時運行一次
END;
/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产国语刺激对白av不卡| 日韩av网站电影| 亚洲综合在线中文字幕| 欧美三级免费观看| 国产一区二区三区视频| 国产精品直播网红| 国产综合色香蕉精品| 91精品中文在线| 亚洲视频欧洲视频| 午夜精品一区二区三区在线视频| 亚洲国产成人精品电影| 久久777国产线看观看精品| 亚洲视频在线观看| 一区二区三区www| 欧美日韩中文字幕日韩欧美| 久操成人在线视频| 久久91亚洲精品中文字幕| 日韩精品极品视频| www.亚洲人.com| 色综合视频网站| 欧美日韩精品二区| 国产精品久久久久秋霞鲁丝| 亚洲精选中文字幕| 欧美色图在线视频| 亚洲高清av在线| 韩国欧美亚洲国产| 欧美日韩国产一中文字不卡| 中文字幕精品www乱入免费视频| 日韩国产中文字幕| 国产亚洲在线播放| 丝袜美腿精品国产二区| 91国产精品91| 91精品国产91久久久久久最新| 免费成人高清视频| 成人免费在线网址| 国产69精品久久久久99| 国产精品亚洲激情| 国产乱人伦真实精品视频| 国产精品免费一区二区三区都可以| 国产精品流白浆视频| 中日韩午夜理伦电影免费| 欧美性色19p| 日本一区二区在线播放| 日韩中文字幕网址| 国产成人久久久| 亚洲人成网站777色婷婷| 91在线精品视频| 中文字幕视频一区二区在线有码| 久久久久成人网| 亚洲精品久久久久中文字幕二区| 国产成人黄色av| 成人黄色在线免费| 国产日韩欧美在线视频观看| 欧洲永久精品大片ww免费漫画| 91亚洲精品视频| 97人洗澡人人免费公开视频碰碰碰| 亚洲激情久久久| 久久视频免费在线播放| 欧美精品xxx| 亚洲第一男人天堂| 亚洲欧美中文日韩在线v日本| 亚洲精品小视频在线观看| 久久亚洲一区二区三区四区五区高| 国产精品扒开腿做爽爽爽男男| 中文字幕久久久av一区| 久久精品99久久久久久久久| 国产性猛交xxxx免费看久久| 久久99国产精品久久久久久久久| 精品国偷自产在线视频99| 日韩美女福利视频| 日韩精品免费电影| 91精品国产91久久久久久吃药| 正在播放国产一区| 亚洲午夜精品视频| 26uuu另类亚洲欧美日本一| 久久91精品国产91久久跳| 国内精品400部情侣激情| 91最新在线免费观看| www.欧美三级电影.com| 91精品免费视频| 69视频在线播放| 丝袜亚洲欧美日韩综合| 国产精品美女久久| 91久久精品国产91久久| 国产精品激情av电影在线观看| 久久久精品视频在线观看| 一本一本久久a久久精品牛牛影视| 久久久久久999| 久久免费视频网站| 亚洲欧美在线一区| 欧美噜噜久久久xxx| 精品久久久国产| 日本免费在线精品| 国产一区二区三区在线看| 亚洲欧美另类自拍| 亚洲精品丝袜日韩| 成人在线激情视频| 国产福利视频一区| 国产亚洲欧美日韩一区二区| 麻豆国产精品va在线观看不卡| 日韩不卡中文字幕| 8090理伦午夜在线电影| 日韩精品极品毛片系列视频| 成人欧美一区二区三区黑人孕妇| 青青在线视频一区二区三区| 久久久国产一区二区三区| 欧美成年人在线观看| 久久精品国产成人| 欧美乱大交xxxxx另类电影| 91精品国产乱码久久久久久久久| 在线亚洲欧美视频| 国产精品三级网站| 日韩精品www| 午夜精品久久久99热福利| 久久久精品久久久| 国产69精品久久久久9| 国产99久久精品一区二区| 国产精品久久中文| 精品久久久久久久中文字幕| 亚洲韩国欧洲国产日产av| 这里只有精品在线观看| 91精品国产高清久久久久久久久| 992tv在线成人免费观看| 欧美色videos| 国产精品免费一区| 国产精品视频精品| 亚洲福利视频在线| 国产伦精品免费视频| 欧美色欧美亚洲高清在线视频| 2020欧美日韩在线视频| 日韩欧美aⅴ综合网站发布| 欧美午夜性色大片在线观看| 日韩理论片久久| 国产精品91在线观看| 日韩中文字幕在线播放| 国产精品久久av| 日韩电影第一页| 国产成人avxxxxx在线看| 日韩有码在线观看| 一道本无吗dⅴd在线播放一区| 日韩的一区二区| 久久久国产视频| 亚洲偷熟乱区亚洲香蕉av| 最近2019中文免费高清视频观看www99| 亚州成人av在线| 亚洲精品美女在线| 青青久久av北条麻妃黑人| 国产精品日韩欧美大师| 久久亚洲精品国产亚洲老地址| 国产精品视频99| 亚洲iv一区二区三区| 精品国产一区二区三区久久狼5月| 欧美日韩福利在线观看| 国产日韩欧美夫妻视频在线观看| 日韩在线视频观看正片免费网站| 欧美高清一级大片| 国产日韩欧美日韩大片| 日本国产欧美一区二区三区| 亚洲国产精久久久久久久| 国产在线精品自拍| 亚洲jizzjizz日本少妇| 97色在线播放视频| 欧美日韩中文字幕| 欧美丝袜第一区|