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,
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.