Pular para o conteúdo

Fóruns SQL e PL/SQL Problema com instrução SELECT Problema com instrução SELECT

#104535
joseniz
Participante

    O aumento da TEMP é óbvio já que o rdbms não consegue terminar a operação.

    A operação de ordenação será a última coisa a ser feita, supondo que cada registro tenha 2K não será usado mais que 15M de TEMP para 7939 registros.

    Outras operações como GROUP BY explicito (ou implicito via DISTINCT), HASH JOIN, MERGE JOINS e tabelas temporárias globais tambem consomem espaço na TEMP ts.

    O maior consumo de TEMP deve estar na resolução da query, nas operações de HASH/MERGE JOIN. Identifique se realmente são a causa fazendo um EXPLAIN da query…. Verifique se a função usada na lista de campos não consume ainda mais TEMP.

    Identifique a sessão e quanto de TEMP é consumido com a query abaixo.
    SELECT b.TABLESPACE
    , b.segfile#
    , b.segblk#
    , ROUND ( ( ( b.blocks * p.VALUE ) / 1024 / 1024 ), 2 ) size_mb
    , a.SID
    , a.serial#
    , a.username
    , a.osuser
    , a.program
    , a.status
    FROM v$session a
    , v$sort_usage b
    , v$process c
    , v$parameter p
    WHERE p.NAME = 'db_block_size'
    AND a.saddr = b.session_addr
    AND a.paddr = c.addr
    ORDER BY b.TABLESPACE
    , b.segfile#
    , b.segblk#
    , b.blocks;