W tej chwili proces, w którym używamy do wstawiania zestawów rekordów, jest podobny do tego:Czy mogę zastąpić punkty zapisu w celu rozpoczęcia nowych transakcji w Oracle?
(i należy pamiętać, że "zestaw rekordów" oznacza coś w rodzaju rekordu osoby wraz z ich adresami, numerami telefonów lub dowolnymi danymi; inne połączone tabele).
- Rozpocznij transakcję.
- Włóż zestaw powiązanych rekordów.
- Zatwierdź, jeśli wszystko przebiegło pomyślnie, cofnij się w inny sposób.
- Powróć do kroku 1, aby uzyskać następny zestaw rekordów.
Czy powinniśmy robić coś takiego?
- Zacznij transakcję na początku skryptu
- Zacznij oszczędzać punkt dla każdego zestawu rekordów.
- Włóż zestaw powiązanych rekordów.
- Jeśli wystąpi błąd, powróć do punktu zapisu, jeśli wszystko przebiegło pomyślnie.
- Zatwierdź transakcję na początku skryptu.
Po problemach z ORA-01555 i przeczytaniu kilku artykułów Ask Tom (takich jak this one), myślę o wypróbowaniu drugiego procesu. Oczywiście, jak podkreśla Tom, rozpoczęcie nowej transakcji jest czymś, co powinno być zdefiniowane przez potrzeby biznesowe. Czy warto przetestować drugi proces, czy też jest to zły pomysł?
+1, interesujące pytanie (także do dyskusji na temat asktom) – DCookie
Przydałoby się, jeśli wprowadzisz bieżącą wartość dla parametru UNDO_RETENTION i czas potrzebny na uruchomienie całego skryptu i przetwarzanie każdego zestawu. –