SQL> select session_id from v$locked_object;
SESSION_ID
----------
142
SQL> SELECT sid, serial#, username, osuser FROM v$session where sid = 142;
SID SERIAL# USERNAME OSUSER
---------- ---------- ------------------------------ ------------------------------
142 38 SCOTT LILWEN
SQL> ALTER SYSTEM KILL SESSION '142,38';
System altered
SQL> SELECT sid, serial#, username, osuser FROM v$session where sid in(select session_id from v$locked_object);
Oracle數(shù)據(jù)庫(kù)操作中,我們有時(shí)會(huì)用到鎖表查詢以及解鎖和kill進(jìn)程等操作,那么這些操作是怎么實(shí)現(xiàn)的呢?本文我們主要就介紹一下這部分內(nèi)容。
(1)鎖表查詢的代碼有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
(2)查看哪個(gè)表被鎖
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
(3)查看是哪個(gè)session引起的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
(4)殺掉對(duì)應(yīng)進(jìn)程
執(zhí)行命令:alter system kill session'1025,41';
其中1025為sid,41為serial#.
如果session經(jīng)常性的過(guò)期,不過(guò)幾分種就過(guò)期,是因?yàn)槟愕某坛渲姓加昧颂嗟馁Y源,超過(guò)了iis中應(yīng)用配置的資源占用大小,iis中asp_iis進(jìn)程進(jìn)行自動(dòng)重啟,所以就session過(guò)期了,建議檢查一下你的代碼,是否占用cpu在某些程序代碼里面很高,或者占用內(nèi)存相當(dāng)?shù)母?/p>