Jeg går ud fra, at du ved, at DB2-tabeller lagres i VSAM datasets. Allerede i DB2's barndom opfandt IBM en speciel slags VSAM datasets kaldet LDS (Linear Data Set) til at lagre DB2-data i. Men hvordan finder du ud af, hvilket VSAM dataset som netop din DB2-tabel er havnet i? Det kan du gøre med følgende SQL-kald:
Du skal såmænd bare erstatte SYSIBM med creator'en for din DB2-tabel og SYSTABLES med navnet på tabellen. Hvis din tabel er partitioneret, så vil SQL-kaldet returnere navnene på samtlige de VSAM dataset, som tabellen er spredt ud over. Hvis den ikke er, hvad der er mest sandsynligt, så vil SQL-kaldet returnere netop et datasetnavn.
Hvis din ikke-partitionerede DB2-tabel bliver mere end 2GB stor, så vil DB2 automatisk oprette et ekstra VSAM dataset. Hvis dette ekstra VSAM dataset også når 2GB grænsen, så oprettes der endnu et VSAM dataset og så fremdeles. Navnene på disse ekstra VSAM dataset følger samme navnestandard som for partitionerede DB2-tabeller, men der er ingen informationer i DB2-kataloget om disse ekstra VSAM dataset. Med andre ord, så vil ovenstående SQL-kald i disse særlige tilfælde ikke vise alle de VSAM dataset, som din DB2-tabel er lagret i.
Et VSAM LDS består af et cluster dataset og et data dataset. SQL-kaldet viser navnet på cluster datasettet. Du kan vise navnet på data datasettet ved at rette DSNDBC til DSNDBD. Jeg benytter altid DSNDBD, da det i ISPF 3.4/DSLIST er DSNDBD datasettet, som oplysningerne om aktuel størrelse og antal extents står ud for. Set ud fra et MVS synspunkt, så er det cluster datasettet, MVS kender, så derfor er det mest korrekt at vise cluster navnet.
Med DB2 version 8 bliver det muligt at have partitionerede DB2-tabeller i op til 4096 partitioner. Hvis du i DB2 version 8 opretter en DB2-tabel med mere end 255 partitioner, så vil mit SQL-kald ikke give det rigtige resultat.