kill session无法释放资源

【 使用环境 】
测试环境
【 OB or 其他组件 】
OB 3-3-1
【 使用版本 】
oceanbase-4.2.5.2
【问题描述】
在做行锁测试,找到阻塞者的ID ,通过Kill id,session状态变为SESSION_KILLED,但是杀死的session,并没有结束和释放资源,如何查找原因。

obclient(SYS@obpaydb)[SYS]> kill 362145;
Query OK, 0 rows affected (0.012 sec)

obclient(root@sys)[oceanbase]> select id,SVR_IP,SVR_PORT,trans_id,COMMAND,STATE,INFO,host from gv$ob_processlist where TRANS_ID=‘228706450’;
±-------±-------------±---------±----------±--------±---------------±-----±------------------+
| id | SVR_IP | SVR_PORT | trans_id | COMMAND | STATE | INFO | host |
±-------±-------------±---------±----------±--------±---------------±-----±------------------+
| 362145 | 172.30.60.21 | 2882 | 228706450 | Sleep | SESSION_KILLED | NULL | 172.30.60.41:4256 |
±-------±-------------±---------±----------±--------±---------------±-----±------------------+
1 row in set (0.014 sec)

阻塞者
obclient(OBTEST@obpaydb)[OBTEST]> select userenv(‘sid’) from dual;
±---------------+
| USERENV(‘SID’) |
±---------------+
| 362145 |
±---------------+
1 row in set (0.001 sec)

obclient(OBTEST@obpaydb)[OBTEST]>
obclient(OBTEST@obpaydb)[OBTEST]>
obclient(OBTEST@obpaydb)[OBTEST]>
obclient(OBTEST@obpaydb)[OBTEST]> update test set name=‘jj’ where id=1;
Query OK, 1 row affected (0.013 sec)
Rows matched: 1 Changed: 1 Warnings: 0

obclient(OBTEST@obpaydb)[OBTEST]>

被阻塞者依旧hang在这里 没有获得行锁
obclient(OBTEST@obpaydb)[OBTEST]> select userenv(‘sid’) from dual;
±---------------+
| USERENV(‘SID’) |
±---------------+
| 367448 |
±---------------+
1 row in set (0.001 sec)

obclient(OBTEST@obpaydb)[OBTEST]>
obclient(OBTEST@obpaydb)[OBTEST]> update test set name=‘jj’ where id=1;

你直接使用kill -9 杀掉

sys租户获取对应的session,
需要直连对应proxy,进行kill seesion或者业务租户直连对应proxy,进行kill seesion

ob不是线程吗 和ORACLE一样客户端连接是进程? 如何找到客户端进程 然后用-9杀掉呢

我就是直连的172.30.60.21这个OBSERVER 进行kill的

你根据表查看一下这个信息
select
/*+QUERY_TIMEOUT(3600000000) read_consistency(weak) */
b.TRANS_ID,
case
WHEN b.TYPE = ‘TM’ THEN ‘表锁’
WHEN b.TYPE = ‘TX’ THEN ‘事务锁’
WHEN b.TYPE = ‘TR’ THEN ‘行锁’
ELSE NULL
END
AS lock_type,ID1,LMODE,
CASE
WHEN BLOCK = 0 THEN ‘该事务持有锁’
WHEN BLOCK = 1 THEN ‘该事务被阻塞’
ELSE NULL
END
as BLOCK,
a.SVR_IP,
ID,
user,
command,
time,
total_time,
STATE,
info,
retry_cnt,
retry_info,
thread_id,
trace_id
from
oceanbase.gv$ob_processlist a,
oceanbase.GV$OB_LOCKS b,
oceanbase.CDB_ob_table_locations c
where
a.trans_id = b.trans_id
and c.table_name = ‘test’;

不知道你在怎么做的行锁测试 能把步骤说一下么?

obclient(root@sys)[oceanbase]> select
→ b.TRANS_ID,
→ case
→ WHEN b.TYPE = ‘TM’ THEN ‘表锁’
→ WHEN b.TYPE = ‘TX’ THEN ‘事务锁’
→ WHEN b.TYPE = ‘TR’ THEN ‘行锁’
→ ELSE NULL
→ END
→ AS lock_type,
→ ID1,
→ LMODE,
→ CASE
→ WHEN BLOCK = 0 THEN ‘该事务持有锁’
→ WHEN BLOCK = 1 THEN ‘该事务被阻塞’
→ ELSE NULL
→ END
→ as BLOCK,
→ a.SVR_IP,
→ ID,
→ user,
→ command,
→ time,
→ total_time,
→ STATE,
→ info,
→ retry_cnt,
→ retry_info,
→ thread_id,
→ trace_id
→ from
→ gv$ob_processlist a,
→ GV$OB_LOCKS b,
→ CDB_ob_table_locations c
→ where
→ a.trans_id = b.trans_id
→ and c.table_name = ‘test’;
±----------±----------±----------±------±-------------------±-------------±-------±-------±--------±------------±------------±---------------±-------------------------------------±----------±-----------±----------±----------------------------------+
| TRANS_ID | lock_type | ID1 | LMODE | BLOCK | SVR_IP | ID | user | command | time | total_time | STATE | info | retry_cnt | retry_info | thread_id | trace_id |
±----------±----------±----------±------±-------------------±-------------±-------±-------±--------±------------±------------±---------------±-------------------------------------±----------±-----------±----------±----------------------------------+
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706451 | 事务锁 | 228706450 | NONE | 该事务被阻塞 | 172.30.60.21 | 367448 | OBTEST | Query | 8.065591 | 8080.615404 | ACTIVE | update test set name=‘jj’ where id=1 | 2418 | -6005 | 22862 | YB42AC1E3C15-000631D19ABA21F5-0-0 |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 事务锁 | 228706450 | X | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
| 228706450 | 表锁 | 228706450 | RX | 该事务持有锁 | 172.30.60.21 | 362145 | OBTEST | Sleep | 7788.825255 | 7788.825255 | SESSION_KILLED | NULL | 0 | 0 | 0 | NULL |
±----------±----------±----------±------±-------------------±-------------±-------±-------±--------±------------±------------±---------------±-------------------------------------±----------±-----------±----------±----------------------------------+
42 rows in set (0.302 sec)

你这个ob集群应该是企业版吧 不是社区版吧

我通过 select userenv(‘sid’) from dual; 命令在2个session执行,分别得到session 362145 和 session 367448 然后在这个个session 分别执行update test set name=‘jj’ where id=1; 语句,因为session 362145 先执行的,所以他阻塞了session 367448 通过自己写的脚本找到阻塞者362145 在IP 172.30.60.2上执行了kill 362145 ,现在的现象是session362145 状态为SESSION_KILLED 但是这个session 还在,并且没有释放行锁,导致session 367448 一直等待行锁,之前做测试也出现这个问题,我想知道怎么解决这种问题,ORACLE出现这种问题可以根据session id找到操作系统PID ,针对PID 进行kill -9 ,但是OB我不知道如何解决。

对 企业版 用企业版在做测试

不好意思 这里开源社区 只对开源版本服务
你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

好的

那抛开版本,遇到这种情况我怎么KILL这个进程呢

ob应该是事务的超时时间的 超过了事务的超时时间 ob也会把事务结束的

好吧 感谢