Como solucionar os erros do ORA-30926? (ID do documento 471956.1)
1) Identifique a declaração com falha
alterar eventos do conjunto de sessões '30926 nome do rastreamento errorstack nível 3';
ou
alterar eventos do conjunto do sistema 'nome do rastreio 30926 errorstack off';
e observe os arquivos .trc no UDUMP quando ocorrerem.
2) Após encontrar a instrução SQL, verifique se ela está correta (talvez usando o plano de explicação ou o tkprof para verificar o plano de execução da consulta) e analise ou calcule as estatísticas nas tabelas em questão, se isso não tiver sido feito recentemente. A reconstrução (ou eliminação / recriação) de índices também pode ajudar.
3.1) A instrução SQL é MERGE? avalie os dados retornados pela cláusula USING para garantir que não haja valores duplicados na associação. Modifique a instrução merge para incluir uma cláusula where determinística
3.2) Esta é uma instrução UPDATE através de uma visualização? Nesse caso, tente preencher o resultado da exibição em uma tabela e tente atualizar a tabela diretamente.
3.3) Existe um gatilho na mesa? Tente desativá-lo para ver se ainda falha.
3.4) A declaração contém uma visão não mesclável em uma 'Subconsulta IN'? Isso pode resultar no retorno de linhas duplicadas se a consulta tiver uma cláusula "FOR UPDATE". Veja Bug 2681037
3.5) A tabela possui colunas não utilizadas? Largar estes pode impedir o erro.
4) Se a modificação do SQL não resolver o erro, o problema pode estar na tabela, especialmente se houver linhas encadeadas. 4.1) Execute a instrução 'ANALYZE TABLE VALIDATE STRUCTURE CASCADE' em todas as tabelas usadas no SQL para verificar se há alguma corrupção na tabela ou em seus índices. 4.2) Verifique e elimine quaisquer LINHAS CHAINED ou migradas na tabela. Existem maneiras de minimizar isso, como a configuração correta do PCTFREE. Use a Nota 122020.1 - Encadeamento e migração de linhas 4.3) Se a tabela for adicionalmente organizada por índices, consulte: Nota 102932.1 - Monitorando linhas encadeadas em IOTs