ORA-1555 snapshot too old: rollback segment number
Jede Idee zu
ORA-1555 snapshot too old: rollback segment number
Ich bin immer diese Fehlermeldung und nichts scheint falsch zu sein. Bitte geben Sie, unter welchen Bedingungen auftreten und wie Sie vermieden werden können?
bitte lassen Sie mich wissen, - Wer hat doewnvoted mich und warum
-1 für nicht hinzufügen über wht Sie sind tring zu tun
Natürlich könnte es viele andere details, die für den Fehler (und nicht der einzige, der weiter unten erwähnt). Was versuchen Sie zu tun?
Dieses problem stellt sich sehr oft.Ich bin nur tryig um die Summe aller der Bedingungen, die sollte sich gekümmert werden.
-1 für nicht hinzufügen über wht Sie sind tring zu tun
Natürlich könnte es viele andere details, die für den Fehler (und nicht der einzige, der weiter unten erwähnt). Was versuchen Sie zu tun?
Dieses problem stellt sich sehr oft.Ich bin nur tryig um die Summe aller der Bedingungen, die sollte sich gekümmert werden.
InformationsquelleAutor Sachin Chourasiya | 2009-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich schlage vor, Sie Lesen Tom ' s Antwort :
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1441804355350
"ORA-1555 passiert, wenn Menschen versuchen, um Platz zu sparen in der Regel. Sie haben kleine
rollback-Segmente, die wachsen könnten, wenn Sie benötigt werden (und schrumpfen mit OPTIMALEN). So,
beginnen Sie mit sagen wir 10 oder so 1meg rollback-Segmente. Diese rollback-Segmenten KÖNNTE
wachsen 100meg jeder, wenn wir Sie lassen (in diesem Beispiel), aber Sie wird NIE wachsen, es sei denn,
Sie erhalten eine große Transaktion.
"
Der link ist sehr nützlich, aber ich brauche etwas mehr info
Nochmal, ich bin auch nur ein Zitat aus dem link : "Was Sie hier tun müssen, ist die Größe der rollback, so dass es wickelt sich weniger Häufig (weniger Häufig dann Ihre lange Laufenden Abfragen)" Ihr mehr Infos braucht, aber wir brauchen auch mehr info von dem, was Sie versuchen zu tun, Wann es Auftritt ...
InformationsquelleAutor guigui42
Häufigen commits, kann die Ursache von ORA-1555.
Es geht um die lesekonsistenz. Die Zeit, die Sie starten eine Abfrage von oracle-Datensätze ein vorher-Bild. So das Ergebnis der Abfrage wird nicht verändert durch DML, findet in der mean time (deine große Transaktion). Die before-image verwendet, die rollback-Segmente, um die Werte von Daten, die sich nach dem vor-Bild genommen wird.
Indem Sie sich verpflichten, sich in Ihrem großen Transaktion, die Sie erzählen oracle die rollback-Daten der Transaktion überschrieben werden kann.
Wenn Ihre Abfrage benötigen Daten, die aus der rollback-Segmente, die überschrieben werden, erhalten Sie diese Fehlermeldung. Je weniger Sie verpflichten sich, die weniger Chancen haben Sie, dass die rollback-Daten müssen Sie überschrieben werden.
Eine häufige Ursache für einen ORA-1555 ist eine Prozedur, die dies alles in sich : ein cursor auf einer Tabelle, die Datensätze Durchlaufen und updates/löschen der gleichen Tabelle, und verpflichtet alle x Datensätze.
Als guigui gesagt : lassen Sie die rollback-Segmente wachsen, um die gesamte Transaktion
InformationsquelleAutor Robert Merkwürdigeliebe
Dies tritt normalerweise auf, wenn code-commits innerhalb eines Cursors.
zB.
Sehen die AskTom-link-form guigui42, obwohl für die anderen Beispiele.
Commit am Ende nur. Die Begehung nicht Ressourcen frei, die in oracle auf die gleiche Weise, wie es in einigen anderen Systemen, da eine Sperre ist sehr lughtweight, und die Leser und Autoren nicht gegenseitig blockieren. Begeht Häufig mehr als notwendig ist, ist eine gemeinsame design-Fehler bei der Arbeit mit Oracle.
Besser noch, nicht mit einem cursor natürlich.
Oder Sie können versuchen, das kontrollierte Begehen. Verpflichten, für jede 100ste Zeile oder mehr.
Es ist immer noch ineffizient. Warum würden Sie Begehen, bevor Sie Ihre Transaktion abgeschlossen wurde?
InformationsquelleAutor David Aldridge