2017-07-18 6 views
1

Ich lese eine Datei Zeile für Zeile und ich übergebe die Daten nach jeder Zeile an die DB. Die Eingabedatei enthält 100K Zeilen. Hin und wieder bekomme ich ORA-01562: failed to extend rollback segment number Fehler und es ist nicht für eine bestimmte Zeile, noch für eine bestimmte Datei. Der Fehler ist zufällig. Dies geschieht auf Produktionssystem.ORA-01562: Rollback-Segmentnummer konnte nicht erweitert werden

Und die MAXEXTENTS für diese Tabelle ist bereits auf UNLIMITED festgelegt. Ich kann den Fehler in meiner Entwicklungsumgebung nicht reproduzieren.

Wie wird mit diesem Szenario verfahren? Welche weiteren Schritte muss ich unternehmen, damit ich diesen Fehler in Zukunft nicht bekomme?

+0

Wenn dies ein Produktionssystem - einfach Oracle Support anrufen und einen Fall öffnen . Sie helfen sehr schnell und haben ein tiefes Wissen. Wie groß sind Ihre Rollback-Segmente? Es sollte auch einen zweiten Fehler geben, der mit diesem übereinstimmt. – Mandraenke

Antwort

1

Was Sie tun müssen, ist shrink das Rollback-Segment oder add ein anderes Rollback-Segment.

In Ihrem Fall sieht es so aus, als ob Sie nur one Rollback-Segment, das standardmäßige System-Rollback-Segment, haben.

Sie müssen mindestens ein weiteres Rollback-Segment hinzufügen.

Hier sind die Befehle, die Sie diese Aussagen während der Anmeldung als Benutzer SYSTEM

Problem helfen.

Verkleinern ein Rollback-Segment Manuell:

ein Rollback-Segment schrumpfen verwenden Sie die ALTER ROLLBACK SEGMENT Systemberechtigung haben.

Sie können die Größe eines Rollback-Segments mit dem SQL-Befehl ALTER ROLLBACK SEGMENT manuell verringern. Das Rollback-Segment, das Sie versuchen zu verkleinern, muss online sein.

Die folgende Anweisung schrumpft Rollback-Segment RBS1 zu 100K:

ALTER ROLLBACK SEGMENT rbs1 SHRINK TO 100K; 

Anzeigen von Informationen Rollback Segment:

Die Informationen DBA_ROLLBACK_SEGS Data Dictionary-View speichert über die Rollback-Segmente einer Datenbank. Zum Beispiel Die folgende Abfrage listet den Namen, die zugehörigen Tabellen, und den Status jedes Rollback-Segment in einer Datenbank:

SELECT segment_name, tablespace_name, status 
     FROM sys.dba_rollback_segs; 

Ausgabe

SEGMENT_NAME TABLESPACE_NAME  STATUS 
------------- ---------------- ------ 
SYSTEM  SYSTEM    ONLINE 
PUBLIC_RS  SYSTEM    ONLINE 
USERS_RS  USERS    ONLINE 

Erstellen von Rollback-Segmente:

Um Rollback-Segmente zu erstellen, müssen Sie das Systemprivileg CREATE ROLLBACK SEGMENT haben. Verwenden Sie zum Erstellen zusätzlicher Rollback-Segmente für eine Datenbank entweder das Eigenschaftsfenster Rollback-Segment erstellen von Enterprise Manager oder den SQL-Befehl CREATE ROLLBACK SEGMENT. Der Tablespace, der das neue Rollback-Segment enthalten soll, muss online sein.

Die folgende Anweisung erstellt ein öffentliches Segment Rollbacks USERS_RS im USERS Tabellen genannt, die Standardspeicherparameter der NUTZER Tabelle mit:

CREATE PUBLIC ROLLBACK SEGMENT users_rs TABLESPACE users; 
Verwandte Themen