【OceanBase诊断调优】—— 错误码 5065 和 5066 的区别

适用版本:V2.1.x、V2.2.x、V3.1.x、V3.2.x

5065 与 5066 是两个近似的报错。

  • OB_ERR_QUERY_INTERRUPTED(-5065):

    • Message: Query execution was interrupted。

    • 含义为执行中断, 例如终端执行 SQL 过程中按 ctrl+c 终止 SQL 执行会报 -5065。

  • OB_ERR_SESSION_INTERRUPTED(-5066):

    • Message: Session interrupted。

    • 含义为 session 中断, 例如 SQL 执行过程中连接池超时断开网络链接,或者终端执行过程中 kill 掉 OBServer 进程断开网络链接。

问题复现模拟上述报错的示例:

  1. 发起某个业务查询语句,数秒后,并通过 Ctrl + C 取消此语句。

    复制代码
    obclient [SYS]> select count(*) records from NGCRM_XX.CM_SUBS_PRODATTR tsa;
    ^CCtrl-C -- query killed. Continuing normally.
    ORA-00600: internal error code, arguments: -5065, Query execution was interrupted
  2. 查询当前会话的 ID ,并再次发起业务查询语句。

    1. 查询当前会话 ID.

      复制代码
      obclient [SYS]> show processlist;

      输出结果如下:

      复制代码
      +--------+----------+------+---------------------+------+-------------+-------------------+-------------------+---------+---------+
      | Id     | Tenant   | User | Host                | db   | trans_count | svr_session_count | state             | tid     | pid     |
      +--------+----------+------+---------------------+------+-------------+-------------------+-------------------+---------+---------+
      | 219088 | oboracle | SYS  | 10.xxx.xxx.xx:43752 | SYS  |           0 |                 1 | MCS_ACTIVE_READER | 2059664 | 2059653 |
      +--------+----------+------+---------------------+------+-------------+-------------------+-------------------+---------+---------+
      1 row in set (0.006 sec)
    2. 发起执行业务查询语句。

      复制代码
      obclient [SYS]> select count(*) records from NGCRM_XX.CM_SUBS_PRODATTR tsb;
  3. 在另一个窗口,执行终止会话的操作。

    复制代码
    [root@xxxx] kill -9 219088
  4. 返回原窗口,此时可看到第二次发起的业务查询语句也报错了。

    复制代码
    ERROR-02013: Lost connection to MySQL server during query
  5. 登录 SYS 租户,通过 SQL_AUDIT 查询报错信息,可分别看到 5065 以及 5066 的报错。

    复制代码
    obclient [oceanbase]>  select svr_ip,ret_code,query_sql from gv$sql_audit where query_sql like 'select%count%CM_SUBS_PRODATTR ts%'\G;

    输出结果如下:

    复制代码
    *************************** 1. row ***************************
    svr_ip: xxx.xxx.xxx.xxx
    ret_code: -5065
    query_sql: select count(*) records from NGCRM_XX.CM_SUBS_PRODATTR tsa
    *************************** 2. row ***************************
    svr_ip: xxx.xxx.xxx.xxx
    ret_code: -5066
    query_sql: select count(*) records from NGCRM_XX.CM_SUBS_PRODATTR tsb
    2 rows in set (20.974 sec)
相关推荐
先吃饱再说7 小时前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils7 小时前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend9 小时前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶9 小时前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung10 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql
parade岁月11 小时前
MySQL JOIN解析:朴实无华但食之有味
数据库·后端
用户31693538118311 小时前
MySQL服务无法启动问题解决全记录
数据库
vivo互联网技术14 小时前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
倔强的石头_1 天前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB1 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python