[ОТВЕТИТЬ]
Опции темы
03.07.2016 16:09  
OlegON
SQL код:
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 bideid
     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 dbidinst_iddb_unique_name
     INTO dbid
inst_iddb_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_host25);
   
UTL_SMTP.HELO (v_mail_connv_mail_host);
   
UTL_SMTP.MAIL (v_mail_connv_from);
   
UTL_SMTP.RCPT (v_mail_connv_recipient);
   
UTL_SMTP.OPEN_DATAv_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_idbideid)))
   
LOOP
      UTL_SMTP
.WRITE_DATA (v_mail_connc1_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 bid1eid1
     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 bid2eid2
     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 dbidinst_iddb_unique_name
     INTO dbid
inst_iddb_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_host25);
   
UTL_SMTP.HELO (v_mail_connv_mail_host);
   
UTL_SMTP.MAIL (v_mail_connv_from);
   
UTL_SMTP.RCPT (v_mail_connv_recipient);
   
UTL_SMTP.OPEN_DATAv_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_idbid1eid1dbid,inst_idbid2eid2 )))

   
LOOP
      UTL_SMTP
.WRITE_DATA (v_mail_connc1_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
 
 
Опции темы



Часовой пояс GMT +3, время: 21:27.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.