如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
解决Oracle死锁进程2009-12-2308:43先查看哪些表被锁住了:selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;杀进程中的会话:altersystemkillsession'sid,serial#';e.galtersystemkillsession'29,5497';如果有ora-00031错误,则在后面加immediate;altersystemkillsession'29,5497'immediate;如何杀死oracle死锁进程1.查哪个过程被锁:查V$DB_OBJECT_CACHE视图:SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER='过程的所属用户'ANDCLOCKS!='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.杀进程:(1)先杀ORACLE进程:ALTERSYSTEMKILLSESSION'查出的SID,查出的SERIAL#';(2)再杀操作系统进程:KILL-9刚才查出的SPID或ORAKILL刚才查出的SID刚才查出的SPID。Oracle的死锁查询数据库死锁:selectt2.username||''||t2.sid||''||t2.serial#||''||t2.logon_time||''||t3.sql_textfromv$locked_objectt1,v$sessiont2,v$sqltextt3wheret1.session_id=t2.sidandt2.sql_address=t3.addressorderbyt2.logon_time;查询出来的结果就是有死锁的session了,下面就是杀掉,拿到上面查询出来的SID和SERIAL#,填入到下面的语句中:altersystemkillsession'sid,serial#';一般情况可以解决数据库存在的死锁了,或通过sessionid查到对应的操作系统进程,在Unix中杀掉操作系统的进程。SELECTa.username,c.spidASos_process_id,c.pidASoracle_process_idFROMv$sessiona,v$processcWHEREc.addr=a.paddranda.sid=anda.serial#=;然后采用kill(unix)或orakill(windows)。在Unix中:ps-ef|grepos_process_idkill-9os_process_idps-ef|grepos_process_id经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。1)查找死锁的进程:sqlplus"/assysdba"(sys/change_on_install)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掉这个死锁的进程:altersystemkillsession‘sid,serial#