久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

oracle數據庫自動發郵件怎么實現報警功能

141次閱讀
沒有評論

共計 2400 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要介紹“oracle 數據庫自動發郵件怎么實現報警功能”,在日常操作中,相信很多人在 oracle 數據庫自動發郵件怎么實現報警功能問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”oracle 數據庫自動發郵件怎么實現報警功能”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

我們之前有個需求,需要每天檢查 oracle 里的 job 是否執行成功,人工查比較麻煩,寫了一個存儲過程,定時發郵件。

一共涉及兩個存儲過程,第一個是設置發郵件給誰和發的內容。

CREATE OR REPLACE PROCEDURE CHECK_JOBS_GL
 /******
  檢查定時任務(jobs)是否執行成功,并發郵件。by guoliang 2016 年 6 月 28 日
 ******/
 V_NUMBER VARCHAR2(10);
 
BEGIN
 --  檢查 dba_jobs 表查看是否有執行錯誤的 job
 
 SELECT COUNT(1) INTO V_NUMBER FROM USER_JOBS WHERE SCHEMA_USER =  Mxxxxx  AND failures    0 
 IF V_NUMBER =  0  THEN 
 send_mail_gl( guoliang@xxxx.cn , 數據庫定時任務執行成功 , 您好,數據庫定時任務執行成功,請知悉 
 
 ELSE
 send_mail_gl( guoliang@xxxx.cn , 請注意, 數據庫定時任務執行失敗 , 您好,數據庫定時任務執行失敗,請排查 
 
 END IF;
DBMS_OUTPUT.put_line(V_NUMBER);
 
END;

第二個就是上面提到的 send_mail_gl 程序:

CREATE OR REPLACE PROCEDURE SEND_MAIL_GL(p_recipient VARCHAR2, --  郵件接收人
 p_subject VARCHAR2, --  郵件標題
 p_message VARCHAR2 --  郵件正文
 -- 下面四個變量請根據實際郵件服務器進行賦值
 v_mailhost VARCHAR2(30) :=  smtp.exmail.qq.com  --SMTP 服務器地址
 v_user VARCHAR2(30) :=  devops@xxx.cn  -- 登錄 SMTP 服務器的用戶名
 v_pass VARCHAR2(20) :=  xxxx  -- 登錄 SMTP 服務器的密碼
 v_sender VARCHAR2(50) :=  devops@xxx.cn  -- 發送者郵箱,一般與  ps_user  對應
 v_conn UTL_SMTP.connection; -- 到郵件服務器的連接
 v_msg VARCHAR2(4000); -- 郵件內容
BEGIN
 v_conn := UTL_SMTP.open_connection(v_mailhost, 25);
 UTL_SMTP.ehlo(v_conn, v_mailhost); -- 是用  ehlo()  而不是  helo()  函數
 -- 否則會報:ORA-29279: SMTP  永久性錯誤
 UTL_SMTP.command(v_conn,  AUTH LOGIN  -- smtp 服務器登錄校驗
 UTL_SMTP.command(v_conn,
 UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));
 UTL_SMTP.command(v_conn,
 UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));
 UTL_SMTP.mail(v_conn,   || v_sender ||   -- 設置發件人
 UTL_SMTP.rcpt(v_conn,   || p_recipient ||   -- 設置收件人
 --  創建要發送的郵件內容   注意報頭信息和郵件正文之間要空一行
 v_msg :=  Date:  || TO_CHAR(SYSDATE,  yyyy mm dd hh34:mi:ss) ||
 UTL_TCP.CRLF ||  From:   || v_sender ||   || UTL_TCP.CRLF ||
  To:   || p_recipient ||   || UTL_TCP.CRLF ||  Subject:   ||
 p_subject || UTL_TCP.CRLF || UTL_TCP.CRLF --  這前面是報頭信息
 || p_message; --  這個是郵件正文
 UTL_SMTP.open_data(v_conn); -- 打開流
 UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); -- 這樣寫標題和內容都能用中文
 UTL_SMTP.close_data(v_conn); -- 關閉流
 UTL_SMTP.quit(v_conn); -- 關閉連接
EXCEPTION
 WHEN OTHERS THEN
 DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
 DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);
END SEND_MAIL_GL;

到此,關于“oracle 數據庫自動發郵件怎么實現報警功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計2400字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 嫩江县| 临邑县| 观塘区| 治县。| 太康县| SHOW| 成都市| 正安县| 榆树市| 板桥市| 班玛县| 崇明县| 赤城县| 安溪县| 永清县| 鄱阳县| 星座| 高淳县| 鲁甸县| 涞源县| 平顺县| 郸城县| 镇宁| 巴中市| 荥经县| 高平市| 南城县| 百色市| 贡山| 华安县| 东丰县| 鲁山县| 大同县| 杨浦区| 龙井市| 河北区| 阆中市| 甘德县| 依安县| 娄底市| 张家口市|