Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MonTiLLa

View dinâmica para verificar tempo de conexão de sessões

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.