问题现象
因为人为因素导致部分统计信息函数未安装,自动统计信息触发执行长期失败。重新安装统计信息相关函数后,发现仍然无法正常自动统计信息收集,统计信息状态为 broken。
问题原因
统计信息 JOB 收集失败次数达到 16 次会直接禁用 JOB 任务的使用。
适用版本
OceanBase 数据库 V4.2.4(oceanbase-4.2.4.0-100000252024070621)之前 V4.x 版本。
解决方法
-
解决方法一:该禁用限制在 OceanBase 数据库 V4.2.4 版本已经取消,升级到 V4.2.4 版本。
升级至问题已修复版本。目前已修复的版本为 V4.2.4(oceanbase-4.2.4.0-100000252024070621)版本。
-
解决方法二:不升级的情况下,手动解除限制需要修改系统表。
-
登录 sys 租户切换到业务租户。
alter system change TENANT xxx;
-
更新内部表
__all_tenant_scheduler_job
。-- 注意字段类型对应的值 failures,flag 是 int 类型。 update __all_tenant_scheduler_job set failures=0,state='SCHEDULED',flag=0;
警告
更新内部表
__all_tenant_scheduler_job
存在风险,请勿自行操作。如果需要修改,请咨询 OceanBase 技术支持。 -
手动调用统计信息收集测试。
-- 示例。 call dbms_scheduler.set_attribute('MONDAY_WINDOW', 'NEXT_DATE', '2024-07-22 11:17:00');
-
在 sys 租户下查看统计信息收集的结果。
select * from oceanbase.DBA_SCHEDULER_JOBS where job_name='MONDAY_WINDOW'\G;
-