Jak rozwiązywać problemy z ORA-30926? (ID dokumentu 471956.1)
1) Zidentyfikuj niezgodne stwierdzenie
zmień zdarzenia zestawu sesji „30926 nazwa śledzenia errorstack poziom 3”;
lub
alter system set events '30926 trace name errorstack off';
i uważaj na pliki .trc w UDUMP, gdy wystąpią.
2) Po znalezieniu instrukcji SQL sprawdź, czy jest poprawna (na przykład przy użyciu planu wyjaśniania lub tkprof w celu sprawdzenia planu wykonania zapytania) i przeanalizuj lub oblicz statystyki dotyczące odpowiednich tabel, jeśli nie zostało to ostatnio zrobione. Odbudowanie (lub upuszczenie / odtworzenie) indeksów też może pomóc.
3.1) Czy instrukcja SQL jest MERGE? ocenić dane zwrócone przez klauzulę USING, aby upewnić się, że w łączeniu nie ma zduplikowanych wartości. Zmodyfikuj instrukcję merge, aby zawierała deterministyczną klauzulę where
3.2) Czy jest to instrukcja UPDATE za pośrednictwem widoku? Jeśli tak, spróbuj wypełnić wynik widoku w tabeli i spróbuj bezpośrednio zaktualizować tabelę.
3.3) Czy na stole jest wyzwalacz? Spróbuj go wyłączyć, aby sprawdzić, czy nadal się nie powiedzie.
3.4) Czy instrukcja zawiera niemożliwy do scalenia widok w „IN-Subquery”? Może to spowodować zwrócenie zduplikowanych wierszy, jeśli zapytanie zawiera klauzulę „FOR UPDATE”. Zobacz błąd 2681037
3.5) Czy tabela zawiera nieużywane kolumny? Usunięcie ich może zapobiec wystąpieniu błędu.
4) Jeśli modyfikacja kodu SQL nie usunie błędu, problem może dotyczyć tabeli, zwłaszcza jeśli istnieją powiązane wiersze. 4.1) Uruchom instrukcję „ANALYZE TABLE VALIDATE STRUCTURE CASCADE” na wszystkich tabelach używanych w języku SQL, aby sprawdzić, czy w tabeli lub w jej indeksach nie ma żadnych uszkodzeń. 4.2) Sprawdź i wyeliminuj wszystkie WIERSZE ŁAŃCUCHOWE lub migrowane w tabeli. Istnieją sposoby, aby to zminimalizować, takie jak prawidłowe ustawienie PCTFREE. Użyj notatki 122020.1 - Łączenie wierszy i migracja 4.3) Jeśli tabela jest dodatkowo zorganizowana według indeksów, zobacz: Uwaga 102932.1 - Monitorowanie połączonych wierszy na IOT