为了方便用户查看当前系统中锁的状态,DM 数据库专门提供了一个 V$LOCK 动态视图。 通过该视图,用户可以查看到系统当前所有锁的详细信息,如锁的内存地址、所属事务 ID、 锁类型、锁模式等。用户可以通过执行如下语句查看锁信息:
SELECT * FROM V$LOCK;
1 ADDR BIGINT 锁地址
2 TRX_ID BIGINT 所属事务 ID
3 LTYPE VARCHAR(10) 锁类型:TID 锁、对象锁
4 LMODE CHAR(2) 锁模式:S 锁、X 锁、IX 锁、IS 锁
5 BLOCKED INTEGER 是否阻塞
6 TABLE_ID INTEGER 对于对象锁,表示表对象或字典对象的 ID;对于 TID 锁,表示封锁 记录对应的表 ID。-1 表示事务启动封锁自身的 TID
7 ROW_IDX BIGINT TID 锁封锁记录行信息。-1 表示事务启动封锁自身的 TID
8 TID BIGINT TID 锁对象事务 ID
select * from V$SESSIONS
显示会话的具体信息,如执行的 sql 语句、主库名、当前会话状态、用户名等等
主要字段说明:
1 SESS_ID BIGINT 会话 ID
2 SESS_SEQ INTEGER 会话序列号,用来唯一标识会话
3 SQL_TEXT VARCHAR(1000) 取 sql 的头 1000 个字符
4 STATE VARCHAR(8) 会话状态。共 6 种状态:CREATE 创建、STARTUP 启动、IDLE 空闲、ACTIVE 活动、WAIT 等待、UNKNOWN 未知
5 TRX_ID BIGINT 事务 id
6 CREATE_TIME DATETIME 会话创建时间
select SESS_ID,SESS_SEQ,SQL_TEXT,STATE, CREATE_TIME from v$sessions where trx_id in (select trx_id from V$LOCK) and SQL_TEXT like '%update%';
SP_CLOSE_SESSION(会话 ID);