Indeks kullanımının izlenmesi

Oracle veritabanlarında indeksler çoğunlukla kendi haline bırakılır. Ama düzenli olarak bakımlarının yapılması gereken,  en önemli nesnelerdir. İndeks oluşturulup , kullanılıp kullanılmadığı kontrol edilmezse , ilerde çok büyük boyutlara ulaşmış , ciddi db time harcayan , tablodaki işlemleri yavaşlatan ama hiç bir sorguda kullanılmayan bir indeks ile karşılaşabilirsiniz.

Oluşturulmuş indekslerin kullanılıp kullanılmadığı izlenmelidir. Kullanılmayan indeksler drop edilmelidir. Fakat kullanımı açtığınızda her kullanılmayan indekslerin drop edilmesi sorunlara sebep olabilir.

Indeks kullanım izlenmesinin açıldığında , ilgili indeksin Cost Based Optimizer tarafından kullanılıp kullanılmadığı bilgisine ulaşabiliriz. Bu bilgi indeksin drop edilmesi gerekliliğine yeterli değildir. Örneğin primary key olan indekslerin kullanımı hep NO gelecektir. Buna istinaden drop edildiğinde ciddi sorunlara sebep olur.

Özetle , kullanılmayan indeksler primary key ile ilişkili değilse , herhangi bir sql profili ile ilişkili değilse drop edilebilir.

Indeks kullanım izlenmesinin açılması :

SQL> ALTER INDEX INDEX_ADI MONITORING USAGE;

Monitor açıldıktan sonra v$object_usage görüntüsü ile izleyebilirsiniz. Ayrıca aşağıdaki gibi bir görüntü oluşturup daha detaylı inceleme fırsatınız olur.

CREATE VIEW dba_object_usage (owner,object_type,
index_name, table_name, monitoring, used, start_monitoring, end_monitoring )
AS
SELECT do.owner, do.object_type, io.NAME, t.NAME,
DECODE (BITAND (i.flags, 65536), 0, 'NO', 'YES'),
DECODE (BITAND (ou.flags, 1), 0, 'NO', 'YES'), ou.start_monitoring,
ou.end_monitoring
FROM SYS.obj$ io,
SYS.obj$ t,
SYS.ind$ i,
SYS.object_usage ou,
dba_objects do
WHERE i.obj# = ou.obj#
AND io.obj# = ou.obj#
AND t.obj# = i.bo#
AND ou.obj# = do.object_id;

Kullanımının izlenmesinin açılması sisteme az da olsa ilave yük getireceğini belirtmek isterim. İlave yük sıkıntı yarattığı noktada aşağıdaki gibi kapatabilirsiniz.

 Indeks kullanım izlenmesinin kapatılması :

SQL> ALTER INDEX INDEX_ADI NOMONITORING USAGE;

 

Loading