文章目录
- 前言
-
- 1. 原因分析
- 2、解决办法
-
- 2.1 检查哪个用户占用资源
- 2.2 利用查出来占用资源的 session_id,查出更加详细的信息
- 2.3 根据上面查出来的 sid,serial# 杀掉占用资源的session会话
- 备注 :
- 总结
前言
Oracle问题排查
1. 原因分析
出现这个问题的原因是正在执行的操作请求的资源正被其他事务锁定。即上述异常代表有事务没有提交,因为刚好有表正在被操作且被锁,因此资源还未释放,导致处理需要等待资源释放。
之后才搞清楚原来是有人对表执行了 delete 的 sql 语句,然后又突然给中断了,既没 commit 提交,也没 rollback 回滚,而导致的数据库锁表。即由于其他
2、解决办法
2.1 检查哪个用户占用资源
根据出问题的表来找到所需要的 session_id。
select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id;
2.2 利用查出来占用资源的 session_id,查出更加详细的信息
下面的 sid 就是上面查询出来的 session_id。这个查询将返回会话 ID、序列号、数据库用户名、操作系统用户名。
SELECT sid, serial#, username, oSUSEr, terminal,program ,action, prev_exec_start FROM v$session where sid = 143;
2.3 根据上面查出来的 sid,serial# 杀掉占用资源的session会话
alter system kill session '143,29637';
备注 :
登录
1. su - oracle 2. sqlplus / as sysdba
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注 、点赞 、收藏 、评论 支持一波,非常感谢大家!
如果有不对的地方请指正!!!
参考1