MonTiLLa 1 Denunciar post Postado Fevereiro 7, 2007 Opa comunidade,Estou precisando de alguma view dinâmica para verificar o tempo que uma sessõao no banco de dados está ativa, ou seja, caso uma sql esteja muito tempo sendo executada verificar o tempo que esta sessão está em atividade... :unsure: Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Fevereiro 8, 2007 Brunão, Precisa do tempo de conexão por sessão ou por instrução da sessão? Abraços, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
MonTiLLa 1 Denunciar post Postado Fevereiro 9, 2007 Grandee Rodrigo, Seguinte, estou precisando por instrução da sessão... Estou tendo problemas com o gerencimanto de recursos e vou fazer uma rotina por dicionario de dados junto com Job do Oracle pra resolver meu problema por enquanto que não resolvo o problema do gerenciamente de recursos do Oracle. Vlw ai pela ajuda!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
MonTiLLa 1 Denunciar post Postado Fevereiro 9, 2007 Rodrigo, Dei umas fuçadas aki no dicionário de dados e achei!!!! hehehehe SELECT s.sid, wait_time, seconds_in_wait, state FROM v$session s, v$session_event e WHERE s.sid = e.sid AND s.username = '' AND e.event = 'SQL*Net message from client'; Neste exemplo mostra o SID, o tipo de waiting se está em espera(0) ou processando (-1) e o estado, que pode ser WAITING, WAITED SHORT TIME... Mas valeu ai pelo ajuda!!! Abracos! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Fevereiro 9, 2007 Fala Brunão,Eu uso o select abaixo para pegar sessões com mais de 2 horas de execução na INSTRUÇÃO! Isso era para algumas versões como 8 e 9. No 10G, usando o RESOURCE MANAGER já consegue fazer a mesma coisa, segue: SELECT DISTINCT 'kill -9' A, NVL(P.SPID,X.SPID) OS_PID, '#' B, S.USERNAME, S.OSUSER, S.MODULEFROM V\$PX_PROCESS X, V\$SESSION S, V\$PROCESS PWHERE S.PADDR = P.ADDR(+) AND S.SID = X.SID(+) AND S.AUDSID != USERENV('SESSIONID') AND S.USERNAME IS NOT NULL AND NVL(P.SPID,X.SPID) IS NOT NULL AND NVL(TRIM(S.USERNAME),'Null') = UPPER('$ORAUSER') AND TRIM(S.OSUSER) = 'SYSTEM' AND TRIM(S.MODULE) = 'aspnet_wp.exe' AND TRUNC(S.LAST_CALL_ET/3600) >= 2 -- horas; Vou responder seu tópico do Resource Manager ainda... Abraços, :mellow: Compartilhar este post Link para o post Compartilhar em outros sites
MonTiLLa 1 Denunciar post Postado Fevereiro 12, 2007 Beleza Rodrigoo!!!Fiz um script simples para colocar num JOB e consegui resolver meu problema, se alguém por acaso tiver o mesmo problema e necessitar vai o script abaixo: ---- SCRIPT PARA MATAR AS SESSOES COM TEMPO DE PROCESSAMENTO MAIOR QUE 3MIN-- OBS.: ENTRE O PERIODO DE 7:00 DA MANHA E 20H NAO E POSSIVEL GERAR OS RELATORIOS CARREGADOS-- DECLARE var_dataAtual number := To_Number(to_char(SYSDATE,'hh24')||to_char(SYSDATE,'mi'));BEGIN Dbms_Output.Put_Line('dataAtual: '||var_dataAtual); IF (var_dataAtual >= 700 AND var_dataAtual < 8000) THEN Dbms_Output.Put_Line('Não é possível gerar relatórios neste horário!!!'); FOR matarSessoes IN ( SELECT s.sid AS sid, wait_time, seconds_in_wait, state, 'ALTER SYSTEM KILL SESSION '''||s.SID||','||s.SERIAL#||'''' AS instrucaoSQL FROM v$session s, v$session_event e WHERE s.sid = e.sid-- AND s.username = '' AND e.event = 'SQL*Net message from client' AND s.wait_time = -1 AND s.seconds_in_wait >= 170) LOOP EXECUTE IMMEDIATE matarSessoes.instrucaoSQL; Dbms_Output.Put_Line(matarSessoes.instrucaoSQL); Dbms_Output.Put_Line('Matando o relatório de SID: '||matarSessoes.sid); END LOOP; ELSE Dbms_Output.Put_Line('Neste horário é possível gerar os relatórios do sistema!!!'); END IF;END;/ :rolleyes: Compartilhar este post Link para o post Compartilhar em outros sites