Oracle锁表处理

前言

Oracle 数据库 对数据经常增、删、改 等操作时,忘记提交,或代码执行进行死循环 导致数据库锁表

一、

可以查询用户的锁表情况
select * from dba_ddl_locks where OWNER = ‘用户名’

1、查看数据库锁,诊断锁的来源及类型:
select object_id,session_id,locked_mode from v$locked_object;

此时查询数据并不是锁表,是正在处理中的信息
在这里插入图片描述

或者用以下命令:
select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id
可以查询出用户名和锁住的表在这里插入图片描述

2、找出数据库的serial#,以备杀死:
select t2.username,t2.sid,t2.serial#,t2.logon_time from v l o c k e d o b j e c t t 1 , v locked_object t1,v lockedobjectt1,vsession t2 where t1.session_id=t2.sid order by t2.logon_time;
在这里插入图片描述

3、杀死该session:
sid 为 69 ,serial# 为45366   
alter system kill session ‘sid,serial#’


总结

并不是查询到数据,就代表锁表,可能是正在处理数据,最好是多查询几次,查看是否变化。
杀死后,表格数据回复为未提交前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值