步骤一,按照租户类别使用如下SQL查询进行检查,主要检查最近一天内的所有租户自动收集是否有正常调度,如果调度正常,跳转步骤二,否则请先排查自动收集任务调度的问题: [自动统计收集任务调度问题排查]
– sys租户,查询非空则说明有租户调度异常(推荐)
SELECT tenant_id AS failed_scheduler_tenant_id
FROM oceanbase.__all_tenant t
WHERE NOT EXISTS(SELECT 1
FROM oceanbase.__all_virtual_task_opt_stat_gather_history h
WHERE TYPE = 1
AND start_time > date_sub(now(), interval 1 day)
AND h.tenant_id = t.tenant_id); 步骤二,按照租户类别使用如下SQL查询进行检查,获取过去一天的自动收集是表收集失败列表,如果为空则说明自动收集正常
– sys租户,获取的所有租户信息,可以指定租户查询(推荐)
SELECT t_opt.tenant_id,
t_opt.task_id,
task_opt.start_time AS task_start_time,
task_opt.end_time AS task_end_time,
d.database_name,
t.table_name,
t_opt.table_id,
t_opt.ret_code,
t_opt.start_time,
t_opt.end_time,
t_opt.memory_used,
t_opt.stat_refresh_failed_list,
t_opt.properties
FROM (
SELECT tenant_id,
task_id,
start_time,
end_time,
table_count
FROM oceanbase.__all_virtual_task_opt_stat_gather_history
WHERE type = 1
– AND tenant_id = {tenant_id}
AND start_time > date_sub(Now(), interval 1 day)) task_opt
JOIN oceanbase.__all_virtual_table_opt_stat_gather_history t_opt
JOIN oceanbase.__all_virtual_table t
JOIN oceanbase.__all_virtual_database d
WHERE t_opt.ret_code != 0
AND task_opt.task_id = t_opt.task_id
AND task_opt.tenant_id = t_opt.tenant_id
AND t_opt.tenant_id = t.tenant_id
AND t_opt.table_id = t.table_id
AND t.tenant_id = d.tenant_id
AND t.database_id = d.database_id
AND t_opt.table_id > 200000;
看着 其他的没啥问题 没有对比的查询 不好对比 可以用第二个查询 查的更详细
–MySQL业务租户查询 对比着查询 手动收集之前和之后 有数据变化的一段时间了 没有运行自动收集统计信息之前的这段时间
1、select /*+ query_timeout(100000000000) */ * from oceanbase.DBA_TAB_MODIFICATIONS where table_name=‘xxx’;
2、通过如下查询,按照租户类型再业务租户进行查询统计信息缺失或者过期的表,并且按照数据量排序:
– MySQL业务租户查询
SELECT v2.database_name,
v2.table_name,
Sum(inserts - deletes) row_cnt
FROM oceanbase.dba_tab_modifications v1,
(SELECT DISTINCT database_name AS DATABASE_NAME,
table_name AS table_name
FROM oceanbase.dba_ob_table_stat_stale_info
WHERE is_stale = ‘YES’
AND database_name != ‘oceanbase’) v2
WHERE v1.table_name = v2.table_name
GROUP BY v2.database_name,
v2.table_name
ORDER BY row_cnt;