Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #95692
    mpvargas
    Participante

      Caros Amigos,
      Estou tentando schedular um processo para matar sessões inativas… pretendo colocar pra rodar de madrugada, tipo 5 da manhã, e matar as sessões que estejam inativas por mais de 4 horas, por exemplo…
      Estou implementando o seguinte

      SQL
      BEGIN FOR matarSessoesSniped IN
      (select ‘alter system kill session ”’||sid||’,’||serial#||”’;’ AS matarSessao
      from v$session where status in (‘SNIPED’,’INACTIVE’) AND seconds_in_wait > 14400
      ) LOOP

      EXECUTE IMMEDIATE matarSessoesSniped.matarSessao;

      END LOOP;
      END;

      A minha dúvida é se crio uma procedure ou coloco num job…
      Gostaria de uma ajuda por favor

      #95693
      Avatar photoLeonardo Litz
      Participante

        Cria uma procedure, busque sempre estruturar para conseguir reutilizar seus códigos.

        Criando uma procedure, caso você necessite executar ao longo do dia é só usa-la.

        Vlw Leonardo Litz

        #95695
        fabiommiranda
        Participante

          cara eu utilizo o crontab para fazer este serviço .

          abs

          #95696
          Avatar photoLeonardo Litz
          Participante

            Então Fábio.
            Não vejo problema nisso, vc já esta conectando no banco de dados para abrir o bloco anonimo, certo? Basta você mudar a sua BAT para ao inves de executar o bloco anonimo, chamar a procedure.

            Vlw Leonardo Litz

            #95698
            mpvargas
            Participante

              OK Amigos,
              Obrigado pela ajuda.

              #95711
              jspaulonci
              Participante

                Mpvargas, tome cuidado em relação ao perfil da aplicação, se ela trabalha ou não com pool de conexão, digo isso para nenhum chefe vir encher o seu saco pelo fato da aplicação ficar recebendo mensagem de erro.
                Na sua query eu implementaria por segurança a clausua where ou and para username is not null, com isso você isola por completo a possibilidade de pegar uma sessão do sys ou um processo background, e também , e no campo status também colocaria a opção de KILLED.

                Sua query ficaria mais ou menos assim

                select ‘alter system kill session ”’||sid||’,’||serial#||”’;’ AS matarSessao
                from v$session where status in (‘SNIPED’,’INACTIVE’,’KILLED’) AND seconds_in_wait > 14400
                and username is not null

                Abraços

                #95724
                mpvargas
                Participante

                  OK
                  Valeu Joao Paulo
                  Obrigado pela dica.

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