该程序脚本最主要的功能实现为通过oracle自带的过程包发送邮件来监控ETL的执行情况:
ORACLE_SID=orcl
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/10.2.0
export ORACLE_SID ORACLE_BASE ORACLE_HOME
PWD_DIR=/home/oracle/shell
SQLPLUS=${ORACLE_HOME}/bin/sqlplus
CONFIG_INI=${PWD_DIR}/ini/config.ini
while read gameuser
do
echo ${gameuser}
echo ${SQLPLUS}
cd ${PWD_DIR}
${SQLPLUS} ${gameuser} << !
@etl_monitor.sql;
/
exit;
!
done<${CONFIG_INI}
etl_monitor.sql脚本为:
DECLARE
p_txt VARCHAR2 (4000);
p_txt_all VARCHAR2 (4000);
BEGIN
FOR r IN (SELECT job_name,
run_cnt,
table_name,
column_name
FROM etl_monitor_config_tab)
LOOP
-- Call the Etl Monitor function
p_txt :=
etl_monitor (r.job_name,
r.run_cnt,
r.table_name,
r.column_name);
p_txt_all := p_txt_all CHR (13) p_txt;
END LOOP;
-- Call the Send Mail function
procsendemail (p_txt_all,
'Etl Moniotr',
'xxx@163.com',
'xxxx@kingsoft.com',
'mail.kingsoft.com',
25,
1,
'xxxxxx',
'xxxxxx',
'',
'bit 7');
p_txt_all := '';
END;
create or replace function etl_monitor(job_name varchar2,
run_cnt int,
table_name varchar2,
column_name varchar2)
RETURN varchar2 IS
v_monitor_date date; --The monitor of the proc's date
v_job_name varchar2(130);
v_log_id number;
v_result1 char(1); --The status of the proc's result1
v_result2 char(1); --The status of the proc's result2
v_status_cnt int;
v_record_num int; --The number of the job run
v_result varchar2(4000);
v_sql varchar2(1000);
begin
v_monitor_date := trunc(sysdate);
v_job_name := job_name;
v_result1 := '0';
v_result2 := '0';
v_sql := 'select count(1) from ';
if run_cnt = 1 then
select log_id
into v_log_id
from user_scheduler_job_run_details
where job_name = v_job_name
and trunc(actual_start_date) = v_monitor_date;
else
select max(log_id)
into v_log_id
from user_scheduler_job_run_details
where job_name = v_job_name
and trunc(actual_start_date) = v_monitor_date;
end if;
select count(*)
into v_status_cnt
from user_scheduler_job_run_details
where log_id = v_log_id
and status = 'SUCCEEDED';
if v_status_cnt = 0 then
goto error1;
end if;
v_result1 := '1';
v_sql := v_sql table_name ' ' 'where trunc(' column_name
') =' 'trunc(sysdate-1) and rownum=1';
execute immediate v_sql
into v_record_num;
if v_record_num > 0 then
v_result2 := '1';
else
v_status_cnt := 0;
goto error1;
end if;
if v_result1 = '1' and v_result2 = '1' then
v_result := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') '.'
v_job_name ' At ' v_monitor_date ' IS SUCCEEDED';
end if;
<<error1>>
if v_status_cnt = 0 then
select OWNER '.' JOB_NAME ' At ' TRUNC(ACTUAL_START_DATE)
'IS ' ADDITIONAL_INFO
into v_result
from user_scheduler_job_run_details
where log_id = v_log_id;
end if;
return v_result;
exception
when others then
return SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') '.' v_job_name ' At ' v_monitor_date ' IS NOT EXECUTE';
end;
1 2 3 4 5 下一页 >全文阅读
提示:试试"← →"键,翻页更方便哦!
ORACLE 自动发邮件代码
时间: 2024-11-03 20:58:09
ORACLE 自动发邮件代码的相关文章
Python实现向QQ群成员自动发邮件的方法_python
本文实例讲述了Python实现向QQ群成员自动发邮件的方法.分享给大家供大家参考.具体实现方法如下: 原理: 我们需要先获取QQ群中的所有成员并保存到一个txt文本中去,然后再由python读取文件然后进行批量邮件发送了,具体解决方案如下: 1. 获取QQ群成员QQ号码,QQ群成员信息可以在如下网页中获取,选择全部成员保存在txt中即可 http://qun.qzone.qq.com/group#!/123456/member (这里的123456为QQ群号码) 2. 解析获取的QQ群成员列表l
SAP MM SA 保存后自动发邮件给供应商功能的实现
SAP MM SA 保存后自动发邮件给供应商功能的实现 MN08 setting : Medium 5 (External Send), Vendor master data, email address in the Address view, 执行事务代码SCOT去设置哪些后缀的email地址能收邮件, 在这里维护QQ邮箱能收邮件即可. SA output, ME9E, Output message,成功了, 我的QQ邮箱(2806032155@qq.com) 就
关于perforce的自动发邮件的问题
问题描述 关于perforce的自动发邮件的问题 我想在p4v中实现,一旦有人修改的信息,可以自动将description通过邮件发给指定的人?请问有人了解这个软件吗?知道的麻烦告诉下,小弟不慎感激!
yii2 log配置-yii2当log为error时自动发邮件该如何配置呢
问题描述 yii2当log为error时自动发邮件该如何配置呢 当log为error时自动发邮件该如何配置呢,当log为error时自动发邮件该如何配置呢,
协议-怎样做一个自动发邮件提醒的系统?
问题描述 怎样做一个自动发邮件提醒的系统? 我要做的是一个邮件通知系统,是为学校的学生做的.具体来说就是要追踪学生的学术状态,比如应该交作业的日期,在日期临近的时候自动发送一封提醒邮件,提醒学生按时交作业:如果没有按时交,再发送一封催促邮件.我想知道做这样的系统大概思路是怎样的,用什么语言比较合适?需要用到什么协议?是否需要自己写一个邮件服务器? 解决方案 不要邮件服务器,直接用现成的qq 163都可以.主流编程语言都支持,比如C# Java等,直接用smtp客户端类发,很简单的,具体googl
java实现后台自动发邮件功能
ava实现后台自动发邮件功能 www.diybl.com 时间 : 2008-09-13 作者:佚名 编辑:本站 点击: 1390 [ 评论 ] web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" &quo
vs2008-c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊
问题描述 c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊 c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊 解决方案 http://blog.csdn.net/ybjx111/article/details/7031055 解决方案二: http://download.csdn.net/detail/glc22/4128319http://blog.csdn.net/ybjx111/article/details/7031055http://blog.csdn.
asp使用jmail 发邮件代码
要用jmail 组件后才能使用哦. Sub Jmail(email,topic,mailbody) On Error Resume Next Dim JMail Set JMail=Server.CreateObject("JMail.Message") JMail.silent=True JMail.Logging=True JMail.Charset="gb2312" If Not(Newasp.MailUserName = "&quo
两款python smtp发邮件代码
例1 代码如下 复制代码 from email.mime.text import MIMEText from email.mime.audio import MIMEAudio from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart #发送邮件 def sendMail(): sender = "haiwil2012@yahoo.cn" receiv