---
title: GTS 和 STS 常见问题排查手册-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 GTS 和 STS 常见问题排查手册相关的常见问题和使用技巧，帮助您快速解决 GTS 和 STS 常见问题排查手册的难题。
---
切换语言

- 简体中文
- English

划线反馈

# GTS 和 STS 常见问题排查手册

更新时间：2024-07-04 07:41

适用版本： V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

## OB_NOT_MASTER (-4038) 错误排查指南

1. 检查是否存在 Leader

   使用以下查询确认对应租户日志流是否有 Leader：

   ```shell
   obclient> select * from __all_virtual_ha_diagnose where tenant_id = 1xxx and ls_id =1;

   ```

   如果无 Leader，请联系技术支持人员进行确认。

   如果环境无法登录来执行 SQL 查询，可通过 election.log 查看是否存在无主问题。
 2. 确认 GTS 获取的 Leader 是否正确

   若存在 Leader，确认 Location Service 的 Leader 是否需要更新。详细可参考[OceanBase 数据库 V4.x 版本中 Location Service 问题排查](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000941489)
 3. 在 Leader 所在节点查找相关错误

      - ObTimestampAccess 状态检查

       如果状态显示为 FOLLOWER，则 ObTimestampService 可能未被调用 switch to leader 接口。通过日志进行进一步确认：

       ```shell
       ObTimestampService switch to leader success

       ```
      - ObTimestampService 检查 Leader 状态

       如果在 check leader 时状态为 follower，ObTimestampService 的 Leader 应与 log_handler 状态同步。
 4. 对 clog 和 role change service 状态进行排查

   无主问题通常是因为 role change service 卡住导致的，需检查 clog。

## OB_EAGAIN (-4023) 错误排查指南

1. 当 ID Service 没有可分配区间时，会返回 OB_EAGAIN。若出现长期无可分配区间，通常是因为预分配日志未回调。通过以下命令查看相关日志：

   ```shell
   grep "handle submit callback" observer.log

   ```

   如果找到 `submit log callback use too much time` 的相关日志，意味着存在日志回调延迟问题。
 2. 如发现 log 长时间未回调，请联系技术支持人员进行处理。

## STS 获取失败问题排查指南

1. 检查 Leader 条件，类似于 GTS 排查流程。可使用的虚表包括：

   ```shell
   obclient> SELECT gmt_create, svr_ip, svr_port, event, name3, value3 FROM __all_server_event_history WHERE module="ELECTION" AND value1=tenant_id AND value2=ls_id ORDER BY gmt_create;
   obclient> SELECT * FROM __all_virtual_log_stat WHERE tenant_id = xxxx AND ls_id = 1;
   obclient> SELECT * FROM __all_virtual_ha_diagnose WHERE tenant_id = 1xxx AND ls_id = 1;

   ```
 2. 如果 Leader 正常，检查主备库状态信息，确定是否存在主备切换卡住问题。

   ```shell
   obclient> SELECT * FROM __all_virtual_tenant_info WHERE tenant_id = xxxx; -- 检查切换状态
   obclient> SELECT * FROM __all_virtual_log_restore_source WHERE tenant_id = xxxx; -- 检查备库源
   obclient> SELECT * FROM DBA_OB_ROOTSERVICE_EVENT_HISTORY WHERE EVENT LIKE "%switchover to%" ORDER BY TIMESTAMP; -- 检查历史事件和对应的 trace_id

   ```
 3. 如果主备库切换正常，检索备库时钟源日志，确定是否有错误信息：

   ```shell
   grep "Txxxx_STSWorker" observer.log

   ```

## 适用版本

OceanBase 数据库 V4.x 版本。

Previous

[-4283 OB_GTS_NOT_READY 问题排查](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001013869)

Next

[select udf px 执行时事务层报 6220](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002157882) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
