-- 将 BUSINESS_DATE、YYYYMMDD 替换为升级当天后执行。 -- 结果要求见每段注释;不符合时不要启动全部业务实例。 -- 1. 应返回 10 行。 SELECT table_name FROM user_tables WHERE table_name IN ( 'SYSLOG_FAILURE_RECORD','SYSLOG_REPLAY_BATCH','SYSLOG_REPLAY_ITEM', 'ANALYSIS_CHECKPOINT','DEVICE_DAILY_STATS','NORMALIZE_RULE_DAILY_STATS', 'DEVICE_COLLECT_STATS','DEVICE_DAILY_STATS_DIRECT_SHADOW', 'NORMALIZE_RULE_DAILY_STATS_DIRECT_SHADOW','STATS_DIRECT_CONTROL' ) ORDER BY table_name; -- 2. POINT_TIME_NS 必须存在;其余升级字段也应全部列出。 SELECT table_name,column_name FROM user_tab_columns WHERE (table_name='SYSLOG_FAILURE_RECORD' AND column_name='POINT_TIME_NS') OR (table_name IN ('SYSLOG_NORMAL_DATA','SYSLOG_NORMAL_ALARM') AND column_name='RULE_VERSION') OR (table_name='ALARM' AND column_name IN ('RULE_ID','RULE_VERSION','WINDOW_START','GROUP_KEY_HASH')) OR (table_name='ALARM_VISIT' AND column_name IN ('ALGORITHM_ID','ALGORITHM_VERSION','EVENT_ID','RESULT_TYPE')) OR (table_name='DEVICE_DEVICE' AND column_name='TODAY_STATS_DATE') ORDER BY table_name,column_name; -- 3. 应返回 4 行且全部为 UNIQUE、VALID;前两个 PARTITIONED=YES,后两个为 NO。 SELECT index_name,table_name,uniqueness,partitioned,status FROM user_indexes WHERE index_name IN ( 'UK_NORMAL_DATA_LOG_ID','UK_NORMAL_ALARM_LOG_ID', 'UK_ALARM_RULE_WINDOW_GROUP','UK_ALARM_VISIT_ALGORITHM_EVENT' ) ORDER BY index_name; -- 4. 三个物理事实表及三张统计表行数,用于现场留档。 SELECT 'SYSLOG_NORMAL_DATA_P_YYYYMMDD' AS item,COUNT(*) AS row_count FROM syslog_normal_data_p_YYYYMMDD UNION ALL SELECT 'SYSLOG_NORMAL_ALARM_P_YYYYMMDD',COUNT(*) FROM syslog_normal_alarm_p_YYYYMMDD UNION ALL SELECT 'SYSLOG_NON_NORMAL_MESSAGE_P_YYYYMMDD',COUNT(*) FROM syslog_non_normal_message_p_YYYYMMDD UNION ALL SELECT 'DEVICE_DAILY_STATS',COUNT(*) FROM device_daily_stats WHERE stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD') UNION ALL SELECT 'NORMALIZE_RULE_DAILY_STATS',COUNT(*) FROM normalize_rule_daily_stats WHERE stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD') UNION ALL SELECT 'DEVICE_COLLECT_STATS',COUNT(*) FROM device_collect_stats; -- 5. 必须返回 SYSLOG_STATS / 0。 SELECT control_name,rebuild_required,updated_at FROM stats_direct_control WHERE control_name='SYSLOG_STATS'; -- 6. 以下两个查询都必须返回 0 行。 SELECT d.id FROM device_device d LEFT JOIN device_daily_stats s ON s.device_id=d.id AND s.stat_date=TO_DATE('BUSINESS_DATE','YYYY-MM-DD') WHERE d.today_stats_date IS NULL OR d.today_stats_date<>TO_DATE('BUSINESS_DATE','YYYY-MM-DD') OR COALESCE(d.today_parse_count,0)<>COALESCE(s.parse_count,0) OR COALESCE(d.today_non_log_count,0)<>COALESCE(s.non_log_count,0); SELECT control_name FROM stats_direct_control WHERE control_name='SYSLOG_STATS' AND rebuild_required<>0;