selecionar a partir de v $ system_event sozinho é de uso limitado. A visualização contém tempos de espera totais e conta todos os eventos de espera desde que o banco de dados foi iniciado pela última vez. A última hora em que o banco de dados foi iniciado pode ser há um ano ou alguns minutos atrás, mas de qualquer forma, geralmente estou interessado apenas no que está acontecendo agora com minha instrução sql, trabalho em lote ou usuários finais. Os usuários finais aguardam por esperas não em segundo plano não ociosas, mas v $ system_event contém todos os eventos, incluindo mais de 50 eventos ociosos e muitos aguarda por processos em segundo plano, não-usuários, que cuidam do banco de dados.
Em vez de executar essa consulta, tente executar o relatório do AWR ou o relatório do statspack ou observar a tela de desempenho ou atividade principal no Enterprise Manager.
uma maneira rápida de ver o que está acontecendo agora no banco de dados é executar a seguinte instrução select:
select nvl(s.username,s.program) username
, s.sid sid
, s.serial# serial
, s.sql_hash_value sql_hash_value
, substr(decode(w.wait_time, 0, w.event, 'ON CPU'),1,15) event
, w.p1 p1
, w.p2 p2
, w.p3 p3
from v$session s
, v$session_wait w
where w.sid=s.sid
and s.status='ACTIVE'
and s.type='USER';
que lhe dirá quem está esperando e quem está solicitando a CPU.
Ao executar a consulta repetidamente, você pode ter uma ideia de quais afunilamentos existem em um sistema.
A visualização 10g e superior do Oracle v $ active_session_history contém essas informações coletadas uma vez por segundo. Seus dados muito mais poderosos do que v $ system_event, mas os dados podem ser difíceis de explorar. Para minerar os dados, você pode usar a tela principal de atividades do Enterprise Manager, mas se você não tiver OEM, existe uma ferramenta gratuita e legal
link