首批通过分布式安全可靠测评,为关键业务系统打造
客户端连接
更新时间:2026-04-14 17:41:09
本文介绍客户端连接(Client Session,即 Client 和 ODP 间的连接)的一些常用操作。
前提条件
您需通过 ODP 连接 OceanBase 数据库。详细的操作指引请参见 通过 OBClient 连接 OceanBase 租户(MySQL 模式) 和 通过 OBClient 连接 OceanBase 租户(Oracle 模式)。
查看客户端连接
sys 租户通过 SHOW PROXYSESSION 语句可以查看当前 ODP 上所有租户连接的全部客户端连接的内部状态;用户租户通过 SHOW PROXYSESSION 语句可以查看 ODP 上当前租户连接的全部客户端连接的内部状态。此处以 sys 租户为例进行操作,示例如下。
obclient> show proxysession;
+---------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+--------+--------+-----------+
| proxy_sessid | Id | Cluster | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid | using_ssl |
+---------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+--------+--------+-----------+
| 7230691421644980673 | 88 | ob1.cc | sys | root | 127.0.0.1:49999 | NULL | 0 | 1 | MCS_ACTIVE_READER | 120685 | 120685 | 0 |
+---------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+--------+--------+-----------+
1 row in set
各字段含义如下表所示:
| 字段 | 字段 |
|---|---|
| proxy_sessid | OceanBase 数据库每个客户端与 ODP 的会话 ID |
| Id | ODP 内标记每个 Client Session 的 ID 号,即下文的 cs_id |
| Cluster | 连接所属的 OceanBase 集群名 |
| Tenant | 连接 OceanBase 集群所使用的租户名 |
| User | 连接 OceanBase 集群所使用的用户名 |
| Host | 客户端 IP 地址及其端口号 |
| db | 执行命令时所处的数据库 |
| trans_count | 客户端会话已完成的事务数量 |
| svr_session_count | ODP 与 OceanBase 数据库之间维持的会话总数量 |
| state | 客户端会话状态,存在如下几个状态:
|
| tid | 线程 ID |
| pid | 进程 ID |
| using_ssl | 客户端会话是否使用 SSL 协议传输 |
查看客户端连接详细信息
sys 租户和用户租户可通过 SHOW PROXYSESSION ATTRIBUTE 语句查看指定 Client Session 的详细内部状态,包括该 Client Session 上涉及的相关 Server Session。SQL 语句如下:
SHOW PROXYSESSION ATTRIBUTE [id [like 'xxx']]
参数说明:
不指定
id时,显示当前 Session 的详细状态(ODP 1.1.0 版本起开始支持),支持模糊查询当前 Session 指定属性名称的 value(ODP 1.1.2 版本起开始支持)。指定
id时, 支持模糊查询指定属性名称的 value(ODP 1.1.0 版本起开始支持)。id既可以是cs_id,也可以是connection_id,显示结果相同。cs_id为 ODP 内部标记的每个 Client 的id号,connection_id为整个 OceanBase 数据库标记的每个 Client 的id号。MySQL 模式下的connection_id通过SELECT CONNECTION_ID();语句获取,Oracle 模式下的connection_id通过SHOW FULL PROCESSLIST;语句获取。like 模糊匹配,支持
%和_。
示例如下:
obclient> SHOW PROXYSESSION;
+--------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+---------+---------+
| proxy_sessid | Id | Cluster | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid |
+--------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+---------+---------+
| 756006681247547396 | 2 | ob1.cc | sys | root | 127.0.0.1:22540 | NULL | 0 | 1 | MCS_ACTIVE_READER | 2230520 | 2230520 |
+--------------------+------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+---------+---------+
1 row in set
obclient> SHOW PROXYSESSION ATTRIBUTE;
+----------------------------------+----------------------+----------------+
| attribute_name | value | info |
+----------------------------------+----------------------+----------------+
| proxy_sessid | 756006681247547396 | cs common |
| cs_id | 2 | cs common |
| cluster | ob1.cc | cs common |
| tenant | sys | cs common |
| user | root | cs common |
| host_ip | 127.0.0.1 | cs common |
| host_port | 22540 | cs common |
| db | NULL | cs common |
| total_trans_cnt | 0 | cs common |
| svr_session_cnt | 1 | cs common |
| active | true | cs common |
| read_state | MCS_ACTIVE_READER | cs common |
| tid | 2230520 | cs common |
| pid | 2230520 | cs common |
| idc_name | | cs common |
| modified_time | 1469435190244371115 | cs stat |
| reported_time | 1469435190244371115 | cs stat |
| hot_sys_var_version | 0 | cs var version |
| sys_var_version | 0 | cs var version |
| user_var_version | 0 | cs var version |
| last_insert_id_version | 0 | cs var version |
| db_name_version | 0 | cs var version |
| server_ip | xx.xx.xx.xx | last used ss |
| server_port | 13203 | last used ss |
| server_sessid | 2147549201 | last used ss |
| ss_id | 4 | last used ss |
| state | MSS_KA_CLIENT_SLAVE | last used ss |
| transact_count | 2 | last used ss |
| server_trans_stat | 0 | last used ss |
| hot_sys_var_version | 0 | last used ss |
| sys_var_version | 0 | last used ss |
| user_var_version | 0 | last used ss |
| last_insert_id_version | 0 | last used ss |
| db_name_version | 0 | last used ss |
| is_checksum_supported | 1 | last used ss |
| is_safe_read_weak_supported | 0 | last used ss |
| is_checksum_switch_supported | 1 | last used ss |
| checksum_switch | 1 | last used ss |
| enable_extra_ok_packet_for_stats | 1 | last used ss |
+----------------------------------+----------------------+----------------+
39 rows in set
obclient> SHOW PROXYSESSION ATTRIBUTE 2 like '%id%';
+------------------------+--------------------+----------------+
| attribute_name | value | info |
+------------------------+--------------------+----------------+
| proxy_sessid | 756006681247547396 | cs common |
| cs_id | 2 | cs common |
| tid | 2230520 | cs common |
| pid | 2230520 | cs common |
| last_insert_id_version | 0 | cs var version |
| server_sessid | 2147549201 | last used ss |
| ss_id | 4 | last used ss |
| last_insert_id_version | 0 | last used ss |
+------------------------+--------------------+----------------+
8 rows in set
obclient> SHOW PROXYSESSION ATTRIBUTE 2147549201 like '%id%';
+------------------------+--------------------+----------------+
| attribute_name | value | info |
+------------------------+--------------------+----------------+
| proxy_sessid | 756006681247547396 | cs common |
| cs_id | 2 | cs common |
| tid | 2230520 | cs common |
| pid | 2230520 | cs common |
| last_insert_id_version | 0 | cs var version |
| server_sessid | 2147549201 | last used ss |
| ss_id | 4 | last used ss |
| last_insert_id_version | 0 | last used ss |
+------------------------+--------------------+----------------+
8 rows in set
各字段含义如下表所示:
| 字段 | 说明 |
|---|---|
| attribute_name | 属性名称 |
| value | 属性值 |
| info | 基本信息 |
常见的属性及其说明如下表所示:
| 字段 | 字段 |
|---|---|
| proxy_sessid | OceanBase 数据库每个客户端与 ODP 的会话 ID |
| cs_id | ODP 内标记每个 Client Session 的 ID 号,即上文的 Id |
| cluster | 连接所属的 OceanBase 集群名 |
| tenant | 连接 OceanBase 集群所使用的租户名 |
| user | 连接 OceanBase 集群所使用的用户名 |
| host_ip | 客户端 IP |
| host_port | 客户端端口号 |
| db | 执行命令时所处的数据库 |
| total_trans_cnt | ODP 传输事务的总数量 |
| svr_session_cnt | ODP 与 OceanBase 数据库之间维持的会话总数量 |
| active | 是否存活 |
| read_state | 客户端会话的状态,存在如下几个状态:
|
| tid | 线程 ID |
| pid | 进程 ID |
| modified_time | 历史修改时间 |
| reported_time | 历史报告时间 |
| hot_sys_var_version | 热更新的系统变量版本 |
| sys_var_version | 系统变量版本 |
| user_var_version | 用户变量版本 |
| last_insert_id_version | 最后插入 ID 版本 |
| db_name_version | 数据库名的版本 |
| server_ip | OBServer 节点的 IP 地址 |
| server_port | OBServer 节点的端口号 |
| server_sessid | OBServer 节点的会话 ID 号 |
| ss_id | ODP 标记 Server Session 的 ID 号 |
查看客户端会话变量
Session 变量分为系统变量和用户变量。通过 SHOW PROXYSESSION VARIABLES [all] id [like 'xx'] 语句可以查看指定 Client Session 的 Session 变量。
不带
all参数时,展示指定 Client Session 的本地 Session 变量(包括:修改过的系统变量和用户变量)。带
all参数时,展示指定 Client Session 的全部 Session 变量(包括:所有系统变量和用户变量)。
参数说明:
id既可以是cs_id,也可以是connection_id,显示结果相同。cs_id为 ODP 内部标记的每个 client 的id号,connection_id为整个 OceanBase 数据库标记的每个 client 的id号。MySQL 模式下的connection_id通过SELECT CONNECTION_ID();语句获取,Oracle 模式下的connection_id通过SHOW FULL PROCESSLIST;语句获取。like 模糊匹配,支持
%和_。
示例如下。
通过
cs_id查询 Session 变量。obclient> SHOW PROXYSESSION VARIABLES 3; +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ | variable_name | value | info | modified_type | sys_variable_flag | +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ | ob_proxy_global_variables_version | 1461742173142100 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_proxy_user_privilege | 65534 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_capability_flag | 654159 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_enable_transmission_checksum | 1 | changed sys var | cold modified vars | && global_scope && session_scope | | _min_cluster_version | '4.1.0.1' | user var | cold modified vars | | +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ 5 rows in set通过
connection_id查询 Session 变量。obclient> SHOW PROXYSESSION VARIABLES 2147549231; +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ | variable_name | value | info | modified_type | sys_variable_flag | +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ | ob_proxy_global_variables_version | 1461742173142100 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_proxy_user_privilege | 65534 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_capability_flag | 654159 | changed sys var | cold modified vars | && invisible && session_scope && readonly | | ob_enable_transmission_checksum | 1 | changed sys var | cold modified vars | && global_scope && session_scope | | _min_cluster_version | '4.1.0.1' | user var | cold modified vars | | +-----------------------------------+------------------+-----------------+--------------------+--------------------------------------------+ 5 rows in set带
all参数查询 Session 变量。obclient> SHOW PROXYSESSION VARIABLES all 3; +-----------------------------------+-----------------------+---------+------------------------------+-----------------------------------------------+ | variable_name | value | info | modified_type | sys_variable_flag | +-----------------------------------+-----------------------+---------+------------------------------+-----------------------------------------------+ | ob_proxy_global_variables_version | 1461742173142100 | sys var | cold modified vars | && invisible && session_scope && readonly | | ob_proxy_user_privilege | 65534 | sys var | cold modified vars | && invisible && session_scope && readonly | | ob_capability_flag | 654159 | sys var | cold modified vars | && invisible && session_scope && readonly | | ob_enable_transmission_checksum | 1 | sys var | cold modified vars | && global_scope && session_scope | | auto_increment_increment | 1 | sys var | cold modified vars | && global_scope && session_scope | | auto_increment_offset | 1 | sys var | cold modified vars | && global_scope && session_scope | ······ # 省略后续输出
各字段含义如下表所示:
| 字段 | 说明 |
|---|---|
| variable_name | 变量名 |
| value | 变量值 |
| info | 变量类型(用户变量或系统变量) |
| modified_type | 变量类型(根据修改频率区分) |
| sys_variable_flag | 系统变量范围 |
有关系统变量的详细介绍请参见 OceanBase 数据库文档 系统变量 章节。有关用户变量设置请参见 SET。
查看客户端连接内部统计项
sys 租户和用户租户可通过 SHOW PROXYSESSION STAT 语句查看 ODP 指定客户端连接的内部统计项(包括:SQL 请求响应数量、SQL 请求响应大小等)。SQL 语句如下:
SHOW PROXYSESSION STAT id LIKE 'xx';
参数说明:
id既可以是cs_id,也可以是connection_id,显示结果相同。cs_id为 ODP 内部标记的每个 Client 的id号,connection_id为整个 OceanBase 数据库标记的每个 Client 的id号。MySQL 模式下的connection_id通过SELECT CONNECTION_ID();语句获取,Oracle 模式下的connection_id通过SHOW FULL PROCESSLIST;语句获取。like 模糊匹配,支持
%和_。
此处以使用 cs_id 查看为例,操作如下:
获取
cs_idobclient> SHOW PROXYSESSION;输出如下,返回结果中的
Id即为cs_id。+----------------------+-------+----------+----------+------+----------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+ | proxy_sessid | Id | Cluster | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid | using_ssl | +----------------------+-------+----------+----------+------+----------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+ | 12402504630519660562 | 11 | test420 | mysql001 | root | 100.xx.xx.xx:48056 | NULL | 0 | 1 | MCS_ACTIVE_READER | 76286 | 76286 | 0 | +----------------------+-------+----------+----------+------+----------------------+------+-------------+-------------------+-------------------+-------+-------+-----------+ 1 row in set查看内部统计项
obclient> SHOW PROXYSESSION STAT 11 LIKE '%time%';输出如下:
+-------------------------------------------+-------+ | stat_name | value | +-------------------------------------------+-------+ | total_transactions_time | 0 | | total_user_transactions_time | 0 | | total_client_request_read_time | 0 | | total_client_response_write_time | 0 | | total_client_request_analyze_time | 0 | | total_client_transaction_idle_time | 0 | | total_ok_packet_trim_time | 0 | | total_server_process_request_time | 0 | | total_server_response_read_time | 0 | | total_server_response_analyze_time | 0 | | total_send_saved_login_time | 0 | | total_send_all_session_vars_time | 0 | | total_send_use_database_time | 0 | | total_send_changed_session_vars_time | 0 | | total_send_changed_session_user_vars_time | 0 | | total_send_last_insert_id_time | 0 | | total_send_start_trans_time | 0 | | total_pl_lookup_time | 0 | | total_congestion_control_time | 0 | | total_server_connect_time | 0 | +-------------------------------------------+-------+ 20 rows in set
各字段含义如下表所示:
| 字段 | 说明 |
|---|---|
| stat_name | 内部统计项的名称 |
| value | 内部统计项的取值 |
内部统计项及其说明如下:
| 字段 | 说明 |
|---|---|
| total_transaction_count | 事务总数 |
| total_user_transaction_count | ODP 用户事务执行的数量 |
| total_query_count | 用户执行请求的数量 |
| total_client_request_reread_count | ODP 读取用户请求的次数 |
| total_server_response_reread_count | ODP 读取 OBServer 节点返回数据的次数 |
| client_request_total_size | 客户端请求数据量总大小 |
| client_response_total_size | 客户端返回数据量总大小 |
| server_request_total_size | 发送给 OBServer 节点的请求数据量总大小 |
| server_response_total_size | OBServer 节点返回的数据量总大小 |
| total_transactions_time | 事务执行总耗时 |
| total_user_transactions_time | 用户执行事务的总时间 |
| total_client_request_read_time | 客户端请求读取总时间 |
| total_client_response_write_time | 返回客户端数据发送总时间 |
| total_client_request_analyze_time | 解析客户端报文的总时间 |
| total_client_transaction_idle_time | 用户事务执行中空闲的总时间 |
| total_server_process_request_time | 数据库处理请求总时间 |
| total_server_response_read_time | 读取 OBServer 节点返回数据的总时间 |
| total_server_response_analyze_time | ODP 解析该用户 Server 返回数据的总时间 |
| total_send_saved_login_time | 发送给 OBServer 节点 LOGIN 报文的总时间 |
| total_send_all_session_vars_time | 发送给 OBServer 节点 Session 变量同步总时间 |
| total_send_use_database_time | 发送给 OBServer 节点 use database 命令总时间 |
| total_send_changed_session_vars_time | 发送给 OBServer 节点 Session 变量修改总时间 |
| total_send_last_insert_id_time | 发送给 OBServer 节点 last_insert_id 同步总时间 |
| total_send_start_trans_time | 发送给 OBServer 节点开启事务同步总时间 |
| total_pl_lookup_time | 路由总时间 |
| total_server_connect_time | ODP 和 OBServer 节点建立连接的总时间 |
| client_requests | 总请求数 |
| client_large_requests | 大请求数 |
| client_internal_requests | 内部请求数 |
| local_session_state_requests | ODP 内部请求的数量 |
| client_missing_pk_requests | 统计本次请求不需要做路由处理,需要使用上个请求的连接的请求数量 |
| client_completed_requests | 已完成的请求数 |
| client_connection_abort_count | 连接及中止统计 |
| client_select_requests | SELECT 请求总数 |
| client_insert_requests | INSERT 请求总数 |
| client_update_requests | UPDATE 请求总数 |
| client_delete_requests | DELETE 请求总数 |
| client_other_requests | 其它请求总数 |
| request_size_100_count | 请求大小在 [0,100) 之间的数量 |
| request_size_1K_count | 请求大小在 [100,1K) 之间的数量 |
| request_size_3K_count | 请求大小在 [1K,3K) 之间的数量 |
| request_size_5K_count | 请求大小在 [3K,5K) 之间的数量 |
| request_size_10K_count | 请求大小在 [5K,10K) 之间的数量 |
| request_size_1M_count | 请求大小在 [10K,1M) 之间的数量 |
| request_size_inf_count | 请求大小在 [1M,+∞) 之间的数量 |
| response_size_100_count | 响应大小在 [0,100) 之间的数量 |
| response_size_1K_count | 响应大小在 [100,1K) 之间的数量 |
| response_size_3K_count | 响应大小在 [1K,3K) 之间的数量 |
| response_size_5K_count | 响应大小在 [3K,5K) 之间的数量 |
| response_size_10K_count | 响应大小在 [5K,10K) 之间的数量 |
| response_size_1M_count | 响应大小在 [10K,1M) 之间的数量 |
| response_size_inf_count | 响应大小在 [1M,+∞) 之间的数量 |
| client_speed_bytes_per_sec_100 | 每秒的请求速度在 [0,100) 之间的数量 |
| client_speed_bytes_per_sec_1K | 每秒的请求速度在 [100,1K) 之间的数量 |
| client_speed_bytes_per_sec_10K | 每秒的请求速度在 [1K,10K) 之间的数量 |
| client_speed_bytes_per_sec_100K | 每秒的请求速度在 [10K,100K) 之间的数量 |
| client_speed_bytes_per_sec_1M | 每秒的请求速度在 [100K,1M) 之间的数量 |
| client_speed_bytes_per_sec_10M | 每秒的请求速度在 [1M,10M) 之间的数量 |
| client_speed_bytes_per_sec_100M | 每秒的请求速度在 [10 M,+∞) 之间的数量 |
| server_speed_bytes_per_sec_100 | 每秒的响应速度在 [0,100) 之间的数量 |
| server_speed_bytes_per_sec_1K | 每秒的响应速度在 [100,1K) 之间的数量 |
| server_speed_bytes_per_sec_10K | 每秒的响应速度在 [1K,10K) 之间的数量 |
| server_speed_bytes_per_sec_100K | 每秒的响应速度在 [10K,100K) 之间的数量 |
| server_speed_bytes_per_sec_1M | 每秒的响应速度在 [100K,1M) 之间的数量 |
| server_speed_bytes_per_sec_10M | 每秒的响应速度在 [1M,10M) 之间的数量 |
| server_speed_bytes_per_sec_100M | 每秒的响应速度在 [10 M,+∞) 之间的数量 |
| server_connect_count | 连接 OBServer 节点的总次数 |
| server_connect_retries | 连接 OBServer 节点的重试总次数 |
| server_pl_lookup_count | 路由总次数 |
| server_pl_lookup_retries | 路由重试总次数 |
| broken_server_connections | 和 OBServer 节点断连总次数 |
| server_requests | 向 OBServer 节点发送请求总次数 |
| server_responses | 收到 OBServer 节点响应总次数 |
| server_error_responses | 收到 OBServer 节点 ERROR 类型响应总次数 |
| server_resultset_responses | 收到 OBServer 节点 resultset 类型响应总次数 |
| server_ok_responses | 收到 OBServer 节点 OK 类型响应总次数 |
| server_other_responses | 收到 OBServer 节点 其它类型响应总次数 |
| send_saved_login_requests | 发送给 OBServer 节点 LOGIN 报文总次数 |
| send_all_session_vars_requests | 发送给 OBServer 节点 全量 Session 变量同步总次数 |
| send_use_database_requests | 发送给 OBServer 节点 use database 总次数 |
| send_changed_session_vars_requests | 发送给 OBServer 节点部分 Session 变量总次数 |
| send_last_insert_id_requests | 发送给 OBServer 节点 last insert id 总次数 |
| send_start_trans_requests | 发送给 OBServer 节点开启事务总次数 |
| vip_to_tenant_cache_hit | 公有云上 VIP 信息查询命中次数 |
| vip_to_tenant_cache_miss | 公有云上 VIP 信息查询未命中次数 |
终止客户端连接
您可使用 KILL PROXYSESSION (cs_id | connection_id) 命令终止客户端连接,结合示例介绍如何通过 Client Session ID 或 Connection ID 终止连接。
说明
通过指定 cs_id 或 CONNECTION_ID 来 KILL 当前的 Session 时,当前的连接中断,命令执行成功。使用 SHOW PROXYSESSION 查看时,客户端会重新建立 Session 连接,并执行 SQL 显示结果。
通过 Client Session ID 终止连接
通过命令
SHOW PROXYSESSION查询需要终止的客户端会话的 ID(Client Session ID),也就是cs_id。obclient> show proxysession;输出如下,第二列数据(
Id)表示 Client Session ID。+---------------------+--------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+------+------+-----------+ | proxy_sessid | Id | Cluster | Tenant | User | Host | db | trans_count | svr_session_count | state | tid | pid | using_ssl | +---------------------+--------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+------+------+-----------+ | 7230691418559283266 | 68 | ob1.cc | sys | root | 127.0.0.1:50260 | NULL | 0 | 1 | MCS_ACTIVE_READER | 8728 | 8728 | 0 | +---------------------+--------+---------+--------+------+-----------------+------+-------------+-------------------+-------------------+------+------+-----------+ 1 rows in set执行如下 SQL 终止会话。
obclient> KILL PROXYSESSION 68; ERROR 1317 (70100): Query execution was interrupted验证是否终止会话,执行如下 SQL。
obclient> select 88;输出显示已失去连接。
ERROR 2013 (HY000): Lost connection to MySQL server during query
通过 Connection ID 终止连接
执行以下命令获取当前会话的 Connection ID
obclient> select CONNECTION_ID();输出结果如下:
+-----------------+ | CONNECTION_ID() | +-----------------+ | 3221766868 | +-----------------+ 1 row in set执行如下命令终止该会话。
obclient> KILL PROXYSESSION 3221766868; ERROR 1317 (70100): Query execution was interrupted验证是否终止会话,执行如下 SQL。
obclient> select 88;输出显示已失去连接。
ERROR 2013 (HY000): Lost connection to MySQL server during query