Re: SYSIBM.SYSLGRNX Analyse - DB2 OS390
[ ruban.de ] [ Antworten ] [ Forum ]
Geschrieben von christoph lutz on Juni 20, 2003 um 21:16:
Als Antwort auf Re: SYSIBM.SYSLGRNX Analyse - DB2 OS390 geschrieben von Gernot Ruban on Juni 12, 2003 um 18:17:
Hallo, es geht auch mit DB2-'Bordmitteln': Die SYSLGRNGX ist nämlich auch nichts anderes als eine DB2-Tabelle, die nur leider nicht im Catalog registriert ist. Der Aufbau ist im Diagnostic Guide beschrieben. Anhand diesem kann man sich eine User-Tabelle anlegen mit dem gleichen Aufbau. Der Tablespace muss 'simple' sein (non-segmented, non-partitioned). Mit einem DSN1COPY (mit ID-translate) kann man nun die SYSLGRNGX in die eigene Table kopieren. (Stoppen der SYSLGRNGX wird wohl nicht drin sein, aber ein QUIESCE WRITE YES tuts auch. Dazu ist allerdings Install-Berechtigung nötig.) Woher bekommt man die internal IDs der SYSLGRNGX? DBID der DSNDB01 ist 1 PSID + OBID kann man mit einem DSN1PRNT auf die SYSLGRNGX ermitteln (die ersten paar Pages genügen): Wie der OUTPUT zu interpretieren ist, steht auch im Diagnostic Guide. Bei der Auswertung gibts nun noch eine Klippe: In der SYSLGRNGX stehen nicht die Tablespace-Namen, sondern wiederum nur DBID/PSID der interessierenden Objekte, und diese leider nicht im gleichen SMALLINT- Format wie im Catalog: Hier wird eine binary Zahl in 2 Bytes so kodiert, dass ein grösser/kleiner-Vergleich immer durch reinen Bit-Vergleich realisiert werden kann, also z.B. x'7FFA' = -6 x'8000' = 0 x'8005' = +5 (gilt bis V7, ab V8 gibts ja UNICODE). In der SYSLGRNGX dagegen ist die Codierung so, wie man sie von Assembler kennt: x'FFFF' = -1 x'0000' = 0 x'000A' = 10 Man muss also die IDs aus der SYSLGRNGX um +32768 korrigieren, dann kann man damit die gewünschten Objekte im Catalog suchen. Gruss, Christoph
Schreibe eine Antwort
|