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.
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.