DECLARE
dbid NUMBER;
inst_id NUMBER;
bid NUMBER;
eid NUMBER;
db_unique_name VARCHAR2(30);
host_name VARCHAR2(64);
starttime CHAR (5);
endtime CHAR (5);
v_from VARCHAR2 (80) := 'frommail@olegon.ru';
v_recipient VARCHAR2 (80) := 'tomail@olegon.ru';
v_mail_host VARCHAR2 (30) := '10.6.170.35';
v_mail_conn UTL_SMTP.connection;
BEGIN
starttime := '09:00';
endtime := '18:00';
SELECT MIN (snap_id), MAX (snap_id)
INTO bid, eid
FROM dba_hist_snapshot
WHERE TO_CHAR (begin_interval_time, 'hh24:mi') >= starttime
AND TO_CHAR (end_interval_time, 'hh24:mi') <= endtime
AND TRUNC (begin_interval_time) = TRUNC (SYSDATE -1)
AND TRUNC (end_interval_time) = TRUNC (SYSDATE -1);
SELECT dbid, inst_id, db_unique_name
INTO dbid, inst_id, db_unique_name
FROM gv$database;
SELECT host_name INTO host_name
FROM v$instance;
--v_from := db_unique_name || '@' || host_name;
v_mail_conn := UTL_SMTP.OPEN_CONNECTION (v_mail_host, 25);
UTL_SMTP.HELO (v_mail_conn, v_mail_host);
UTL_SMTP.MAIL (v_mail_conn, v_from);
UTL_SMTP.RCPT (v_mail_conn, v_recipient);
UTL_SMTP.OPEN_DATA( v_mail_conn );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'From:' || v_from || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'To:' || v_recipient || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'Subject: '
|| 'AWR Report of database ' || db_unique_name || ' '
|| (SYSDATE -1) || ' ' || starttime || '-' || endtime || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn,
'Content-Type: text/html; charset=utf8'
|| UTL_TCP.CRLF || UTL_TCP.CRLF );
FOR c1_rec IN
(SELECT output
FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(dbid,
inst_id, bid, eid, 8 )))
LOOP
UTL_SMTP.WRITE_DATA (v_mail_conn, c1_rec.output || UTL_TCP.CRLF );
END LOOP;
UTL_SMTP.CLOSE_DATA (v_mail_conn);
UTL_SMTP.QUIT (v_mail_conn);
EXCEPTION
WHEN UTL_SMTP.TRANSIENT_ERROR OR UTL_SMTP.PERMANENT_ERROR
THEN
RAISE_APPLICATION_ERROR (-20000, 'Unable to send mail: ' || SQLERRM);
END;
DECLARE
dbid NUMBER;
inst_id NUMBER;
bid1 NUMBER;
eid1 NUMBER;
bid2 NUMBER;
eid2 NUMBER;
db_unique_name VARCHAR2(30);
host_name VARCHAR2(64);
starttime CHAR (5);
endtime CHAR (5);
v_from VARCHAR2 (80) := 'frommail@olegon.ru';
v_recipient VARCHAR2 (80) := 'tomail@olegon.ru';
v_mail_host VARCHAR2 (30) := '10.6.170.35';
v_mail_conn UTL_SMTP.connection;
BEGIN
starttime := '09:00';
endtime := '18:00';
SELECT MIN (snap_id), MAX (snap_id)
INTO bid1, eid1
FROM dba_hist_snapshot
WHERE TO_CHAR (begin_interval_time, 'hh24:mi') >= starttime
AND TO_CHAR (end_interval_time, 'hh24:mi') <= endtime
AND TRUNC (begin_interval_time) = TRUNC (SYSDATE -1)
AND TRUNC (end_interval_time) = TRUNC (SYSDATE -1);
SELECT MIN (snap_id), MAX (snap_id)
INTO bid2, eid2
FROM dba_hist_snapshot
WHERE TO_CHAR (begin_interval_time, 'hh24:mi') >= starttime
AND TO_CHAR (end_interval_time, 'hh24:mi') <= endtime
AND TRUNC (begin_interval_time) = TRUNC (SYSDATE -2)
AND TRUNC (end_interval_time) = TRUNC (SYSDATE -2);
SELECT dbid, inst_id, db_unique_name
INTO dbid, inst_id, db_unique_name
FROM gv$database;
SELECT host_name INTO host_name
FROM v$instance;
--v_from := db_unique_name || '@' || host_name;
v_mail_conn := UTL_SMTP.OPEN_CONNECTION (v_mail_host, 25);
UTL_SMTP.HELO (v_mail_conn, v_mail_host);
UTL_SMTP.MAIL (v_mail_conn, v_from);
UTL_SMTP.RCPT (v_mail_conn, v_recipient);
UTL_SMTP.OPEN_DATA( v_mail_conn );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'From:' || v_from || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'To:' || v_recipient || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn, 'Subject: '
|| 'AWR Diff Report of database ' || db_unique_name || ' '
|| (SYSDATE -1) || ' ' || starttime || '-' || endtime || UTL_TCP.CRLF );
UTL_SMTP.WRITE_DATA ( v_mail_conn,
'Content-Type: text/html; charset=utf8'
|| UTL_TCP.CRLF || UTL_TCP.CRLF );
FOR c1_rec IN
(SELECT output
FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML(dbid,
inst_id, bid1, eid1, dbid,inst_id, bid2, eid2 )))
LOOP
UTL_SMTP.WRITE_DATA (v_mail_conn, c1_rec.output || UTL_TCP.CRLF );
END LOOP;
UTL_SMTP.CLOSE_DATA (v_mail_conn);
UTL_SMTP.QUIT (v_mail_conn);
EXCEPTION
WHEN UTL_SMTP.TRANSIENT_ERROR OR UTL_SMTP.PERMANENT_ERROR
THEN
RAISE_APPLICATION_ERROR (-20000, 'Unable to send mail: ' || SQLERRM);
END;