Domanda

La mia domanda riguarda la situazione in cui il tablespace utilizzato per l'indice della chiave primaria differisce dal tablespace utilizzato per la tabella stessa.Oracle utilizzerà questo indice o diventerà inutilizzabile?

Perché quando ho provato a importare lo schema in Oracle che contiene quella tabella.Oracle si è lamentato con un avvertimento dicendo che l'indice per questa chiave primaria è inutilizzabile.Ho corretto lo schema modificando lo spazio tabella per l'indice della chiave primaria, esportandolo di nuovo e importandolo nel database senza avvisi.

Ciò significa che il tablespace dell'indice della chiave primaria deve essere sempre uguale al tablespace della tabella stessa?Oppure è vero per qualsiasi tipo di indice (ad esempio l'indice di colonna)?

Questa regola vale anche per DB2?

È stato utile?

Soluzione

La memorizzazione di indici e dati in tablespace diversi è perfettamente accettabile.Cosa succede quando fai un:

alter index index_name rebuild;

Dopodiché l'indice è ancora inutilizzabile?In caso contrario, controlla i parametri di importazione nella tabella.Ad esempio, SQL*Loader può invalidare gli indici con caricamenti diretti del percorso (questa è solo un'ipotesi, non dici come hai caricato i dati).

Se l'indice è ancora inutilizzabile, verificare eventuali anomalie nei dati, in particolare chiavi duplicate.Spero che tu lo aggiusti!

Altri suggerimenti

Quello che Martin ha detto va bene. Tuttavia, non v'è alcuna reale necessità di separare gli spazi tabelle. Che cosa si può fare, per evitare errori di spazi tabelle sulle importazioni (supponendo che si sta utilizzando l'esportazione / importazione e non datapump) è quello di creare l'utente con uno spazio tabelle di default che esiste. Quindi importare solo il database e quindi aggiungere gli indici e vincoli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top