NO 09/15/2011 22:17:45 DEPT_LOCATION_IX DEPARTMENTS YES NO 09/15/2011 22:17:45 EMP_DEPARTMENT_IX EMPLOYEES YES NO 09/15/2011 22:17:45 EMP_EMAIL_UK EMPLOYEES YES NO 09/15/2011 22:17:45 EMP_EMP_ID_PK EMPLOYEES YES NO 09/15/2011 22:17:45 EMP_JOB_IX EMPLOYEES YES NO 09/15/2011 22:17:45 EMP_MANAGER_IX EMPLOYEES YES NO 09/15/2011 22:17:45 EMP_NAME_IX EMPLOYEES YES NO 09/15/2011 22:17:45 JHIST_DEPARTMENT_IX JOB_HISTORY YES NO 09/15/2011 22:17:45 JHIST_EMP_ID_ST_DATE_PK JOB_HISTORY YES NO 09/15/2011 22:17:45 JHIST_EMPLOYEE_IX JOB_HISTORY YES NO 09/15/2011 22:17:45 JHIST_JOB_IX JOB_HISTORY YES NO 09/15/2011 22:17:45 JOB_ID_PK JOBS YES NO 09/15/2011 22:17:45 LOC_CITY_IX LOCATIONS YES NO 09/15/2011 22:17:45 LOC_COUNTRY_IX LOCATIONS YES NO 09/15/2011 22:17:45 LOC_ID_PK LOCATIONS YES NO 09/15/2011 22:17:45 LOC_STATE_PROVINCE_IX LOCATIONS YES NO 09/15/2011 22:17:45 REG_ID_PK REGIONS YES NO 09/15/2011 22:17:45 18 rows selectedRepare que acabamos de habilitar o monitoramento, todos os indices estao com NO no campo USED.Vamos fazer um consulta utilizando o indice EMP_DEPARTMENT_IX:SQL> SELECT FIRST_NAME, LAST_NAME 2 FROM EMPLOYEES 3 WHERE DEPARTMENT_ID = 100; FIRST_NAME LAST_NAME-------------------- -------------------------Nancy GreenbergDaniel FavietJohn ChenIsmael SciarraJose Manuel UrmanLuis Popp 6 rows selectedAgora verificamos o uso do indice:SQL> SELECT INDEX_NAME, TABLE_NAME, MONITORING, USED, START_MONITORING, END_MONITORING 2 FROM V$OBJECT_USAGE 3 WHERE INDEX_NAME = 'EMP_DEPARTMENT_IX'; INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING------------------------------ ------------------------------ ---------- ---- ------------------- -------------------EMP_DEPARTMENT_IX EMPLOYEES YES YES 09/15/2011 22:17:45 O campo USED esta com YES, isso quer dizer que o indice esta sendo utilizado.Consultando o indice EMP_EMAIL_UK:SQL> SELECT FIRST_NAME, LAST_NAME 2 FROM EMPLOYEES 3 WHERE EMAIL = 'TGATES'; FIRST_NAME LAST_NAME-------------------- -------------------------Timothy GatesVerificando o uso do indice:SQL> SELECT INDEX_NAME, TABLE_NAME, MONITORING, USED, START_MONITORING, END_MONITORING 2 FROM V$OBJECT_USAGE 3 WHERE INDEX_NAME = 'EMP_EMAIL_UK'; INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING------------------------------ ------------------------------ ---------- ---- ------------------- -------------------EMP_EMAIL_UK EMPLOYEES YES YES 09/15/2011 22:17:45 Agora com o monitoramento habilitado e so acompanhar. O tempo de monitoramento varia de acordo com o banco, cada banco possui um ciclo de vida diferente. Antes de mais nada, o DBA deve conhecer muito bem o seu banco, deve saber quais sao os processos que sao rodados, a frequencia e a duracao de cada um. O ciclo de vida termina quando todos os tipos de processos foram rodados pelos menos 1 vez, isso pode levar alguns dias, semanas, ou meses, depende da regra de negocio. E importante definir muito bem o tempo de monitoramento para que nao se tenha um resultado falso. O indice pode simplesmente nao ter nenhum acesso por que o processo que utiliza esse indice ainda nao foi rodado.Apos completar um ciclo de vida, desabilite o monitoramento e analise o resultado. Indices que nao estao sendo acessados, sao possiveis candidatos para remocao.Gerando os comandos desabilitar o monitoramento:SQL> SELECT 'ALTER INDEX '||INDEX_NAME||' NOMONITORING USAGE;' SQL 2 FROM USER_INDEXES 3 WHERE INDEX_TYPE = 'NORMAL' 4 ORDER BY TABLE_NAME, INDEX_NAME; SQL--------------------------------------------------------------ALTER INDEX DEPT_ID_PK NOMONITORING USAGE;ALTER INDEX DEPT_LOCATION_IX NOMONITORING USAGE;ALTER INDEX EMP_DEPARTMENT_IX NOMONITORING USAGE;ALTER INDEX EMP_EMAIL_UK NOMONITORING USAGE;ALTER INDEX EMP_EMP_ID_PK NOMONITORING USAGE;ALTER INDEX EMP_JOB_IX NOMONITORING USAGE;ALTER INDEX EMP_MANAGER_IX NOMONITORING USAGE;ALTER INDEX EMP_NAME_IX NOMONITORING USAGE;ALTER INDEX JHIST_DEPARTMENT_IX NOMONITORING USAGE;ALTER INDEX JHIST_EMP_ID_ST_DATE_PK NOMONITORING USAGE;ALTER INDEX JHIST_EMPLOYEE_IX NOMONITORING USAGE;ALTER INDEX JHIST_JOB_IX NOMONITORING USAGE;ALTER INDEX JOB_ID_PK NOMONITORING USAGE;ALTER INDEX LOC_CITY_IX NOMONITORING USAGE;ALTER INDEX LOC_COUNTRY_IX NOMONITORING USAGE;ALTER INDEX LOC_ID_PK NOMONITORING USAGE;ALTER INDEX LOC_STATE_PROVINCE_IX NOMONITORING USAGE;ALTER INDEX REG_ID_PK NOMONITORING USAGE; 18 rows selectedDesabilitando o monitoramento:SQL> ALTER INDEX DEPT_ID_PK NOMONITORING USAGE;