解除表锁定的——sql语句方案

探讨了在使用PLSQL执行SQL删除操作时遇到未响应的情况,解释了问题可能源于表已被锁定,提供了检查和解决方法。通过跟踪代码执行过程,发现事务级别的操作导致表锁定,进而无法执行删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你曾遇到过 delete from A 没反应吗?明明感觉sql语句写对了,为啥删除不了呢?是程序代码问题?还是sql问题?

然后把sql语句搬到客户端中,比如PLSQL中,咋也没有反应?

若PLSQL反应好点,会在执行过程中,有个Excuting。。。。。

若PLSQL反应不好点,就明明执行了,就是没反应【比如我的PLSQL就是不给点提示】

若遇到以上情况,前提sql语句正确 ,但是始终不起作用,初步确定此表已被锁。

若遇到以下情况,前提程序代码正确,但是始终无反馈,初步确定此标已被锁。

使用Ajax调用,比如删除时,一直返回失败,并且返回的state是0.

此时跟踪代码,你会发现 执行到后台的jdbctemplate的batchupdate时,就不动了,然后持续N久,前台弹框包括失败,打印结果状态为0

反复跟踪,都是如此。。。。

查看到底是不是表被锁住的问题:

select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid ;

若有记录,则是;无记录则不是;

若有记录,则使用以下sql kill

alter system kill session '5434,19740'

第一个参数:sid,第二参数:serial

当你kill完毕后,发现刚才跟踪代码的代码,无论曾经跟踪多少次,竟然都通通执行了一遍。前台返回理所当然了。

出现锁住的现象的主要原因是:

当你执行事务级别的,比如insert、update、delete时,没有真正的同步到数据库中。

比如你使用plsql时,delete时,直接F8,而没有F10(具体按钮不画了。。。)

其实即使你的表被锁住,select也是照常执行的,因为select不是事务范围,比如咱们写代码时,select一般不开启事务的。

知道了原因,又知道了方案。O(∩_∩)O哈哈~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值