A más de alguien le han solicitado si es posible automatizar el envÃo de un reporte AWR por mail. Bueno esto se puede desarrollar de copiosas maneras. Esta es tan sólo una de ellas.
Esto se basa en dos scripts:
awr.sh -> el script que envia el correo
awr.sql -> el PLSQL que arma el archivo HTML con el reporte.
Ahora a continuación el contenido de cada archivo. Como se podrán dar cuenta esto lo desarrollé para un cliente que me solicito esto. La idea era enviar el contenido del reporte AWR cada 2 horas, por lo que el PLSQL muestra el rendimiento de la base durante las últimas dos horas. Eso lo pueden modificar como gusten en la clausula where del PL/SQL
awr.sh
#!/bin/ksh
# @author Felipe Donoso, felipe@felipedonoso.cl
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/UMP/102_64
export LIBPATH=/usr/lib:/lib:/usr/sap/UMP/SYS/exe/run:/oracle/UMP/102_64/lib
export PATH=/oracle/UMP/102_64/bin:.:/oracle/UMP:/usr/sap/UMP/SYS/exe/run:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin:/oracle/UMP/102_64/OPatch
script=/oracle/UMP/scripts/Mng_Reporte_AWR_CLMDB/awr.sql
reporte=/oracle/UMP/scripts/Mng_Reporte_AWR_CLMDB/awr.html
sqlplus -s "sysibm/ibm655@10.22.1.48:1521/CLMDB" <<EOF
set feedback off
set SERVEROUTPUT ON size unlimited
spool $reporte
@$script
spool off
exit;
EOF
uuencode $reporte Reporte_AWR_$(date +%Y%m%d_%H%M).html | mailx -s "SMU - Reporte automatizado AWR CLMDB" fdonoso@cl.ibm.com
awr.sql
DECLARE
dbid NUMBER;
inst_id NUMBER;
bid NUMBER;
eid NUMBER;
db_unique_name VARCHAR2(30);
host_name VARCHAR2(64);
BEGIN
SELECT MIN (snap_id), MAX (snap_id)
INTO bid, eid
FROM dba_hist_snapshot
WHERE begin_interval_time > (sysdate-2/24)
;
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;
FOR c1_rec IN
(SELECT output FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(dbid,inst_id, bid, eid, 8 )))
--(SELECT output FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(dbid,inst_id, bid, eid, 8 )))
LOOP
DBMS_OUTPUT.PUT_LINE(c1_rec.output);
END LOOP;
END;
/
En el el script de awr.sh se invoca en la variable $script que apunta a la ruta PLSQL. También al final de dicho archivo podrán ver que se utiliza uuencode para enviar el archivo como reporte adjunto (esto ocupa mailx pero pueden ocupar lo que ustedes deseen).
sólo bastarÃa con editar las variables de ambiente del archivo awr.sh y nada más ejecutarlo llegará un correo de este tipo:
Al abrir el archivo adjunto que llega por correo podrán ver lo siguiente:
No comments:
Post a Comment