日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle用戶會話信息的查詢方法

Oracle用戶會話相信大家都比較了解,下面為您介紹的就是Oracle用戶會話信息的查詢方法,該方法供您參考,如果您感興趣的話,不妨一看。

目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計、象州網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

過V$SESSION視圖,可以查詢Oracle所有Oracle用戶會話信息:

 
 
 
  1. select sid,logon_time,username,machine from v$session; 

通過分組,統(tǒng)計每個不同的用戶或主機(jī)打開的Oracle用戶會話總數(shù):

 
 
 
  1. select username,machine,count(*) from v$session group by username,machine;

根據(jù)SID和SERIAL#可以終止用戶會話:

 
 
 
  1. ALTER SYSTEM KILL SESSION 'v_sid,v_serial#' immediate;

Oracle用戶會話的SID和SERIAL#可以通過V$SESSION視圖查到:

 
 
 
  1. SQL> select sid,serial#,username, machine,status from v$session where username like 'PCNSH%';
  2.      SID    SERIAL# USERNAME     MACHINE                      STATUS
  3. -------- ---------- --------------- ------------------------------- --------
  4.      366      14303 PCNSH197    client197.yourdomain.com     INACTIVE
  5.      369       1745 PCNSH003    server009                    INACTIVE
  6.      370      10165 PCNSH049    client049.yourdomain.com     INACTIVE
  7.      371      18999 PCNSH056    client056                    INACTIVE
  8.      372       6207 PCNSH056    client056                    INACTIVE
  9.      373       7688 PCNSH197    client197.yourdomain.com     INACTIVE
  10.      374      19246 PCNSH003    server009                    INACTIVE
  11.      377      17649 PCNSH003    server009                    INACTIVE

在Oracle中終止掉的會話只有在這個進(jìn)程再次嘗試連接Oracle時才會被pmon清除,在進(jìn)程再次嘗試連接之前,查詢V$SESSION視圖時還是可以看到該會話。

當(dāng)用戶會話無法響應(yīng)時,上面的方法可能無法終止用戶會話,只好直接殺死系統(tǒng)進(jìn)程(謹(jǐn)慎)。

用戶會話對應(yīng)的系統(tǒng)進(jìn)程可以通過V$SESSION和V$PROCESS兩個視圖來查詢,通過會話的SID和SERIAL#可以查詢到系統(tǒng)進(jìn)程號。

 
 
 
  1. SQL> select p.spid from v$session s, v$process p 
  2.   where p.addr=s.paddr and s.sid=518 and s.serial#=41831;
  3. SPID
  4. ------------
  5. 16782

然后在操作系統(tǒng)中殺死進(jìn)程:

kill -9 16782
某些軟件會在啟動時打開多個會話,當(dāng)軟件異常退出時,要批量的終止這些會話。存儲過程基于用戶名條件批量終止會話,創(chuàng)建存儲過程腳本kill_user.sql如下:

 
 
 
  1. create or replace procedure kill_user(v_name in varchar2)
  2. as
  3. message varchar2(50);
  4. cursor loguser is select sid,serial# from v$session where username=upper(v_name);
  5. v_info loguser%rowtype;
  6. sql_mgr varchar2(1000);
  7. i number default 0;
  8. begin
  9. open loguser;
  10. loop
  11. fetch loguser into v_info;
  12. exit when loguser%notfound;
  13. i :=1;
  14. sql_mgr :='alter system kill session '''||v_info.sid||','||v_info.serial#||''' immediate';
  15. execute immediate sql_mgr;
  16. dbms_output.put_line('All the sessions of '||v_name||' have been killed');
  17. end loop;
  18. close loguser;
  19. if i=0 then
  20. raise_application_error(-20004,'The user '||v_name||' is not login the database currently!');
  21. end if;
  22. exception
  23. when no_data_found then
  24. raise_application_error(-20004,'The user '||v_name||' is not login the database currently!');
  25. end;
  26. /

調(diào)用上面存儲過程,終止用戶所有進(jìn)程的方法如下:

 
 
 
  1. SQL> execute kill_user('user_name');

當(dāng)前文章:Oracle用戶會話信息的查詢方法
文章網(wǎng)址:http://www.dlmjj.cn/article/ccssjii.html