首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.x 版本集群在开启全链路诊断时,因全链路信息获取出现 -4018 导致会话被强制断的原因和解决方法
更新时间:2026-07-02 15:41
问题现象
当会话开启全链路诊断后,执行某 SQL 时,有概率会出现如下 -4018 异常,并且接下来触发会话被断开。
000ORA-00600: internal error code, arguments: -4018, Entry not exist
OceanBase 数据库日志会伴随如下异常日志信息输出。
observer.log.20240807105634024:[2024-08-07 10:54:41.734692] WDIAG [SERVER] resolve_flt_span_rec (ob_flt_utils.cpp:575) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=11][errcode=-4018] failed to record request info in request manager(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734706] WDIAG [SERVER] process_flt_span_rec (ob_flt_utils.cpp:524) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=13][errcode=-4018] fail to resolve array child dom(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734719] WDIAG [SERVER] process_flt_extra_info (ob_flt_utils.cpp:322) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10][errcode=-4018] failed to generate flt span record from string(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734726] WDIAG [SERVER] init_flt_info (ob_flt_utils.cpp:96) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=-4018] fail to exec process_flt_extra_info(extra_info.get_full_link_trace().ptr(), extra_info.get_full_link_trace().length(), session)(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734734] WDIAG [SERVER] process (obmp_query.cpp:198) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4018] failed to update flt extra info(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734755] INFO [SERVER] send_error_packet (obmp_packet_sender.cpp:319) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9] sending error packet(ob_error=-4018, client error=600, extra_err_info=NULL, lbt()="0x1369dc2c 0xab938d0 0xab42f74 0x54d1654 0x54c565a 0x54af0b4 0xa84e944 0x13958950 0x7f90eb011f1b 0x7f90eaf491c0")
observer.log.20240807105634024:[2024-08-07 10:54:41.734788] INFO [SERVER] send_error_packet (obmp_packet_sender.cpp:502) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=12] dump txn free route audit_record(value=1048581, session->get_sessid()=3221775045, session->get_proxy_sessid()=738646044803568051)
observer.log.20240807105634024:[2024-08-07 10:54:41.734801] WDIAG [SERVER] force_disconnect (obmp_packet_sender.cpp:774) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4000] force disconnect(lbt()="0x1369dc2c 0xab96e51 0xab629f8 0x54d365e 0x54c565a 0x54af0b4 0xa84e944 0x13958950 0x7f90eb011f1b 0x7f90eaf491c0")
observer.log.20240807105634024:[2024-08-07 10:54:41.734812] WDIAG [SERVER] disconnect (obmp_packet_sender.cpp:788) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=0] server close connection(sessid=3221775045, proxy_sessid=738646044803568051, stack="0x1369dc2c 0xab96fd2 0xab627cd 0xab62a00 0x54d365e 0x54c565a 0x54af0b4 0xa84e944 0x13958950 0x7f90eb011f1b 0x7f90eaf491c0")
observer.log.20240807105634024:[2024-08-07 10:54:41.734823] WDIAG [SERVER] process (obmp_query.cpp:385) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-4018] disconnect connection(ret=-4018, ret="OB_ENTRY_NOT_EXIST")
其中关键日志信息如下。
observer.log.20240807105634024:[2024-08-07 10:54:41.734692] WDIAG [SERVER] resolve_flt_span_rec (ob_flt_utils.cpp:575) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=11][errcode=-4018] failed to record request info in request manager(ret=-4018)
observer.log.20240807105634024:[2024-08-07 10:54:41.734734] WDIAG [SERVER] process (obmp_query.cpp:198) [1290377][T1006_L0_G0][T1006][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4018] failed to update flt extra info(ret=-4018)
问题原因
当某个链接开启全链路诊断时,在执行 show trace 获取全链路诊断信息时,如果获取异常(本例子出现 -4018 异常),则有极大概率触发 force disconnect,导致 OceanBase 数据库断开当前 show trace 的链接。
问题的风险及影响
会导致使用全链路过程中链接被异常断开。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法及规避方式
暂时不使用全链路诊断。