You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Autosys SQL作业实现特定条件下每小时邮件告警

现有配置的问题

你当前的配置无法实现需求,核心原因有3个:

  • 你选的job_type: SQL类型作业,内置的通知触发逻辑仅绑定作业运行状态(成功、失败、被终止),不会判断SQL返回的业务结果:只要SQL语句执行不抛出数据库错误,作业就会判定为成功,根本不会管查出来的内容是不是你要的特定结果,自然没法做到「符合结果才发邮件」。
  • 手动枚举00:00到23:00的start_times容易出现漏写、格式错误,Autosys有原生的小时级调度参数,不需要手动写全24个时间点。
  • SQL类型作业没有内置逻辑分支能力,无法直接对查询结果做条件判断,没法单独实现结果触发通知的逻辑。
可落地的实现方案

最稳妥的方式是把作业类型改成CMD命令类型,用shell脚本封装「SQL执行→结果判断→条件发邮件」的全逻辑,Autosys只负责按小时调度脚本即可,维护成本最低、逻辑可控。

第一步:编写执行脚本

在目标执行机器上新建shell脚本,比如路径为/opt/scripts/hourly_sql_check.sh,赋予执行权限chmod +x /opt/scripts/hourly_sql_check.sh,脚本内容参考:

#!/bin/bash
# 提前配置好环境变量,避免Autosys执行时找不到命令
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1  # 替换为你机器上的实际Oracle路径
export PATH=$ORACLE_HOME/bin:$PATH

# 业务配置
DB_CONN="dbuser/dbpass@your_tns_name"  # 替换为实际Oracle连接串
LOG_FILE="/var/log/sql_check/hourly_check.log"
RECV_MAIL="ops-team@yourcompany.com"  # 替换为实际收件人邮箱
# 你要匹配的特定返回结果,比如查询到异常数据时返回的固定标识
MATCH_KEYWORD="ALERT_TRIGGER"

# 静默执行SQL,获取返回结果
SQL_RESULT=$(sqlplus -S $DB_CONN <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
-- 替换为你实际要执行的SQL语句,建议符合触发条件时返回固定标识,减少判断复杂度
YOUR_ACTUAL_SQL_QUERY;
EXIT;
EOF
)

# 写入执行日志
echo "[$(date '+%Y-%m-%d %H:%M:%S')] SQL执行完成,返回结果: $SQL_RESULT" >> $LOG_FILE

# 判断结果是否匹配触发条件
if echo "$SQL_RESULT" | grep -q "$MATCH_KEYWORD"; then
    # 匹配到结果时发邮件
    echo "小时级SQL巡检触发告警,查询返回匹配结果:$SQL_RESULT,详细日志见$LOG_FILE" | mailx -s "【告警】小时SQL检查命中阈值" $RECV_MAIL
fi

exit 0

第二步:编写Autosys JIL配置

直接用如下配置替换你原来的SQL作业配置即可:

insert_job: hourly_sql_alert_job
job_type: CMD
machine: xxxx
owner: xxxx
date_conditions: 1
days_of_week: all
start_mins: 0
command: /opt/scripts/hourly_sql_check.sh
std_out_file: /var/log/sql_check/autosys_run.log
std_err_file: /var/log/sql_check/autosys_err.log
max_run_alarm: 10
alarm_if_fail: 1
alarm_if_terminated: 1
补充说明
  • 如果你一定要用原生SQL类型作业,需要额外新增一个依赖该SQL作业的CMD作业,SQL作业把结果输出到指定文件后,后置CMD作业去读取文件内容做判断再发邮件,这种方式需要维护两个作业的依赖关系,链路更长,不推荐。
  • 提前在执行机器上测试sqlplus连通性、mailx发信功能正常,避免环境问题导致作业失效。
  • 不要依赖SQL作业自带的send_notification参数,该参数只会按作业状态发通知,只要SQL不报错就会触发成功通知,会产生大量无意义的骚扰邮件。

内容的提问来源于stack exchange,提问作者Rajthilak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:18:20