html格式郵件監控failures大於0的job
create or replace procedure sp_job_check as
v_counter number;
v_html varchar2(30000);
begin
select max(failures) into v_counter from dba_jobs;
if v_counter>0 then
v_html:='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "" xmlns="">';
v_html:=v_html||'<head><meta http-equiv=Content-Type content=text/html;charset=gb2312></head>';
v_html:=v_html||'<body>';
v_html:=v_html||'<table style="border-collapse:collapse">';
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >job</td><td style="border:1px solid black" >SCHEMA_USER</td><td style="border:1px solid black" >LAST_DATE</td><td style="border:1px solid black" >FAILURES</td><td style="border:1px solid black" >BROKEN</td><td style="border:1px solid black" >INTERVAL</td><td style="border:1px solid black" >WHAT</td>';
v_html:=v_html||'</tr>';
for mm in ( select job,SCHEMA_USER,to_char(LAST_DATE,'yyyy-mm-dd hh24:mi:ss') last_time,WHAT,INTERVAL,FAILURES,BROKEN from dba_jobs where failures>0) loop
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >'||mm.job||'</td><td style="border:1px solid black" >'||mm.SCHEMA_USER||'</td><td style="border:1px solid black" >'||mm.last_time||'</td><td style="border:1px solid black" >'||mm.FAILURES||'</td><td style="border:1px solid black" >'||mm.BROKEN||'</td><td style="border:1px solid black" >'||mm.INTERVAL||'</td><td style="border:1px solid black" >'||mm.WHAT||'</td>';
v_html:=v_html||'</tr>';
end loop;
v_html:=v_html||'</table>';
v_html:=v_html||'</body>';
v_html:=v_html||'</html>';
begin
SEND_EMAIL ('mdssysmail@mic.com.tw'
,'luxus.liao@mic.com.tw;woody.wu@mic.com.tw'
,'Job Check Failures>0 from MDSDB'
,v_html
,'eagle.zhou@mic.com.tw'
,'luxus.liao@mic.com.tw'
, 'text/html;charset=gb2312'
, '10.98.0.165'
, 25);
end;
end if;
exception when others then
dbms_output.put_line(sqlcode);
rollback;
end;
心得:
1.一開始想在begin後輸入for vv in ( select failures from dba_jobs) loop 再if vv.failures>0,發現這樣不行,因為一個迴圈裡面再出現另一個迴圈如下,發現發郵件的SEND_EMAIL不知道放在什麼位置,因為SEND_EMAIL只能放在最後一個迴圈裡面
for mm in ( select job,SCHEMA_USER,to_char(LAST_DATE,'yyyy-mm-dd hh24:mi:ss') last_time,WHAT,INTERVAL,FAILURES,BROKEN from dba_jobs where failures>0) loop
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >'||mm.job||'</td><td style="border:1px solid black" >'||mm.SCHEMA_USER||'</td><td style="border:1px solid black" >'||mm.last_time||'</td><td style="border:1px solid black" >'||mm.FAILURES||'</td><td style="border:1px solid black" >'||mm.BROKEN||'</td><td style="border:1px solid black" >'||mm.INTERVAL||'</td><td style="border:1px solid black" >'||mm.WHAT||'</td>';
v_html:=v_html||'</tr>';
end loop;
2.如果把SEND_EMAIL放在第一個迴圈裡面,則第一個迴圈有多少次,則傳送多少次郵件
3.如果把SEND_EMAIL放在第一個迴圈裡面的第二個迴圈,則郵件傳送的內容是第一個迴圈的最後一次的第二個迴圈裡面的所有次數,相當於第一個迴圈沒有意義,取的是第一個迴圈的最後一次
4.如果只有第一個迴圈,沒有第二個迴圈,且SEND_EMAIL放在第一個迴圈裡面,則第一個迴圈有多少次,則傳送多少次郵件,且郵件內容只有表格標題和每次迴圈的一行表格內容,即結果不會出現一行表格標題和多行表格內容
v_counter number;
v_html varchar2(30000);
begin
select max(failures) into v_counter from dba_jobs;
if v_counter>0 then
v_html:='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "" xmlns="">';
v_html:=v_html||'<head><meta http-equiv=Content-Type content=text/html;charset=gb2312></head>';
v_html:=v_html||'<body>';
v_html:=v_html||'<table style="border-collapse:collapse">';
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >job</td><td style="border:1px solid black" >SCHEMA_USER</td><td style="border:1px solid black" >LAST_DATE</td><td style="border:1px solid black" >FAILURES</td><td style="border:1px solid black" >BROKEN</td><td style="border:1px solid black" >INTERVAL</td><td style="border:1px solid black" >WHAT</td>';
v_html:=v_html||'</tr>';
for mm in ( select job,SCHEMA_USER,to_char(LAST_DATE,'yyyy-mm-dd hh24:mi:ss') last_time,WHAT,INTERVAL,FAILURES,BROKEN from dba_jobs where failures>0) loop
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >'||mm.job||'</td><td style="border:1px solid black" >'||mm.SCHEMA_USER||'</td><td style="border:1px solid black" >'||mm.last_time||'</td><td style="border:1px solid black" >'||mm.FAILURES||'</td><td style="border:1px solid black" >'||mm.BROKEN||'</td><td style="border:1px solid black" >'||mm.INTERVAL||'</td><td style="border:1px solid black" >'||mm.WHAT||'</td>';
v_html:=v_html||'</tr>';
end loop;
v_html:=v_html||'</table>';
v_html:=v_html||'</body>';
v_html:=v_html||'</html>';
begin
SEND_EMAIL ('mdssysmail@mic.com.tw'
,'luxus.liao@mic.com.tw;woody.wu@mic.com.tw'
,'Job Check Failures>0 from MDSDB'
,v_html
,'eagle.zhou@mic.com.tw'
,'luxus.liao@mic.com.tw'
, 'text/html;charset=gb2312'
, '10.98.0.165'
, 25);
end;
end if;
exception when others then
dbms_output.put_line(sqlcode);
rollback;
end;
心得:
1.一開始想在begin後輸入for vv in ( select failures from dba_jobs) loop 再if vv.failures>0,發現這樣不行,因為一個迴圈裡面再出現另一個迴圈如下,發現發郵件的SEND_EMAIL不知道放在什麼位置,因為SEND_EMAIL只能放在最後一個迴圈裡面
for mm in ( select job,SCHEMA_USER,to_char(LAST_DATE,'yyyy-mm-dd hh24:mi:ss') last_time,WHAT,INTERVAL,FAILURES,BROKEN from dba_jobs where failures>0) loop
v_html:=v_html||'<tr>';
v_html:=v_html||'<td style="border:1px solid black" >'||mm.job||'</td><td style="border:1px solid black" >'||mm.SCHEMA_USER||'</td><td style="border:1px solid black" >'||mm.last_time||'</td><td style="border:1px solid black" >'||mm.FAILURES||'</td><td style="border:1px solid black" >'||mm.BROKEN||'</td><td style="border:1px solid black" >'||mm.INTERVAL||'</td><td style="border:1px solid black" >'||mm.WHAT||'</td>';
v_html:=v_html||'</tr>';
end loop;
2.如果把SEND_EMAIL放在第一個迴圈裡面,則第一個迴圈有多少次,則傳送多少次郵件
3.如果把SEND_EMAIL放在第一個迴圈裡面的第二個迴圈,則郵件傳送的內容是第一個迴圈的最後一次的第二個迴圈裡面的所有次數,相當於第一個迴圈沒有意義,取的是第一個迴圈的最後一次
4.如果只有第一個迴圈,沒有第二個迴圈,且SEND_EMAIL放在第一個迴圈裡面,則第一個迴圈有多少次,則傳送多少次郵件,且郵件內容只有表格標題和每次迴圈的一行表格內容,即結果不會出現一行表格標題和多行表格內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2139887/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於郵件監控的問題
- 用sendmail傳送HTML格式的郵件(轉)AIHTML
- SAP BW 郵件傳送監控策略
- sqlserver JOB 監控SQLServer
- 基於Nginx+Keepalived的LB服務監控(郵件報警)Nginx
- 使用linux的mail命令傳送html格式的郵件LinuxAIHTML
- Linux發郵件磁碟空間監控Linux
- JSP與JavaMail(4)---傳送HTML格式的郵件 (轉)JSJavaAIHTML
- Linux-使用snmp監控郵件佇列Linux佇列
- 脆弱的HTML郵件模板HTML
- 郵件營銷用純文字郵件還是html郵件HTML
- Nodejs監控Apple召回計劃&郵件提醒NodeJSAPP
- zabbix監控之同時向多人郵件報警
- Linux自動下傳送HTML格式並帶附件的郵件LinuxHTML
- HTML郵件模版分享HTML
- 監控server磁碟使用率的jobServer
- html生成郵件簽名HTML
- 使用oracle job定時傳送email郵件OracleAI
- 伺服器磁碟監控指令碼分享(含報警郵件)伺服器指令碼
- Python監控程序資源佔用併傳送郵件Python
- 請教:如何解決JAVAMAIL傳送html格式郵件時的亂碼問題JavaAIHTML
- sqlserver監控指令碼_發現某個等待就發出郵件SQLServer指令碼
- 基於 HTML5 的 WebGL 3D 隧道監控HTMLWeb3D
- linux formail 傳送html郵件LinuxORMAIHTML
- Zabbix郵件預警-zabbix+grafana從零設計自己的監控平臺Grafana
- 自動監控Oracle 表空間資訊併傳送郵件指令碼Oracle指令碼
- 雅虎非法監控郵件內容 在美國面臨集體訴訟
- 基於HTML5 Canvas 實現商場監控HTMLCanvas
- oracle監控表空間,JOB,rman備份Oracle
- 高校賬號盜用監控及釣魚郵件檢測-上海交通大學
- 技術分享| 如何使用Prometheus實現系統監控報警郵件通知Prometheus
- python實現自動監控網站併傳送郵件告警薦Python網站
- Shell指令碼中傳送html郵件的方法指令碼HTML
- 於 HTML5 WebGL 的民航客機飛行監控系統HTMLWeb
- 基於 HTML5 WebGL 的 智慧樓宇能源監控系統HTMLWeb
- 基於 HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 基於HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼