Acredito que muitas vezes, você deve olhar aquela quantidade enorme de índices da sua base de dados e eis que surge a dúvida, será que todos estão sendo utilizados?
Para tal você pode utilizar a feature MONITORING:
exemplo:
alter index idx_t1 monitoring usage;
-- A query abaixo gera o scritp para ativar o monitoring de todos os índices de um determinado schema.
select 'alter index '||owner||'.'||index_name||' monitoring usage;' from dba_indexes where owner = &owner;
Você pode consultar o status utilizando a view v$object_usage, porem a mesma só retorna o status dos indices monitorados do schema corrente (conectado), portanto eu simplesmente pego o select da view e removo o join que filtra pelo schema.
select du.username,
io.name index_name, t.name table_name,
decode(bitand(i.flags, 65536), 0, 'NO', 'YES') monitoring,
decode(bitand(ou.flags, 1), 0, 'NO', 'YES') used,
ou.start_monitoring start_monitoring,
ou.end_monitoring end_monitoring
from sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou, dba_users du
where i.obj# = ou.obj#
and io.owner# = du.user_id
and io.obj# = ou.obj#
and t.obj# = i.bo#;
Caso queira, você pode criar a sua própria view.
Comentários
Postar um comentário