-- ============================================================================= -- 脚本:06-fairness-late-replay-verify.sql -- 用途:验证公平调度和迟到告警重放的数据库升级结果。 -- 性质:只读脚本,不会修改表结构和业务数据,可以重复执行。 -- 执行时机:05 执行完成后、启动三个新版服务之前。 -- -- 成功标准: -- 1. 第 1 组包含 SCHEDULER_PRIORITY 字段和两张 ANALYSIS_* 表的字段; -- 2. 第 2 组所有约束的 STATUS 都是 ENABLED; -- 3. 第 3 组返回三个索引,STATUS 都是 VALID; -- 4. 第 4 组中 NDR_ALERT 优先级为 100,NDR_FLOW_LOG 优先级为 10; -- 5. 首次升级时,第 5、6 组可以返回 0 行,因为还没有产生迟到数据和重放任务。 -- ============================================================================= -- 第 1 组:检查新增字段和两张新表的字段结构。 SELECT table_name,column_name,data_type,nullable,data_default FROM user_tab_columns WHERE (table_name='DEVICE_COLLECT_API_CONFIG' AND column_name='SCHEDULER_PRIORITY') OR table_name IN ('ANALYSIS_LATE_ALARM_BUCKET','ANALYSIS_RULE_REPLAY_WINDOW') ORDER BY table_name,column_id; -- 第 2 组:检查新增检查约束、主键、外键和唯一约束是否启用。 SELECT table_name,constraint_name,constraint_type,status FROM user_constraints WHERE table_name IN ( 'DEVICE_COLLECT_API_CONFIG', 'ANALYSIS_LATE_ALARM_BUCKET', 'ANALYSIS_RULE_REPLAY_WINDOW' ) AND (table_name<>'DEVICE_COLLECT_API_CONFIG' OR constraint_name='CK_DC_API_CFG_PRIORITY') ORDER BY table_name,constraint_name; -- 第 3 组:检查三个新增索引是否有效。 SELECT table_name,index_name,uniqueness,status FROM user_indexes WHERE index_name IN ( 'IDX_DC_API_CFG_PRIORITY_DUE', 'IDX_ANALYSIS_LATE_BUCKET_DUE', 'IDX_ANALYSIS_RULE_REPLAY_DUE' ) ORDER BY index_name; -- 第 4 组:核对现有 API 拉取任务的调度优先级和启停状态。 SELECT collect_task_id,stream_key,scheduler_priority,enabled,next_run_at FROM device_collect_api_config ORDER BY scheduler_priority DESC,collect_task_id; -- 第 5 组:按状态统计迟到告警分钟桶。刚升级完成时返回 0 行属于正常情况。 SELECT status,COUNT(*) AS bucket_count FROM analysis_late_alarm_bucket GROUP BY status ORDER BY status; -- 第 6 组:按状态统计规则重放窗口及输入、输出数量。 -- 刚升级完成时返回 0 行属于正常情况;运行后可据此观察积压和处理结果。 SELECT status,COUNT(*) AS replay_count, SUM(input_count) AS input_count,SUM(output_count) AS output_count FROM analysis_rule_replay_window GROUP BY status ORDER BY status;