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


Antworten:


Schreibe eine Antwort

Name:   
E-Mail:  

Thema:

Kommentar:

Optionale Link URL:   
Link Titel:                  
Optionale Image URL:


[ Antworten ] [ Forum ]