Pular para o conteúdo

SELECT lento no Oracle

Você tem que melhorar a performance de um SQL, mas não têm experiência suficiente para saber se um índice é necessário ou não, se precisa atualizar as estatísticas, ou renovar o plano de execução?

Seus problemas acabaram!

No Oracle 10g (mesmo o Express Edition) e 11g, você pode usar o SQL Adivisor.
Eu prefiro utilizar no SQL*Plus, e não no Enterprise Manager.

Primeiro, você irá precisar do SQL_ID que quer analisar. Você pode pega-lo da V$SQL com um SELECT como esse:

SQL> SELECT SQL_ID, SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE 'SELECT col1, col2 FROM tabela_gigante %';

Com o SQL_ID, execute estes procedimentos (troque o SQL_ID abaixo pelo que quer analisar):

DECLARE
RET_VAL VARCHAR2(4000);
BEGIN
RET_VAL := DBMS_SQLTUNE.CREATE_TUNING_TASK(SQL_ID => 'gxtg1pzkt5fm5', SCOPE => DBMS_SQLTUNE.SCOPE_COMPREHENSIVE, TIME_LIMIT => 60, TASK_NAME => 'Portilho Tuning Task', DESCRIPTION => 'Portilho Tuning Task');
END;
/


EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK('Portilho Tuning Task');
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('Portilho Tuning Task') RECOMMENTATION FROM DUAL;
SELECT DBMS_SQLTUNE.SCRIPT_TUNING_TASK('Portilho Tuning Task') RECOMMENTATION FROM DUAL;

Para excluir o Task:

EXEC DBMS_SQLTUNE.DROP_TUNING_TASK('Portilho Tuning Task');
Ricardo Portilho Proni

Ricardo Portilho Proni

Com 20 anos de experiência profissional, Oracle ACE Member – eleito pela Oracle Corporation um dos maiores especialistas do mundo em Oracle Database- Trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil. Certificado em Oracle, SQL Server, DB2, MySQL, Sybase e Websphere. Conselheiro do GPO e do GUOB, palestrante do ENPO, GUOB Tech Day e Oracle Open World, escritor da Revista SQL Magazine e Instrutor na Nerv.

Comentário(s) da Comunidade

  1. Avatar de Rodrigo Almeida

    Olá Ricardo,

    Ficou bacana os post que publicou sobre performance no banco de dados, acho que as idéias que passou dá para clarear bastante quando se deparamos com esses tipos de problemas. Parábens. Continue mantendo esse nível.

    Abraços,

    Rodrigo Almeida

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress