GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

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');
Share

You may also like...

1 Response

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