Antes de responder, dica : NÃO deixe de fazer também a checagem de processos consumidores de CPU pelo Sistema Operacional também, pois nesse caso até mesmo um eventual processo não-Oracle que esteja interferindo vc pega... Detalhe, única coisa é que no win as conexões no bd Oracle são threads dum único processo oracle.exe, e na sua infinita sabedoria a m$ não disponibiliza (ao menos até nas versões que usei) uma tool pra listar consumo de CPU por threads, vc TEM que instalar/baixar alguma, uma conhecida é a PsList em http://www.sysinternals.com/ProcessesAndThreadsUtilities.html . Sabendo-se o pid, aí basta se consultar via query tipo :
select p.spid, s.sid, s.serial#, s.program, s.machine, s.logon_time from sys.v_$process p, sys.v_$session s where s.paddr = p.addr and p.spid in (listaseparadaporvírguladospids); que vc relaciona o pid do SO com a sessão Oracle. Agora sim respondendo pra fazer dentro do banco : infos do tipo ficam registradas na v$sesstat (enquanto a sessão não disconectar!!), a consulta poderia ser algo tipo : select p.spid PID, s.sid, s.username, decode(nvl(p.background,0),1,bg.description, s.program ) program, ss.value/100 "CPU (segs)", physical_reads "disk_io (Blks)" from v$process p, v$session s, v$sesstat ss, v$sess_io si, v$bgprocess bg where s.paddr=p.addr and ss.sid=s.sid and ss.statistic#=12 and si.sid=s.sid and bg.paddr(+)=p.addr order by 5 desc; Execute várias vezes esse script, com breves intervalos entre cada execução, é isso... Talvez vc queira guardar os resultados num arquivo (via SPOOL), ou alterar pra guradra os result numa tabela sua, aí é com vc. ==> Note apenas que há duas maneiras de se queimar CPU num dado sistema : ou a sessão está pedindo operações complexas que usam montes de CPU, ou (o caso mais sutil) a sessão está fazendo operações simples, que requerem pouco, MAS está fazendo um monte louco delas, tipo, pede uma pequena agora, depois outra pequena daqui a pouquinho, depois outra, outra.... Esse segundo caso normalmente NÃO aparece em análises do TOP-cpu, pra "pegar" esse segundo caso vc teria que executar o script várias e várias vezes MAS analisar não os números de CPU gasta, mas sim QUANTAS vezes uma sessão pediu por CPU e portanto o número aumentou, as sessões que constantemente pedem por CPU são suspeitas de caso 2... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "am_balielo" <[EMAIL PROTECTED]> escreveu > > Bom dia > > Gostaria de saber como descobrir via sqlplus qual o usuario esta > utilizando mais processo, pois de vez em quando o servidor fica com o > uso de cpu em 100%. > Preciso montar um script p/ poder identificar qual o usuario e o que > ele está processando que leva o uso da CPU ficar em 100% vários minutos. > > Servidor Windows 2003 Server 1Gb de memória e banco de dados Oracle9i > (9.2.0.6). > > > Desde já muito obrigado. > Alessandro > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html