一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間不釋放,有時(shí)實(shí)在沒(méi)辦法,只好重啟數(shù)據(jù)庫(kù)。現(xiàn)在提供一種方法解決這種問(wèn)題,那就是在ORACLE中殺不掉的,在OS一級(jí)再殺。
1.下面的語(yǔ)句用來(lái)查詢哪些對(duì)象被鎖:
select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid;
2.下面的語(yǔ)句用來(lái)殺死一個(gè)進(jìn)程:alter system kill session '24,111'; (其中24,111分別是上面查詢出的sid,serial#)
【注】以上兩步,可以通過(guò)Oracle的管理控制臺(tái)來(lái)執(zhí)行。
3.如果利用上面的命令殺死一個(gè)進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在os一級(jí)再殺死相應(yīng)的進(jìn)程(線程),首先執(zhí)行下面的語(yǔ)句獲得進(jìn)程(線程)號(hào):select spid, osuser, s.PRogram from v$session s,v$process pwhere s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上殺死這個(gè)進(jìn)程(線程):1)在unix上,用root身份執(zhí)行命令: #kill -9 12345(即第3步查詢出的spid)2)在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:orakill sid thread其中:sid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名thread:是要?dú)⒌舻木€程號(hào),即第3步查詢出的spid。例:c:>orakill orcl 12345
ORA-00031: session marked for kill
Cause: The session specified in an ALTER SYSTEM KILL SESSION command cannot be killed immediately (because it is rolling back or blocked on a network Operation), but it has been marked for kill. This means it will be killed as soon as possible after its current uninterruptible operation is done.
Action: No action is required for the session to be killed, but further executions of the ALTER SYSTEM KILL SESSION command on this session may cause the session to be killed sooner.
kill -9 12345
新聞熱點(diǎn)
疑難解答
圖片精選