问题现象
在 OceanBase 数据库中,当通过 KILL 命令终止 Master Session(父 Session)时,其关联的子 Session(Child Session)未结束,导致 IO 消耗高。





问题原因
由于远程执行的 Session 未被 KILL 掉(该行为是符合预期的)。
适用版本
OceanBase 数据库 V4.2.x 版本。
解决方法
通过递归函数查询子 Session,含父 Session。
WITH RECURSIVE recursion AS ( -- 初始查询:定位 Master Session(替换 ID 为实际值) SELECT SVR_IP, SVR_PORT, SQL_PORT, ID, USER, HOST, DB, TENANT, COMMAND, TIME, TOTAL_TIME, STATE, INFO, PROXY_SESSID, MASTER_SESSID, USER_CLIENT_IP, USER_HOST, RETRY_CNT, RETRY_INFO, SQL_ID, TRANS_ID, THREAD_ID, SSL_CIPHER, TRACE_ID, TRANS_STATE, ACTION, MODULE, CLIENT_INFO, LEVEL, SAMPLE_PERCENTAGE, RECORD_POLICY, LB_VID, LB_VIP, LB_VPORT, IN_BYTES, OUT_BYTES, USER_CLIENT_PORT, PROXY_USER, SERVICE_NAME, CAST(total_cpu_time AS SIGNED) AS TOTAL_CPU_TIME, TOP_INFO, MEMORY_USAGE FROM oceanbase.GV$OB_PROCESSLIST WHERE ID = '3221889721' -- 替换为实际 Master Session ID UNION ALL -- 递归查询:查找所有子 Session SELECT op2.SVR_IP, op2.SVR_PORT, op2.SQL_PORT, op2.ID, op2.USER, op2.HOST, op2.DB, op2.TENANT, op2.COMMAND, op2.TIME, op2.TOTAL_TIME, op2.STATE, op2.INFO, op2.PROXY_SESSID, op2.MASTER_SESSID, op2.USER_CLIENT_IP, op2.USER_HOST, op2.RETRY_CNT, op2.RETRY_INFO, op2.SQL_ID, op2.TRANS_ID, op2.THREAD_ID, op2.SSL_CIPHER, op2.TRACE_ID, op2.TRANS_STATE, op2.ACTION, op2.MODULE, op2.CLIENT_INFO, op2.LEVEL, op2.SAMPLE_PERCENTAGE, op2.RECORD_POLICY, op2.LB_VID, op2.LB_VIP, op2.LB_VPORT, op2.IN_BYTES, op2.OUT_BYTES, op2.USER_CLIENT_PORT, op2.PROXY_USER, op2.SERVICE_NAME, CAST(op2.total_cpu_time AS SIGNED) AS TOTAL_CPU_TIME, op2.TOP_INFO, op2.MEMORY_USAGE FROM oceanbase.GV$OB_PROCESSLIST op2 INNER JOIN recursion ON op2.MASTER_SESSID = recursion.ID ) SELECT * FROM recursion;手动终止子 Session。
根据查询结果中的子 Session ID,执行 KILL 命令,示例如下。
kill 3221498138 -- 替换为实际子 Session ID