#! /bin/bash
`sqlplus -s <username>/<passwd>@dbname` << EOF
set echo on
set pagesize 0
set verify off
set lines 32000
set trimspool on
set feedback off
`SELECT starts_with, SUM (total_records) total_records
FROM (SELECT ID,
(CASE WHEN ID LIKE '2%' THEN '2____'
WHEN ID LIKE '3%' THEN '3____'
WHEN ID LIKE '99%' THEN '99____'
END
) starts_with,
total_records
FROM tr
where ( id like '2%' or id like '3%' or id like '99%'))
WHERE tr.TIMESTAMP > SYSDATE - 75 / 1440
AND tr.TIMESTAMP <= SYSDATE - 15 / 1440
GROUP BY starts_with;
`
exit;
EOF
1.首先,我如何安排脚本在每1小时后运行一次?
2.其次,要求是发送电子邮件,条件如下:
如果total_records&lt; 1,然后将UP ALERT通知电子邮件发送到xyz@mail.com 一旦total_records大于1,则再次向下警告通知电子邮件发送到xyz@mail.com。
注意:Till total_records&gt; 1,没有上述内容(第2页)要遵循。只有,当它的total_records&lt; 1,我们需要按照步骤2进行操作。
此处,total_records表示交易,因此它会在每小时更改(因为tr.TIMESTAMP
表示)。 tr表示事务表。
答案 0 :(得分:2)
要在0分钟标记处每小时运行一次脚本,请在crontab中添加一个条目,如下所示:
crontab -e
以编辑您的crontab。然后添加以下行并保存crontab:
0 * * * * myscript.sh > myscript.log
现在,您需要根据自己的条件确定是否应该发送电子邮件。执行此操作的一种方法是将SQL命令的输出写入如下文件:
#! /bin/bash
`sqlplus -s <username>/<passwd>@dbname` << EOF > sql.out
set echo on
set pagesize 0
set verify off
set lines 32000
set trimspool on
set feedback off
`SELECT starts_with, SUM (total_records) total_records
FROM (SELECT ID,
(CASE WHEN ID LIKE '2%' THEN '2____'
WHEN ID LIKE '3%' THEN '3____'
WHEN ID LIKE '99%' THEN '99____'
END
) starts_with,
total_records
FROM tr
where ( id like '2%' or id like '3%' or id like '99%'))
WHERE tr.TIMESTAMP > SYSDATE - 75 / 1440
AND tr.TIMESTAMP <= SYSDATE - 15 / 1440
GROUP BY starts_with;
`
exit;
EOF
然后使用sql.out
或grep
命令将您的条件应用于wc
,并使用mailx
(如果已安装)或sendmail
发送电子邮件:< / p>
if grep -q something sql.out
then
# send email containing the output of the SQL statement
cat sql.out | mailx -s "UP ALERT" xyz@mail.com
fi
#delete sql.out
rm sql.out
答案 1 :(得分:1)
1)要每小时运行一个命令,只需编辑用户crontab并添加:
0 * * * * command
2)这可以通过很多方式完成。是否配置了UNIX邮件服务器?
答案 2 :(得分:0)
对于(1)查看cron(1)的手册页。这将做你想要的。
对于(2),您需要从Oracle内部发出电子邮件(请参阅DBMS_MAIL包)或将SQLPlus的输出重定向到文件并在shell脚本中处理该文件。有关如何执行此操作的详细信息,请参阅mail(1)命令的文档。
答案 3 :(得分:0)
看看crond和sendmail的联机帮助页。