为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:
【CPU】:
【问题描述】*:数据库时不时一直出现死锁
select * from v$trxwait;--查一下是不是有未提交的操作。
这种情况一般是业务逻辑这块的问题,例如有两个事务1,事务2;事务1在对数据进行更新操作没有操作完成或者操作完成后没有提交,事务2在事务1操作期间对数据也进行更新操作,这种情况事务2会等待事务1完成后才能执行。排查思路可以在报错时,在数据库中查看执行的连接事务,找到正在执行的事务1,最后进行业务逻辑调整,拉长两个操作之间的执行时长,避免因事务1没有执行完成导致影响事务2.
select a.*,b.NAME,c.SESS_ID from v$lock a
left join sysobjects b on b.ID=a.TABLE_ID
left join v$sessions c on a.TRX_ID=c.TRX_ID where BLOCKED = '1'; sp_close_session(sess_id)试试,这个是业务逻辑上存在问题,上一个修改数据没有提交其他的又进行了修改