错误描述:
达梦数据库修改表失败 错误号: -6407 错误消息: 锁超时
解决方法:
1.查询
select * from v$lock(查询数据库表的锁的情况)
select * from sysobjects(查询对象信息)
select * from v$sessions(查询会话信息)
- 将以上三条查询语句组合,查出哪张表上的某种锁是由哪个会话里的操作加上的(如下图,name字段是对应的表名)
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条件,查询与具体某张表相关的session_id有多少,如下图
2.解锁
2.1 如果sess_id不多,可以通过执行以下sql语句解除表锁**
sp_close_session(sess_id)
2.2 如果相关sess_id比较多(注意sql_close_session只能接收一个参数)**
a. 需要先对这些sess_id进行处理,执行下面sql语句先把这些相关sess_id查询出来并把结果整到一个word文档中,如下图
select 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 b.name='表名'
b.对数据进行查找替换,替换完后把第一条和最后一条数据再进行下手动处理
c.将处理好的语句直接粘贴到数据库中进行执行即可批量解除表锁