DECLARE CURSOR im LOAD braucht UPDATE auf TS?
- Dieses Thema hat 5 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 12 Jahre von
Anonym.
-
AuthorPosts
-
6. Juli 2011 um 9:52 Uhr #4126
AnonymInaktivHallo zusammen,
warum bekommt ein Lese-Cursor einen -904 bei einem tablespace der auf ReadOnly steht.
In diesem Fall ist sogar sowohl die Source- und die Zieltabelle leer!
Ich mache folgenden LOAD
EXEC SQL DECLARE C428 CURSOR FOR SELECT * FROM XXXX.TAB1 ENDEXEC
LOAD DATA INCURSOR(C428) RESUME YES INTO TABLE YYYY.TAB1
Hier die vollständige Fehlermeldung:
DSNT408I SQLCODE = -904, ERROR:Â UNSUCCESSFUL EXECUTION CAUSED BY AN
      UNAVAILABLE RESOURCE. REASON 00C90080, TYPE OF RESOURCE
      00000200, AND RESOURCE NAME PD002D .PD428S02
DSNT418I SQLSTATEÂ Â = 57011 SQLSTATE RETURN CODE
DSNT415I SQLERRPÂ Â = DSNXRRC SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRDÂ Â = 102Â 13172746Â 0Â 13223106Â -974970878Â 12714050
      SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRDÂ Â = X’00000066’Â X’00C9000A’Â X’00000000′
      X’00C9C4C2’ X’C5E32002’ X’00C20042′ SQL DIAGNOSTIC
      INFORMATIONDiese LOAD-Sytsematik mache ich für viele Tabellen, darunter einige leere. Aber nur dieser LOAD (letzter Load in der Verarbeitung) bekommt den Fehler. Alle anderen funktionieren.
Ich bin absoulut ratlos und würde mich wie immer über eure Überlegungen, Nachfragen und natürlich Erklärungsversuche freuen.
Gruß Klaus
6. Juli 2011 um 12:13 Uhr #4274
AnonymInaktivHallo Klaus,
ich habs gerade auch mal ausprobiert. Bei mir kommt der Fehler nur, wenn der zu ladende Tablespace auf RO steht. Bist Du sicher, dass der Tablespace PD002D.PD428S02 nicht zur Tabelle YYYY.TAB1 gehört ?
RO auf der zu lesenden Tabelle ging bei mir problemlos.Gruß
Uli
6. Juli 2011 um 13:28 Uhr #4379
AnonymInaktivHallo Ulrich,
danke für deine Rückmeldung.
Ja ich bin 100% sicher.Der Tablespace ist die Quelle, auf die ich im CURSOR zugreife. Dieser liefert den -904.
Nachdenklich macht mich ja auch, dass bei diversen anderen Tablespaces alles prima funktioniert (obwohl Quelle- und Ziel-Tablespace auch leer sind).
Welchen Grund kann es geben, dass der Cursor auf die Quelle UPDATEs machen möchte. Lese-Lock? Lock-Escalation (steht aber nicht im DB2-Master).
Darauf deutet ja SQLCODE + Reason-code hin!
WÃe gesagt. Ich verstehe es momentan nicht.
Gruß Klaus
6. Juli 2011 um 18:59 Uhr #4453
AnonymInaktivGibt es zufällig einen INSERT-Trigger auf die zu ladende Tabelle ?
7. Juli 2011 um 7:47 Uhr #4492
AnonymInaktivHallo Ulrich,
nein auch kein Trigger vorhanden.
Gruß Klaus
15. September 2011 um 11:58 Uhr #4516
AnonymInaktivHallo Klaus,
es muss ja irgendwo im SQL-Processing des Cursors liegen. Lass doch mal einen Performance-Trace mit Locking (Class 6, 7) mitlaufen, es müsste da ja ein IFCID 21 geschrieben werden.
Viele Grüße
Rolf
-
AuthorPosts
You must be logged in to reply to this topic.