Efter introduktionen af versionering af packages i DB2 har der været en del diskussion af fordele og ulemper. Fordelene er uomtvisteligt, at man kan lave nonstop igangsætninger af DB2-programmer. Ulemperne er, at man skal huske at rydde op i de gamle versioner, for ellers risikerer man, at eksekveringen af ellers udgåede programmer fungerer, hvor de uden versionering helt sikkert ville få timestamp-fejl (SQL-code -805).
Oprydning af gamle versioner kan være svær at administrere, så et eller andet kompromis midt imellem vil være rigtig godt. Følgende ide har jeg fået fra Bonnie Baker, som er en kendt DB2-guru. I stedet for at versionere, så kan man benytte sig af to collections. Den aktuelle collection og en fallback collection. Når fallback ikke længere er nødvendigt, så rydder man simpelthen op ved af lave FREE af packages i fallback collection'en.
Konceptet kan man implementere i følgende tre trin:
Man skal huske at bruge VALIDATE(RUN), da collection FALLBACK normalt ikke vil være tilgængelig.
Her er rækkefølgen selvfølgelig det vigtige. Tricket i det hele er COPY-optionen, som kopierer packages fra en collection over i en anden. Efter disse to binds vil MYPLAN være i stand til at køre på både den gamle og den nye version af programmet MYPACK.
Hvis man benytter sig af generiske packages, så er det utroligt let at omstille sig til dette princip for versionering, mens det er lidt mere krævende, hvis man eksplicit angiver samtlige packages i sin package-list. I dette tilfælde er man nødt til at gentage hver eneste package til sin fallback collection. Man kan selvfølgelig også vælge at lave et generisk entry til fallback collection'en. Husk af performancehensyn at placere fallback collection'en sidst i package-listen.