Terug naar de beginpaginaCentor Homepage

Index Gebruik Monitoring Script

Het laadproces van Oracle-tabellen kan aanzienlijk worden vertraagd als er veel indexen zijn gedefinieerd in een tabel. Het is daarom belangrijk dat de hoeveelheid indexen tot een minimum wordt beperkt. In Oracle 9i is het mogelijk niet-gebruikte indexen te lokaliseren en te verwijderen. In deze tip wordt beschreven hoe dat moet.

Het overmatig indexeren van kolommen is één van de meest voorkomende oorzaken voor slecht presterende SQL-inserts. Updates, deletes en inserts verlopen trager als bij elke wijziging een arsenaal aan indexen moet worden bijgewerkt. Aangezien elke kolom meerdere indexen kan bevatten, wordt dit probleem groter wanneer er sprake is van indexen die op functies zijn gebaseerd.
Met het Alter Index-commando kan het indexgebruik worden gemonitord. Vervolgens kunnen niet-gebruikte indexen worden opgespoord en verwijderd. Met het Alter Index-commando kan echter uitsluitend worden aangegeven of een index wel of niet wordt gebruikt. De frequentie waarmee de index wordt toegepast, is helaas nog niet meetbaar.
Het onderstaande script zorgt ervoor dat in een bepaalde set schema's (aangeduid in de WHERE-clause) het gebruik van indexen wordt bijgehouden.

set pages 999;

set heading off;
spool run_monitor.sql
select
--- 'alter index'
--- ||owner||'.'||index_name
--- ||' monitoring usage;'
from
--- dba_indexes
where
--- owner in ('SCOTT','MYOWNER')
;
spool off;
@run_monitor

Als deze optie is ingeschakeld, kan na verloop van tijd in de nieuwe view v$object_usage zien welke indexen zijn gebruikt:

select
--- index_name,
--- table_name,
--- mon,
--- used
from
--- v$object_usage;

De v$object_usage view laat zien welke indexen zijn gebruikt in de kolom USED, met de waarde YES of NO. Zoals gezegd blijft onduidelijk hoe vaak een index is gebruikt. Desondanks kan dit een handig hulpmiddel zijn bij het traceren van niet-gebruikte indexen.

INDEX_NAME ---------------- TABLE_NAME ----- MON ---- USED
----------------------------------------------------------- CUSTOMER_LAST_NAME_IDX -----CUSTOMER ------- YES -----NO

Meer tips:
DBA

Designer

Forms

Java

PL/SQL

Reports

SQL

Unix

Web