Showing posts with label awr. Show all posts
Showing posts with label awr. Show all posts

Nov 22, 2019

AWR to text with filter and sections



Hi,

 here bring for you a new script for get information about AWR performance, but right now applying certain filter for review only sections like: "Top Timed Foreground Events", "Database Summary", etc.. For my script i use the package DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_TEXT with some aggregate functions (warning before you execute this script you should care about your license, you need diagnostic pack License )

source script:
https://github.com/felipower/scripts_oracle/blob/master/FDB_Oracle_AWR_summary_filtered.sql

Example (screenshots for execution)


Enjoy the script and share it.

Sep 15, 2016

Obtener crecimiento de una base de datos Oracle usando la vista dba_hist_tbspc_space_usage

Amigos dejo un tips de mucha utilidad que me han preguntado bastante : ¿Cómo obtener el crecimiento de la base de datos Oracle desde 10g en adelante usando AWR?

Para realizar esto disponen de la vista siguiente:
dba_hist_tbspc_space_usage

Con dicha vista se puede obtener el crecimiento de la base de datos. Ojo que solo funcionará si tiene AWR prendido. Lo que pueden visualizar es esto (esto se visualiza desde la planilla Perfsheet del Sr. Tanen la cual ocupo bastante para mis análisis de performance y de base de datos, http://www.tanelpoder.com)



La query con la cual realizan ese reporte es la siguiente:

select * from (with group1 as (select /*+ materialize parallel(t,2) ordered */
   to_char(s.begin_interval_time,'yyyy-mm-dd') get_date,
   v.name ts_name,
(round(max((t.tablespace_size*d.block_size))/1024/1024/1024,2)) size_gb,
(round(max((tablespace_usedsize*d.block_size))/1024/1024/1024,2)) used_gb
from
   dba_hist_tbspc_space_usage t,
   v$tablespace               v,
   dba_hist_snapshot          s,
   dba_tablespaces            d
where
   t.tablespace_id=v.ts#
AND v.name=d.tablespace_name
and
   t.snap_id=s.snap_id and s.BEGIN_INTERVAL_TIME > sysdate - 180
group by to_char(s.begin_interval_time,'yyyy-mm-dd'), v.name)
select
   get_date datetime,
   ts_name tablespace_name,
   sum(size_gb) total_alloc_gb,
   sum(used_gb) real_utilizado_gb
from
   group1
group by get_date,ts_name
order by get_date desc )



May 6, 2016

Oracle - Automatizar AWR y enviar por correo electronico desde ambiente unix

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: