问题现象
当归档模式为 OPTIONAL,并且归档介质出现长时间不可写入(如 OSS LICENCE 到期)的情况下,会由于日志被回收导致归档断流。此时可能会出现租户归档状态为 DOING,部分日志流的归档状态为 INTERRUTPED 的情况,如果此时恰好有迁移任务,迁移任务会失败。
关键诊断信息
触发条件
归档介质不可写入。
事前巡检
检查归档介质是否可写入,包括但不限于 OSS LICENCE 过期、OSS ak 权限不足、OSS 或 NFS 空间不足等。
事后诊断
日志流级别归档进度出现 INTERRUPTED:

租户级归档进度仍然处于 DOING:

迁移任务报错日志,关键日志内容为:[errcode=-9087] failed to fetch ls info 。

问题原因
正常流程为:已断流日志流的归档状态会先推进到 INTERRUPTED,然后租户级归档状态再推进到 INTERRUPTED 。但是由于归档介质不可访问会导致租户级归档状态无法推进到 INTERRUPTED,进而导致获取归档进度的接口无法获取当前是断流状态。迁移任务在检查日志流归档进度时,如果恰好遇到上述问题,会导致获取归档进度失败,从而阻塞迁移任务。
问题的风险及影响
影响迁移任务失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
影响版本
OceanBase 数据库企业版 V4.2.1 GA(oceanbase-4.2.1.0-100000182023092722)及之后版本、V4.2.2 GA(oceanbase-4.2.2.0-100000082024011317)及之后版本、V4.3.0(oceanbase-4.3.0.0-100000072024020200)及之后版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP6(oceanbase-4.2.1.6-106000022024042414)及之后版本、V4.2.4(oceanbase-4.2.4.0-100000252024070621)及之后版本、V4.3.1(oceanbase-4.3.1.0-100000212024051522)及之后版本。
如果归档介质可恢复,则可以先恢复归档介质,然后等待归档状态完成推进,即可解决该问题。
如果归档介质不可恢复,或者急需解决该问题,可在先当前租户下执行
alter system noarchivelog停止归档任务,然后等待租户归档状态推进到STOPPING,也可以规避该问题。
注意
由于归档任务已经断流,所以无论以哪种方式恢复,都需要重新开启归档任务。
规避方式:
监控归档任务和归档介质,保证归档介质的可用性。