Mailinglisten-Archive |
> > "snapshot too old: rollback segment number 2 with name 'RBS1 > too small" Du musst das Rollback Segmet vergroessern, das wird helfen. > while ( OCIFetch($stmt) ) { > \\** innerhalb dieser Schleife x-mal aehnliche Anweisungen > wie folgt: > $sql1 = "INSERT INTO ".$table01." (xx,yy,zz) VALUES (XX,YY,ZZ)"; > $stmt2 = ociparse($conn,$sql1); > ociexecute($stmt2,OCI_DEFAULT); > ... > OCIFreeStatement($stmt2); > ... > ocicommit($conn); > } > ocicommit($connsrc); > OCIFreeStatement($stmt); > ... Du fuehrst in Deinem Script wahrscheinlich erst mal mehrere hundert inserts aus, diese gehen zunaechst mal in das Rollback-Segment, und dann kommt erst der commit. > 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 ... Bei Oracle werden zunaechst alle Aenderungsdaten erst in die Rollbacksegmente geschrieben und anschließend bei einem Commit in das eigentliche Datenfile geschrieben. Das hat den Vorteil einer "Undo"-Funktion. So ist es moeglich Aenderungen nochmal zurueck zu nehmen. Bei einer Standardinstallation sind die RB-Segmente nur 1MB groß, das sollte bei Deinen Datenmengen schon zu klein sein. -- Seb
php::bar PHP Wiki - Listenarchive