Mailinglisten-Archive |
Aloha, > ---------- > Von: Grewing, Sebastian[SMTP:Sebastian.Grewing_(at)_telekom.de] > > > Wieso gibt es ueberhaupt einen rollback-Fehler? Nach einem > > commit sollte > > doch kein Rollback mehr moeglich sein - wozu werden also > > anscheinend immer > > noch rollback-Infos irgendwo im Speicher "aufgehoben"? > > > > Wo muss ich den Fehler suchen? In meinem Script? Bei Oracle? > > Bei PHP 3.0.16? > > Bei Oracle ... > Beim DB-Administrator bzw. beim Programmierer. Oracle kann man dafür nicht die Schuld geben. Wenn mehrere User mit dem gleichen Datenbestand gleichzeitig arbeiten, und dann auch noch Features wie COMMIT/ROLLBACK benutzen wollen, dann muß die DB dafür ausgefeilte Mechanismen einsetzen. Beispiel User 1: update riesentabelle set spalte1 = 'test'; commit; Das Update dieser Tabelle könnte z.B. 2 Minuten brauchen. In dieser Zeit macht User 2: select * from riesentabelle; Welchen Datenbestand sieht User 2 ? Wie ist es möglich, daß bei dem COMMIT sofort alle Daten geändert sind ? Das alles und noch viel mehr leisten die erwähnten Rollbacksegmente, in denen die Daten temporär gespeichert und geändert und danach zurückge- schrieben werden in die DB. Für User 1 und User 2 ist es nicht ersichtlich, ob sie jetzt mit den Daten aus dem Tablespace oder Rollbacksegment ar- beiten. Je nach größe der Insert/Update/.... Anweisungen kann es natürlich sein, daß nicht alles in das Rollbacksegment passt, oder dass nur eines vor- handen ist und mehrer User grad Inserts/Updates machen, die ja auch Da- ten in das Rollbacksegment schreiben. ==> Lösungen: - Rollbacksegment vergrößern (lassen) ... Unsere SAP-Server haben teilweise 12 GB Rollbacksegment ;-) - Alle User ausser dir von der DB werfen und hoffen, daß das Rollbacksegment für dich reicht - Das Commit so früh wie möglich setzen, falls sich das machen lässt. Eine ausführliche Erklärung dieses Phänomens von SAP gibts gern als PM. Viele Grüße, Mathias
php::bar PHP Wiki - Listenarchive