come risolvere ORA-30926 errori? (Doc ID 471956,1)
1) Identificare la dichiarazione in mancanza
alter set sessione di ‘30926 traccia livello nome errorstack 3’ eventi;
o
sistema alter impostato eventi ‘Nome 30926 traccia errorstack off’;
e guardare i file .trc in UDUMP quando si verifica.
2) Dopo aver trovato l'istruzione SQL, controllare se è corretta (magari usando spiegare piano o tkprof per controllare il piano di esecuzione della query) e analizzare o calcolare le statistiche sulle tabelle interessate se ciò non è stato fatto di recente. Anche gli indici di ricostruzione (o dropping/ricrea) possono essere utili.
3.1) L'istruzione SQL è un MERGE? valuta i dati restituiti dalla clausola USING per garantire che non vi siano valori duplicati nel join. Modificare la dichiarazione di unione per includere una clausola deterministica dove
3.2) È un'istruzione UPDATE tramite una vista? In tal caso, provare a inserire il risultato della vista in una tabella e provare ad aggiornare direttamente la tabella.
3.3) C'è un trigger sul tavolo? Prova a disabilitarlo per vedere se fallisce ancora.
3.4) La dichiarazione contiene una vista non cumulabile in una "sotto-sottoquery"? Ciò può comportare il ritorno di righe duplicate se la query ha una clausola "FOR UPDATE". Vedi Bug 2681037
3.5) La tabella contiene colonne non utilizzate? Eliminarli potrebbe impedire l'errore.
4) Se la modifica di SQL non risolve l'errore, il problema potrebbe riguardare la tabella, soprattutto se ci sono righe concatenate. 4.1) Eseguire l'istruzione 'ANALYZE TABLE VALIDATE STRUCTURE CASCADE' su tutte le tabelle utilizzate nell'SQL per vedere se ci sono corruzioni nella tabella o nei suoi indici. 4.2) Verificare ed eliminare eventuali ROW CHAINED o migrati sul tavolo. Ci sono modi per minimizzare questo, come ad esempio l'impostazione corretta di PCTFREE. utilizzo Menzioni 122.020,1 - Row Chaining e migrazione 4.3) Se la tabella è inoltre indice organizzata, vedi: Nota 102.932,1 - Monitoraggio Righe concatenate su IOT
10x Bella risposta. Mi ha aiutato –
anche da me .. proprio sulla testa – TonyP
Questo è probabilmente il motivo per cui altri approcci (per me) hanno anche restituito altri errori per me (come 'procedura, funzione, pacchetto o tipo non è permesso qui' e 'Impossibile modificare un colonna che esegue il mapping a un errore di tabella non conservato con chiave durante il tentativo di inserimento in una vista '). ~ Se aiuta qualcun altro, ho ottenuto lo stesso errore anche dopo aver aggiunto distinti fino a quando non ho riorganizzato i join della mia query interna, così ho iniziato con la tabella che riceveva più di una riga restituita e inner join da lì ... se questo ha un senso. – jinglesthula