MigraTI - Soluções em banco de dados

quinta-feira, 28 de julho de 2011

GUOB Hidden Features

Bom irei começar a pegar o material sobre o GUOB e tentar, só tentar passar mais ou menos o que houve nas palestras.
Vocês podem cadastrar no GOUB (o que eu recomendo) e baixar todas as palestras por si só.

Mesmo assim vou postar algumas coisas que penso ser interessante.

Sobre a palestra do Graham wood vou dividila em duas partes e a primeira segue abaixo

Hidden Features.

SQL_TRACE.

Como todos sabem o sql_trace é gratuito pela oracle, mas há algumas funções diferentes no 11G que não existiam no 10G ou no 9i ou sofrerão mudanças nas próximas versões.

Vamos la.
DBMS_MONITOR.SESSION_TRACE

Serve para efetuar trace de uma seção.
Habilita:
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE();
Desabilita:
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE();

Você tem varias opções a mais para utilizar esta ferramenta, conforme abaixo.
DBMS_MONITOR.SESSION_TRACE_ENABLE(
      session_id IN BINARY_INTEGER DEFAULT NULL,
      serial_num IN BINARY_INTEGER DEFAULT NULL,
      waits IN BOOLEAN DEFAULT TRUE,
      binds IN BOOLEAN DEFAULT FALSE,
      plan_stat IN VARCHAR2 DEFAULT NULL);



ALTER SESSION SET EVENTS

Serve para habilitar trace individual de apenas um ou mais comandos.
Este vou por na pratica, acho que fica mais fácil de entender.

sselect sql_id, sql_text
from v$sql
where sql_text = 'select instance_name from v$instance';

SQL_ID        SQL_TEXT
————
————————— ———————————————————————————————————
17d40vwcct4g6 select instance_name from v$instance



alter session set events 'sql_trace [sql:17d40vwcct4g6]';

SQL> select instance_name from v$instance

instance_name
————————————————
lana

SQL> alter session set events 'sql_trace [sql:17d40vwcct4g6] off';

Session altered.
and here is output:
PARSING IN CURSOR #1 len=18 dep=0 uid=0 oct=3 lid=0 tim=1237831879652913 hv=942515969 ad=’e5f92ab0′ sqlid=’17d40vwcct4g6′
...



Abaixo é o spoll do trace.



DBMS_XPLAN
Este foi na minha opinião o que mais me chamou atenção.

Conforme palavras de Graham wood o explain plan convencional ({ORACLE_HOME}/rdbms/admin/dbmsxpln.sql) esta obsoleto

Então vamos a pratica.

SQL> explain plan for
  2  select instance_name from v$instance;

Explained.

SQL> SELECT * FROM TABLE(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------
Plan hash value: 2848324471

-------------------------------------------------------------------------------------
| Id  | Operation             | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |             |   100 |  5700 |     0   (0)| 00:00:01 |
|   1 |  MERGE JOIN CARTESIAN |             |   100 |  5700 |     0   (0)| 00:00:01 |
|   2 |   MERGE JOIN CARTESIAN|             |     1 |    57 |     0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FULL   | X$KSUXSINST |     1 |    23 |     0   (0)| 00:00:01 |
|   4 |    BUFFER SORT        |             |     1 |    34 |     0   (0)| 00:00:01 |
|*  5 |     FIXED TABLE FULL  | X$KVIT      |     1 |    34 |     0   (0)| 00:00:01 |
|   6 |   BUFFER SORT         |             |   100 |       |     0   (0)| 00:00:01 |
|   7 |    FIXED TABLE FULL   | X$QUIESCE   |   100 |       |     0   (0)| 00:00:01 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("KS"."INST_ID"=USERENV('INSTANCE'))
   5 - filter("KVITTAG"='kcbwst')



Varias outras opções podem ser setadas neste package, mas a principal é esta.



A Próxima parte da palestra eu falo amanhã pois acho que muda um pouco o foco, continua sendo sobre performance, mas já muda para a parte de estatísticas.

 PS: Após dez anos de blogspot, descobri como organizar os textos em SQL. \o/


Precisando de Consultoria, monitoramento ou analise em Banco de dados? Clique aqui. 

Nenhum comentário:

Postar um comentário