oracle怎么看是否鎖表 oracle鎖表、解鎖的語句?
oracle鎖表、解鎖的語句?一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟數(shù)據(jù)庫?,F(xiàn)在提供一種方法解決這種問題,那就是在ORAC
oracle鎖表、解鎖的語句?
一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟數(shù)據(jù)庫。現(xiàn)在提供一種方法解決這種問題,那就是在ORACLE中殺不掉的,在OS一級再殺。
1.下面的語句用來查詢哪些對象被鎖:selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id = o.object_idandl.session_id=s.sid
2.下面的語句用來殺死一個進(jìn)程:altersystemkillsession"24,111"(其中24,111分別是上面查詢出的sid,serial#)【注】以上兩步,可以通過Oracle的管理控制臺來執(zhí)行。
3.如果利用上面的命令殺死一個進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長時間沒有被釋放,那么可以在os一級再殺死相應(yīng)的進(jìn)程(線程),首先執(zhí)行下面的語句獲得進(jìn)程(線程)號:selectspid,osuser,s.programfromv$sessions,v$processpwheres.paddr=p.addrands.sid=24(24是上面的sid)4.在OS上殺死這個進(jìn)程(線程):1)在unix上,用root身份執(zhí)行命令:#kill-912345(即第3步查詢出的spid)2)在windows(unix也適用)用orakill殺死線程,orakill是oracle提供的一個可執(zhí)行命令,語法為:orakillsidthread其中:sid:表示要殺死的進(jìn)程屬于的實例名thread:是要殺掉的線程號,即第3步查詢出的spid。例:c:>orakillorcl12345
查看oracle是否鎖表之后。然后如果我沒有DBA權(quán)限,怎么殺掉進(jìn)程或者解鎖表?
第一種:SQL>selectsession_idfromv$locked_object49SQL>SELECTsid,serial#,usernameFROMv$sessionwheresid=4949554systemSQL>ALTERSYSTEMKILLSESSION"49,554"第二種:如果用的是客戶端登錄,直接關(guān)掉客戶端就可以了,因為你的客戶端也是個session普通用戶也可以,因為是你這個用戶開啟這個進(jìn)程,那么你也可以關(guān)閉這個進(jìn)程
查看oracle是否鎖表?
Oracle數(shù)據(jù)庫操作中,我們有時會用到鎖表查詢以及解鎖和kill進(jìn)程等操作,那么這些操作是怎么實現(xiàn)的呢?本文我們主要就介紹一下這部分內(nèi)容。(1)鎖表查詢的代碼有以下的形式:selectcount(*)fromv$locked_objectselect*fromv$locked_object(2)查看哪個表被鎖selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id(3)查看是哪個session引起的selectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$sessionbwherea.session_id=b.sidorderbyb.logon_time(4)殺掉對應(yīng)進(jìn)程執(zhí)行命令:altersystemkillsession"1025,41"其中1025為sid,41為serial#.