【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 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
雨辰AI8 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20248 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有9 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao9 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_748839499 小时前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录9 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约10 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理
颂love10 小时前
MySQL的执行流程
android·数据库·mysql
程序leo源11 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#