Uma das formas de medição de consumo de banco de dados é a verificação da utilização de CPU por parte das aplicações no banco de dados.
Para obtermos essas informações, podemos utilizar o comando abaixo:
1) Para um banco de dados single instance:
SET PAGESIZE 60
SET LINESIZE 300
COLUMN username FORMAT A30
COLUMN sid FORMAT 9999999
COLUMN serial# FORMAT 9999999
COLUMN "utilização de cpu (seconds)" FORMAT 999,999,999.0000
SELECT
s.username,
t.sid,
s.serial#,
SUM(VALUE/100) as "utilização de cpu (seconds)"
FROM
v$session s,
v$sesstat t,
v$statname n
WHERE
t.STATISTIC# = n.STATISTIC#
AND
NAME like '%CPU used by this session%'
AND
t.SID = s.SID
AND
s.status='ACTIVE'
AND
s.username is not null
GROUP BY username,t.sid,s.serial#
order by 4 desc;
2) Para banco de dados em cluster:
SET PAGESIZE 60
SET LINESIZE 300
COLUMN username FORMAT A30
COLUMN sid FORMAT 9999999
COLUMN serial# FORMAT 9999999
COLUMN "utilização de cpu (seconds)" FORMAT 999,999,999.0000
SELECT
s.username,
t.sid,
s.serial#,
SUM(VALUE/100) as "utilização de cpu (seconds)"
FROM
gv$session s,
gv$sesstat t,
gv$statname n
WHERE
t.STATISTIC# = n.STATISTIC#
AND
NAME like '%CPU used by this session%'
AND
t.SID = s.SID
AND
s.status='ACTIVE'
AND
s.username is not null
GROUP BY username,t.sid,s.serial#
order by 4 desc;
Dependendo das necessidades, podemos incrementar os comandos acima, solicitando por exemplo que sejam exibidas apenas as sessões que pertencem a mesma aplicação, utilizando o campo SERVICE_NAME, da seguinte forma:
SET PAGESIZE 60
SET LINESIZE 300
COLUMN username FORMAT A30
COLUMN sid FORMAT 9999999
COLUMN serial# FORMAT 9999999
COLUMN "utilização de cpu (seconds)" FORMAT 999,999,999.0000
SELECT
s.username,
t.sid,
s.serial#,
SUM(VALUE/100) as "utilização de cpu (seconds)"
FROM
gv$session s,
gv$sesstat t,
gv$statname n
WHERE
t.STATISTIC# = n.STATISTIC#
AND
NAME like '%CPU used by this session%'
AND
t.SID = s.SID
AND
s.status='ACTIVE'
AND
s.username is not null
AND s.service_name like 'NOME_SERVICO'
GROUP BY username,t.sid,s.serial#
order by 4 desc;
Estes são apenas exemplos, onde podemos modificar o comando de acordo com as necessidades de momento.