SQLCODE -151 loswerden
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 13 Jahre von
Anonym.
-
AuthorPosts
-
9. September 2010 um 8:48 Uhr #4095
AnonymInaktivHallo zusammen,
wir haben neue Programme entwickelt, die einen UPDATE-SQL auf einen partitioning key enthalten.
In einigen Umgebungen klappte der BIND-Package, in anderen gab es einen SQLCODE -151 mit den Tokens die den Column- und Table-name enthalten, der upgedated werden soll.
Die Erklärung liegt vermutlich darin, dass die Tabellen, die bereits sehr lange angelegt sind (aus einer Zeit in der DB2 noch keinen UPDATE auf den Partitioning key erlaubte).
Bei allen neu angelegte Tabelle kein Problem.In der Produktion sind diese Tabellen auch schon sehr alt, also befürchte ich auch hier das -151-Problem.
Was ist zu tun?
UNLOAD, DROP, CREATE, LOAD
==> funktioniert bestimmt, aber problematisch da ausgerechnet diese Tabellen im 7*24 Stunden Betrieb genutzt werden und auch noch relativ gross sind.Reicht es eigentlich nur den Partitioning INDEX zu droppen und neu anzulegen oder muß auch der TABLESPACE neu angelegt werden?
Kann man das Problem vielleicht elegant mit einem ONLINE-REORG lösen? Das würde mir am besten gefallen, da dann die Tabellen immer (fast) verfügbar sind.
Über eure kreativen Ideen/Erfahrungen würde ich mich sehr freuen.
Gruß Klaus
9. September 2010 um 15:35 Uhr #4249
AnonymInaktivHallo zusammen,
ich habe folgende Lösung gefunden und getestet:
1. DROP INDEX
2. Nachdem drop des partitioning index wird die Tabelle
  auf TABLE-CONTROLLED PARTITIONING umgestelltÂ
  (DB2 V9)  DSNT404I SQLCODE = 20272, WARNING: TABLEÂ
  SPACE  xxxxxxxxxx HAS BEEN CONVERTED TO USE
  TABLE-CONTROLLED PARTITIONING INSTEAD OF
  00086900
       INDEX-CONTROLLED PARTITIONING, ADDITIONAL INFORMATION: ‚DB99’                 Â3. Test-Select (geht auch ohne partitioning INDEX)
  funktioniert 🙂4. CREATE INDEX (ohne PART, da sonst doppelt; steht
   jetzt bei table Definition) mit DEFER YES
   Nur falls der Index für Zugriffe gebraucht wird!!!5. REBUILD INDEX (DB2-Utlity)
Gruß Klaus
10. September 2010 um 9:36 Uhr #4363
AnonymInaktivHallo zusammen,
leider zu früh gefreut. Ich hatte zwar Recht, dass nach dem drop des partitioning index die Tabelle
auf TABLE-CONTROLLED PARTITIONING umgestellt wird,aber der Eintrag in SYSIBM.SYSCOLUMNS in Spalte UPDATES bleibt auf dem Wert "N" stehen (für alle ehemaligen columns des partitioning keys) und produziert immer noch den SQLCODE -151. :-[
Hat jemand noch eine Idee wie man den Wert
UPDATES auf "Y" bekommt?
Ohne DROP Tablespace und CREATE alle Objekte neu!!!
Bitte unterstützt mich bei der Frage?
Gruß Klaus
14. September 2010 um 20:22 Uhr #4443
AnonymInaktivHallo Klaus,
die Möglichkeit, Spalten des partitioning keys zu ändern, wurde mit Version 6 implementiert. Bei allen davor angelegten Tablespaces geht es nicht.
Ich fürchte, Du kommst um einen DROP/CREATE nicht herum.Gruß
Uli
-
AuthorPosts
You must be logged in to reply to this topic.