Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 2 anos, 12 meses atrás por Avatar de José Laurindo ChiappaJosé Laurindo Chiappa.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #147670
    Avatar de CLAUDENIL DIAS PRADOCLAUDENIL DIAS PRADO
    Participante

      Pessoal estou com seguinte caso, no meu banco qdo rodo por exemplo o script abaixo, acontece uma enorme DEMORA e não consigo rodar outros selects até o script abaixo seja finalizado, não sei se tem ligação mas isso aconteceu depois que apliquei um REBUILD no banco e rodei as seguintes analises de estatiticas:execute dbms_stats.gather_system_stats(), essa  exec dbms_stats.GATHER_FIXED_OBJETCTS_STATS() e esta  EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA(‘SO’,’COMPUTE’);

      ================SCRIPT============================

      select * from LANC

      where codigo=’1′ and  STATUS=’0′

      AND DATAEMITIDO BETWEEN ’01/01/2019′ AND ’30/04/2021′

      ============================================

      Um detalhe rodo o script acima via SQL DEVELOPER (demorando 200 segundos), e como disse qdo tento rodar outro select o mesmo não é executado ate que o script acima seja devidamente finalizado.

      #147674
      Avatar de CLAUDENIL DIAS PRADOCLAUDENIL DIAS PRADO
      Participante

        Pessoal um  detalhe, quando rodo o comando:
        EXEC DBMS_STATS.GATHER_TABLE_STATS(‘RM’, ‘FLAN’, cascade=>true);

        A cosnulta cai de 200 segundos para menos de 3 segundos, mas depois o problema volta aconteceer na mesma tabela e tenho que novamente rodar o DBMS_STATS na tabela aqui citada.

         

        Obrigado

        #147677
        Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
        Moderador

          Blz ? Então, primeira coisa no SQL DEVELOPER o default é uma sessão COMPARTILHADA, onde vc só pode executar um novo comando após o comando em execução terminar : vc tentou executar o tal SQL numa sessão DEDICADA, com Shift-N , ou executar via sqlplus ?
          Segunda coisa, vc SABE o que está fazendo quando sai coletando as mais diferentes esatísticas ? Por exemplo, GATHER_FIXED_OBJECT_STATS serve para coletar estatísticas de objetos INTERNOS do database , então se esse objeto LANC ** não é ** um objeto interno/parte do dicionário de dados, vc Não Obtém Coisa alguma de bom com isso…
          Minha recomendação final então é : obtenha o plano de Execução REAL EXTENDIDO cfrme https://blogs.oracle.com/optimizer/how-to-generate-a-useful-sql-execution-plan mostra : as colunas A-ROWS e E-ROWS servem pra te mostrar se a qtdade Estimada de linhas a processar está Equivalente à qtdade real vinda da execução….

          Finalmente : o conceito de estatísticas de CBO é que elas servem, entre outras coisas, para Indicar volumes de dados, qtdade de linhas, índices que podem ser usados, etc : em princípio, ENQUANTO não houverem DMLs inserindo/atualizando/removendo dados, o Plano de Execução não deveria mudar.. Quando vc diz que “pouco tempo depois” o tempo de execução ‘volta a ficar ruim’ plz nos conte : HOUVERAM ou NÂO DMLs na tal tabela LANC ?? E O PRINCIPAL DE TUDO : qual plano de execução vc obtém na execução ‘rápida’ e na execução ‘lenta’ ???

          []s

          Chiappa

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress