Armo una consulta bien sencilla, que obviamente no consumirá mucho y no quedará registrada en una base con una minima actividad:
rop@DESA11G> select 'TEST COLORED SQL' from dual;
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
Buscamos el sqlid asociado:
rop@DESA11G> set line 120
rop@DESA11G> select sql_text,sql_id from v$sqlstats where sql_text like '%TEST COLORED SQL%';
SQL_TEXT
------------------------------------------------------------------------------------------------------------------------
SQL_ID
-------------
select sql_text,sql_id from v$sqlstats where sql_text like '%TEST COLORED SQL%'
f2c39t3uct6vp
select 'TEST COLORED SQL' from dual
0fm46pj2s9vux
Una vez obtenido el sqlid voy a marcarla o colorearla de la siguiente forma:
rop@DESA11G> ed
Escrito file afiedt.buf
1 begin
2 dbms_workload_repository.add_colored_sql(sql_id => '0fm46pj2s9vux'
3 );
4* end;
rop@DESA11G> /
Procedimiento PL/SQL terminado correctamente.
Ahora tomo un snapshot y luego ejecuto 3 veces la sentencia coloreada:
rop@DESA11G> begin
2 dbms_workload_repository.create_snapshot;
3 end;
4 /
Procedimiento PL/SQL terminado correctamente.
rop@DESA11G> select 'TEST COLORED SQL' from dual;
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
rop@DESA11G> /
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
rop@DESA11G> /
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
Tomo otro snapshot luego de aproximadamente 15' y veo si aparece:
rop@DESA11G> begin
2 dbms_workload_repository.create_snapshot;
3 end;
4 /
Procedimiento PL/SQL terminado correctamente.
rop@DESA11G> select executions_delta,cpu_time_delta,elapsed_time_delta from dba_hist_sqlstat
2 where snap_id = (select max(snap_id) from dba_hist_sqlstat)
3 and sql_id = '0fm46pj2s9vux';
EXECUTIONS_DELTA CPU_TIME_DELTA ELAPSED_TIME_DELTA
---------------- -------------- ------------------
3 0 0
La sentencia apareció y se ve que consumió tan poco que no se llegó a registrar tiempo
Para desmarcarla hago lo siguiente:
rop@DESA11G> ed
Escrito file afiedt.buf
1 begin
2 dbms_workload_repository.remove_colored_sql(sql_id => '0fm46pj2s9vux');
3* end;
rop@DESA11G> /
Procedimiento PL/SQL terminado correctamente.
Repito el proceso pero sin la consulta "coloreada":
rop@DESA11G> ed
Escrito file afiedt.buf
1 begin
2 dbms_workload_repository.create_snapshot;
3* end;
rop@DESA11G> /
Procedimiento PL/SQL terminado correctamente.
rop@DESA11G> select 'TEST COLORED SQL' from dual;
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
rop@DESA11G> /
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
rop@DESA11G> /
'TESTCOLOREDSQL'
----------------
TEST COLORED SQL
rop@DESA11G> begin
2 dbms_workload_repository.create_snapshot;
3 end;
4 /
Procedimiento PL/SQL terminado correctamente.
rop@DESA11G> ed
Escrito file afiedt.buf
1 select executions_delta,cpu_time_delta,elapsed_time_delta from dba_hist_sqlstat
2 where snap_id = (select max(snap_id) from dba_hist_sqlstat)
3* and sql_id = '0fm46pj2s9vux'
rop@DESA11G> /
ninguna fila seleccionada
rop@DESA11G>
Como se observa ahora no se registró en AWR, ya que como se vió es una sentencia con consumo nulo y que obviamente no califica entre las Top para ser persistida en el repositorio.
No hay comentarios:
Publicar un comentario