您好,登錄后才能下訂單哦!
本篇文章為大家展示了oracle什么時候才回收v$session中status='KILLED'的進(jìn)程,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
oracle 什么時候才回收v$session 中status='KILLED'的進(jìn)程,有些進(jìn)程被殺掉之后一直沒有被回收
session需要釋放它所使用的資源,包括鎖,回滾段等資源;如果session已經(jīng)運行了很長時間,kill session 可能是一個非常消耗時間的過程
察看session目前使用的回滾段塊的數(shù)目信息
SELECT USED_UBLK FROM V$TRANSACTIOn a ,v$session b where a.addr=b.taddr;
你可以看看要回滾的數(shù)量
1.判斷是否在回滾
select * from V$TRANSACTIOn where bitand(flag,power(2,7))>0
flag字段值可以標(biāo)識事務(wù)類型
select to_char( 7811, '0000000X' ), to_char( 7683, '0000000X') from dual;
TO_CHAR(7 TO_CHAR(7
--------- ---------
00001E83 00001E03
^ ^
0 indicates "normal user transaction"
8 indicates "rollback,most likely - means no more changes and you cannot commit"
2.回滾量:UBABLK字段
3.查看回滾時間
col td format a40
col es format 999,999
col totalwork format 999,999
col units format a10
SELECT decode(target_desc,NULL,decode(target,NULL,opname, concat(opname, concat (' - ',target))),decode(target,NULL,concat(opname, concat (' : ',target_desc)),concat(opname, concat (' : ',concat(target_desc,concat (' - ',target)))))) td,sofar,totalwork,units,start_time,TO_CHAR(elapsed_seconds,'99999990.00'), decode(sofar, 0, 0, round(elapsed_seconds*(totalwork-sofar)/sofar)) 剩下的時間
FROM v$session_longops
WHERE sid = &v_sid
AND serial# =&v_serial#
and sofar< totalWork
D SOFAR TOTALWORK UNITS START_TIME TO_CHAR(ELAPSED_SECONDS,'99999 剩下的時間
------------------------------------ ----- --------- -------- ----------- ------------------------------ ----------
Table Scan - SINO.ACC_POENTRYD 16099 16099 Blocks 2005-4-15 1 8.00 0查看剩下的時間
4.你使用了alter session kill一個死進(jìn)程,可能當(dāng)時只是把session標(biāo)識了killed,而v$process還存在,你可以用下面方法解決
UNIX平臺
SQL> SELECT spid
FROM v$process
WHERE NOT EXISTS ( SELECT 1
FROM v$session
WHERE paddr = addr);
% kill
WINDOWS:
select p.spid "OS Thread", b.name "Name-User", s.osuser,
s.program
from v$process p, v$session s, v$bgprocess b
where p.addr = s.paddr
and p.addr = b.paddr
UNION ALL
select p.spid "OS Thread", s.username "Name-User",
s.osuser, s.program
from v$process p, v$session s
where p.addr = s.paddr
and s.username is not null; 使用orakill如
SQL> SELECT spid, osuser, s.program,sid
FROM v$process p, v$session s
WHERE p.addr=s.paddr;
SPID OSUSER PROGRAM SID
------------------------ -------------------- --------------- ----------
6484 lifeng.fang sqlplus.exe 11
SQL> host orakill charset 6484;
Kill of thread id 6484 in instance charset successfully signalled.
5.你可以在sqlnet.ora加dcd
上述內(nèi)容就是oracle什么時候才回收v$session中status='KILLED'的進(jìn)程,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。