Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 17 anos, 4 meses atrás por Ricardo Portilho Proni.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #83339
    Manoel872
    Participante

      Boa tarde,

      Estou tendo um problema com uma determinada query que gerei, após fazer uma alteração nela adicionando um Sum(campo) Over (Partition By (campo)) minha query travou e não terminava mais, porém o pior não chegou a ser isso, após de fazer um kill na session deste SPID o processo ficava como Killed e não saia mais e o Uso do CPU do meu servidor ficou 50% direto tentei disconectar a session pausar e etc, porém nenhuma das tentativas com exito, então resolvi para o servidor do oracle o qual não conseguiu ser parado ficando no status de Stoping, portando fui obrigado a fianalizar o processo do oracle via taskmngr, estou usando uma versão do Oracl 9i + Win 2003 server, alguém ae sabe o que pode esta ocorrendo e também me informa quando o ocorre tal problema exite uma forma mais simples de resolve-lo sem ter q para o serviço do oracle?

      Manoel Ribeiro.

      #83340
      Ricardo Portilho Proni
      Participante

        Existe uma explicação para este caso sim, mas só daria para saber na hora.

        Ao adicionar o SUM, você deve ter usado espaço na Tablespace TEMPorária.
        Ao cancelar a execução do SELECT, o Oracle teve que se recuperar desta criação, o que levaria tempo.

        Já que você sabe que o SUM é a causa de lentidão de sua Query, aumente seu PGA, isto vai te ajudar.

        Se precisar parar o Oracle novamente, em um caso semelhante, use o SQL*Plus:
        SQL> SHUTDOWN ABORT;

        Não use os serviços do Windows ou EM, o SQL*Plus é o mais confiável..

        #83341
        Manoel872
        Participante

          Ricardo,

          O estranho que deixe o processo rodando por volta de 4 horas após a tentativa de dar um killed e ele nao saiu…

          Grato pela ajuda.

          #83344
          Ricardo Portilho Proni
          Participante

            Se quiser fazer de novo, abra outra sessão e execute o SELECT abaixo, vai te mostrar o que esta sessão está esperando.

            SELECT W.SID, W.EVENT, W.SECONDS_IN_WAIT FROM V$SESSION_WAIT W WHERE W.EVENT NOT LIKE ‘SQL*Net%’ ORDER BY W.SECONDS_IN_WAIT, W.SID;

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