为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
今天在update一个快一个亿的数据库我用的DM管理工具操作的 跑了三个小时就有好奇停了打算创个索引结果报错锁超时 然后用了sp_cancel_session_operation加sp_close_session 命令都不生效
查询被锁的对象很多都是这个表的分区表但是是同一个sess_id
生产数据库又不能停汗流浃背了兄弟们
我发现只要执行upadte语句都会锁了并且删不掉
select s.sess_id,
s.sql_text,
s.state,
t.status trx_status,
t.ROLLBACK_FLAG,
s.run_status,
s.thrd_id,
s.trx_id
from v$sessions s join v$trx t on s.trx_id=t.id and s.state in ('ACTIVE','WAIT')
order by s.sess_id;
可以用这个sql查一下,应该是事务还在回滚,v$trx的ROLLBACK_FLAG里有显示,如果开启了sql日志,sql日志里也会有显示类似如下:
回滚是真的慢,很无奈啊,兄弟们。更新两千万的表一个字段,我们回滚了30多个小时。
更新或者删除大表数据,取消都要回滚很久,如果不能停库,只能等了,建议一次更新或者delete数据不要超过百万,分批执行