方法/步驟
成都創(chuàng)新互聯(lián)公司專注于敦煌企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。敦煌網(wǎng)站建設(shè)公司,為敦煌等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1.查詢哪些對象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.殺死進(jìn)程:
alter system kill session '137,233'; (其中137,223分別是上面查詢出的sid,serial#)
PS.以上兩步,可通過Oracle的管理控制臺來執(zhí)行。
如果利用上面的方法殺死進(jìn)程后,進(jìn)程狀態(tài)雖被置為"killed",但是鎖定的資源很長時間沒有被釋放,那么可以在OS一級再殺死相應(yīng)的進(jìn)程(線程)
1.首先獲得進(jìn)程(線程)號:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=137 (137是上面的sid)
2.在OS上殺死這個進(jìn)程(線程):
1)在unix上,用root身份執(zhí)行命令:
#kill -9 12345(即上面查詢出的spid)
2)在windows(unix也適用)用orakill殺死線程,例:c:orakill orcl 12345
orakill是oracle提供的一個可執(zhí)行命令,語法為:orakill sid thread
其中:
sid:表示要殺死的進(jìn)程屬于的實例名
thread:是要殺掉的線程號,即上面查詢出的spid。
1.查哪個過程被鎖
查V$DB_OBJECT_CACHE視圖:
SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER='過程的所屬用戶'ANDLOCKS!='0';
2. 查是哪一個SID,通過SID可知道是哪個SESSION.
查V$Access視圖:
SELECT*FROMV$ACCESSWHEREOWNER='過程的所屬用戶'ANDNAME='剛才查到的過程名';
3. 查出SID和SERIAL#
查V$SESSION視圖:
SELECTSID,SERIAL#,PADDRFROMV$SESSIONWHERESID='剛才查到的SID'
查V$PROCESS視圖:
SELECTSPIDFROMV$PROCESSWHEREADDR='剛才查到的PADDR';
4. 殺進(jìn)程(1).先殺ORACLE進(jìn)程:
ALTERSYSTEMKILLSESSION'查出的SID,查出的SERIAL#';
(2).再殺操作系統(tǒng)進(jìn)程:
KILL-9剛才查出的SPID或ORAKILL剛才查出的SID剛才查出的SPID方法二:
經(jīng)常在oracle的使用過程中碰到這個問題,所以也總結(jié)了一點解決方法:)
1)查找死鎖的進(jìn)程:
sqlplus"/assysdba"
SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESSFROMV$LOCKED_OBJECTl,V$SESSIONSWHEREl.SESSION_ID=S.SID;
2)kill掉這個死鎖的進(jìn)程:
altersystemkillsession‘sid,serial#’;(其中sid=l.session_id)
3)假如還不能解決,
selectpro.spidfromv$sessionses,v$processprowhereses.sid=XXandses.paddr=pro.addr;
其中sid用死鎖的sid替換。
查看鎖表進(jìn)程SQL語句:
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
殺掉鎖表進(jìn)程:
alter system kill session 'SID,serial#';
1.第一步:使用Linux的kill命令殺死所有與oracle有關(guān)的進(jìn)程。 1)查詢到與ORACLE_SID相關(guān)的oracle進(jìn)程 $ ps -ef |grep $ORACLE_SID oracle 7776 1 0 22:51 ? 00:00:00 ora_pmon_ora10g oracle 7778 1 0 22:51 ? 00:00:00 ora_psp0_ora10g oracle...