INDEX INVISIBLE

Un indice INVISIBLE è un indice che viene ignorato da Oracle Optimizer senza esplicitamente impostare il parametro di inizializzazione OPTIMIZER_USE_INVISIBLE_INDEXES a True, a livello di sessione o di sistema (di deafult è False).
E' stato introdotto con Oralce 11g  perché precedentemente occorreva rendere l'indice UNUSABLE o dropparlo.

S i n t a s s i
ALTER INDEX <nome_indice> INVISIBLE;
ALTER INDEX <nome_indice> VISIBLE;
CREATE INDEX [ schema.]<nome_indice> ON [schema.]<nome_tabella> (colonna1 [, colonna2…] ) INVISIBLE;

E' utile quando si vuole valutare le performance di una query senza droppare l'indice o renderlo non usabile. Baste rendere l'indice invisibile e verrà ignorato da Oracle Optimizer. Se il risultato dei test è negativo si procederà a rendere nuovamente visibile l'indice, senza doverlo ricreare.

La colonna VISIBILITY della tabella USER_INDEXES indica lo stato di visibilità di un indice.

Diversamente per rendere un indice non usabile occorre eseguire il comando:
ALTER INDEX <nome_indice> UNUSABLE;
Se successivamente ai test di performance si vuole riutilizzare l'indice, occorre renderlo valido. Questa operazione consiste nel ricalcolare i puntatori e quindi viene creato l'indice in una nuova posizione e droppato quello vecchio in stato unusable. Questa operazione richiede spazio di memoria che viene gestito autonomamente se si usa Enterprise Manager, invece dei comandi seguenti.
ALTER INDEX <nome_indice> REBUILD;
ALTER INDEX <nome_indice> REBUILD ONLINE;
ALTER INDEX <nome_indice> REBUILD TABLESPACE <nome_tablespace>;

L'opzione ONLINE permette di eseguire DML sulla tabella a cui appartiene l'indice mentre è in fase di ricostruzione. Se omesso occorre attendere che l'indice sia ricostruito prime di eseguire DML.
L'opzione Tablespace permettere di scegliere il tablespace dove ricreare l'indice. Di deafault è creato nello stesso tablespace in cui era stato creato il vecchio indice.

In Oracle Entreprise Manager, cercare l'indice, ad esempio REG_ID_PK della tabella REGIONS, schema HR.




L'indice è in stato VALID. Se si rende l'indice non usabile, lo stato diventa il seguente.




Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database