达梦数据库 表被锁的处理办法

1、查看锁语句

SELECT * FROM V$LOCK WHERE BLOCKED = '1';

 

字段说明:

  【ADDR 】列 表示锁的内存地址;
  【TRX_ID 】列 表示锁所属的事务 ID;
  【LTYPE 】列 表示锁的类型,可能是 OBJECT(对象锁)或者 TID(TID 锁);
  【LMODE】列 表示锁的模式,可能的取值有 S(共享锁)、X(排他锁)、IS(意向共享锁)、IX(意向排他锁);
  【BLOCKED 】列 表示锁是否处于上锁等待状态,0 表示已上锁成功,1 表示处于上锁等待状态;
  【TABLE_ID 】列

    对于对象锁,表示 表对象或字典对象的 ID;

    对于 TID 锁,表示封锁记录对应的表 ID;

  【ROW_IDX】列 表示TID 锁封锁记录的行信息;

  【TID 】列为 TID 锁对象事务 ID

 

2、查看锁的会话内容

select * from v$sessions where trx_id in (select trx_id from V$LOCK WHERE BLOCKED = '1');

 

主要字段说明:

  【SESS_ID】:会话ID
  【SESS_SEQ】:会话序列号,用来唯一标识会话
  【SQL_TEXT】:取 sql 的头 1000 个字符
  【STATE】:会话状态。共 6 种状态:CREATE 创建、STARTUP 启动、IDLE 空闲、ACTIVE 活动、WAIT 等待、UNKNOWN 未知
  【TRX_ID】:事务 id
  【CREATE_TIME】:会话创建时间
  【ISO_LEVEL】:隔离级。0:读未提交;1:读提交;2:可重复读;3:串行化

 

3、根据【2】中的会话id【SESS_ID】释放锁

-- 停止一个活动的会话
sp_close_session(SESSION_ID) 

 

posted @ 2023-07-03 11:30  编程小白1024  阅读(2355)  评论(0编辑  收藏  举报