oracle锁表查询及解决办法
摘要:ORACLE 如何查询被锁定表及如何解锁释放session。后台数据库操作某一个表时发现一直出于假死状态,可能是该表被某一用户锁定。
#ORACLE 如何查询被锁定表及如何解锁释放session
后台数据库操作某一个表时发现一直出于假死状态,可能是该表被某一用户锁定。
1.锁表,随便写一个update的语句.不要commit;如
select * from table_a for update;
2.解锁,执行commit,或者rollback.
代码如下:
1 | --锁表查询SQL |
1 | --找到被锁定的表,解锁 |
1 | --批量解锁SQL: |
3.如果利用上面的命令杀死一个进程后,进程状态被置为”killed”,但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
1 | select spid, osuser, s.program |
4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
1 | #kill -9 12345(即第3步查询出的spid) |
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
1 | orakill sid thread |
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:
1 | c:>orakill orcl 12345 |