Nem sempre é possível manter o banco de dados livre da má utilização de seus recursos por parte de programas como aplicações externas, usuários diretos ou rotinas particulares agendadas para execução nativa no banco de dados.
Esta condição de "nem sempre será possível" independe da qualidade dos profissionais usuários do banco de dados, por isso não é construtivo culpá-los e nem mesmo exigir de todos o domínio das boas práticas de banco de dados, todavia, é necessário envolvê-los num processo contínuo de capacitação.
As querys a seguir fazem alguns ranks importantes para apoiar a descoberta de SQL problemáticos sobre o banco de dados. Nem tudo o que aparecer no rank será um problema, por isso é necessário interpretar cada situação.
1) A query a seguir verifica os 10 comandos mais executados
SELECT
SQL_TEXT
, EXECUTIONS
FROM (
SELECT
SQL_TEXT
, EXECUTIONS
, DENSE_RANK() OVER (ORDER BY EXECUTIONS DESC) EXEC_RANK
FROM V$SQL
)
WHERE EXEC_RANK <= 10
SQL_TEXT
, EXECUTIONS
FROM (
SELECT
SQL_TEXT
, EXECUTIONS
, DENSE_RANK() OVER (ORDER BY EXECUTIONS DESC) EXEC_RANK
FROM V$SQL
)
WHERE EXEC_RANK <= 10
2) A query a seguir verifica os 10 comandos que mais fazem leituras em disco (I/O)
SELECT SQL_TEXT, DISK_READS FROM (
SELECT
SQL_TEXT
, DISK_READS
, DENSE_RANK() OVER (ORDER BY DISK_READS DESC) DISK_READS_RANK
FROM V$SQL
)
WHERE DISK_READS_RANK <= 10
SELECT
SQL_TEXT
, DISK_READS
, DENSE_RANK() OVER (ORDER BY DISK_READS DESC) DISK_READS_RANK
FROM V$SQL
)
WHERE DISK_READS_RANK <= 10
3) A query a seguir verifica os 10 comandos que mais fazem leituras lógicas
SELECT SQL_TEXT, BUFFER_GETS FROM (
SELECT
SQL_TEXT
, BUFFER_GETS
, DENSE_RANK() OVER (ORDER BY BUFFER_GETS DESC) BUFFER_GETS_RANK
FROM V$SQL
)
WHERE BUFFER_GETS_RANK <= 10
SELECT
SQL_TEXT
, BUFFER_GETS
, DENSE_RANK() OVER (ORDER BY BUFFER_GETS DESC) BUFFER_GETS_RANK
FROM V$SQL
)
WHERE BUFFER_GETS_RANK <= 10
Nenhum comentário:
Postar um comentário