Eu gosto de obter as últimas instruções executadas no meu banco de dados, juntamente com os indicadores de desempenho.
Como tal, eu gosto de saber quais instruções SQL foram mais intensivas em CPU / DISK.
oracle
monitoring
Sebastian Roth
fonte
fonte
Respostas:
Aqui está o SQL para fazer o trabalho. Aberto para julgamento.
Etapa 1: Determine os IDs de instalação e de usuário.
Passo 2:
Pode haver vários IDs e IDs de instância retornados. Portanto, cabe aos usuários a escolha de como usar esses dados em uma interface da web etc.
fonte
in
operador com tuplas, de modo do exemplo acima... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
O console do Oracles Enterprise Monitor mostra uma grande quantidade de informações sobre quais consultas SQL estão levando a CPU máxima, gargalos, atividade principal no banco de dados, bloqueando SQLs et al.
Para uma abordagem histórica, você pode usar os relatórios AWR do Oracle para definir áreas pontuais a seu respeito.
fonte
Você também pode usar
V$SQL
, existem várias colunas interessantesRUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
etc.Isso daria as 10 principais instruções por leitura de disco (nota - isso é cumulativo para todas as execuções):
Se a instrução ainda estiver em,
V$SQL_PLAN
é possível obter um plano de explicação real para a consulta:Também gosto de usar
V$SQL_PLAN
, pois contém boas informações. Sestatistics_level=ALL
você pode usarV$SQL_PLAN_STATISTICS
.fonte
Para SQL recente:
Para a história:
fonte