ORACLE 死锁解决办法
2013-02-19 13:38
357 查看
死锁的解决方法
一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可
能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。
1)查找死锁的进程:
sqlplus "/as sysdba" (sys/change_on_install)
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
2)kill掉这个死锁的进程:
alter system kill session ‘sid,serial#’; (其中sid=l.session_id)
3)如果还不能解决:
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;
其中sid用死锁的sid替换: exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程
4) 查询正在执行的死锁语句
select A.SQL_TEXT, B.USERNAME, C.OBJECT_ID, C.SESSION_ID,
B.SERIAL#, C.ORACLE_USERNAME,C.OS_USER_NAME,C.Process,
''''||C.Session_ID||','||B.SERIAL#||''''
from v$sql A, v$session B, v$locked_object C
where A.HASH_VALUE = B.SQL_HASH_VALUE and
B.SID = C.Session_ID
一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可
能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。
1)查找死锁的进程:
sqlplus "/as sysdba" (sys/change_on_install)
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;
2)kill掉这个死锁的进程:
alter system kill session ‘sid,serial#’; (其中sid=l.session_id)
3)如果还不能解决:
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;
其中sid用死锁的sid替换: exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个Oracle进程
4) 查询正在执行的死锁语句
select A.SQL_TEXT, B.USERNAME, C.OBJECT_ID, C.SESSION_ID,
B.SERIAL#, C.ORACLE_USERNAME,C.OS_USER_NAME,C.Process,
''''||C.Session_ID||','||B.SERIAL#||''''
from v$sql A, v$session B, v$locked_object C
where A.HASH_VALUE = B.SQL_HASH_VALUE and
B.SID = C.Session_ID
相关文章推荐
- oracle表死锁,解决办法
- Oracle死锁及简单解决办法
- Oracle死锁及解决办法
- oracle死锁解决办法
- ORACLE 死锁解决办法
- oracle中drop table 生成一个乱码表名的解决办法
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
- PLSQL连接错误:Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- Environment variable ORACLE_UNQNAME not defined解决办法~
- oracle dbtimezone与os时区不一致的解决办法
- Oracle 11g 10g 无法启动Em的解决办法
- Oracle 11G 出现EXP-00003: 未找到段 (0,0) 解决办法
- mac下如何解决无法连接windows虚拟机oracle的解决办法
- oracle提示TNS:无监听程序的解决办法
- Oracle自增ID的解决办法
- Oracle监听器启动失败的解决办法
- oracle em 按钮乱码解决办法
- Oracle 12c报错:ORA-01078和LRM-00109的解决办法
- 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
- Oracle sqlplus 客户端设置 故障解决办法