调小系统时间导致ob异常

【 使用环境 】生产环境
【 使用版本 】4.2.0_CE
【问题描述】

  1. 当前系统时间 Tue Jan 16 17:37:33 UTC-8 2024
  2. 手动调小系统时间:Tue Jan 16 17:35:33 UTC-8 2024
  3. 此时ob访问异常:
ERROR 4012 (HY000): Timeout, query has reached the maximum query timeout: 10000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again.

  1. 当等待系统时间自然推进到17:37:33分时,ob访问恢复正常

【问题】

  1. 看是只要系统时间小于ob上次运行的时间,就会立马访问异常(没有1小时误差范围内可正常访问)?
  2. 如何知晓上次正常运作的节点,即时间推进到该节点可正常访问?
  3. 时间调节异常的机制原理是什么?
  4. 租户中的system_time_zone、time_zone有和区别、其具体影响示例是如何?
  1. 如果你提前把租户变量 ob_query_timeout 调大到 1小时,也许容忍的时间误差可以再大一些。不过还是要建议生产时间跟标准时间保持一致。
  2. 看 LS 的当前scn 对用的时间 应该差不多。
SELECT tenant_id, ls_id, svr_ip, end_scn, usec_to_time(end_scn/1000) FROM `GV$OB_LOG_STAT` ;

3 4 可以参考之前的测试案例:

OB 主机时间回退和夏令时问题测试 (qq.com)

1 个赞

  1. 普通租户查询:右侧为系统时间,此时虽比左侧查询值小,但也能ob访问正常
    异常场景下,sys租户和普通租户是都不能登录查询的,此时能从日志哪里过滤确认调整的目标节点??