Binden eines Packages aus Linux an DB2 z/OS
- Dieses Thema hat 8 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 14 Jahre, 10 Monaten von
Anonym.
-
AuthorPosts
-
21. November 2008 um 7:25 Uhr #4013
AnonymInaktivHallo zusammen,
ich habe folgendes Problem:
Ich habe ein Programm das ich unter Linux mit dem DB2 Precompiler übersetzt habe. Hierfür wurde ein Connect auf die z/OS-Datenbank mit dem User AA durchgeführt. Anschliessend soll das erzeugte .bnd-Objekt an verschiedene Tabellen mit unterschiedlichem Qualifier gebunden werden. Hierzu connecte ich mich für den Bind mit z. B. dem User BB und gebe ihm den User BB als Qualifier mit.
Die Anzeige in SYSIBM.SYSPACKAGE sagt mir auch, dass das Package an die Tabellen mit dem Qualifier BB angebunden ist. In der Realität erfolgt der Zugriff aber immer nur in die Tabellen mit dem Qualifier des Users AA.Muss ich jedes Programm mit dem jeweiligen User precompilieren und anschliessen mit diesem User auch binden oder kann ich, wie ich es aus z/OS gewohnt bin, die .bnd-Objekte an mehrere Tabellen mit unterschiedlichem Qualifier anbinden?
Vielen Dank schon mal für eure Hilfe.
Gruß
Steffen
24. November 2008 um 19:45 Uhr #4184
AnonymInaktivHi Steffen,
schau Dir mal das Thema "set current packageset" an: http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/r0001005.htm: [tt]The COLLECTION bind option can be used to create a package with a specified schema name.[/tt]
Viel Erfolg
Gernot1. Dezember 2008 um 15:29 Uhr #4315
AnonymInaktivHi Steffen,
Beim Bind kannst Du für den Zugriff auf unqualifizierte Objekte den Qualifier "AA" bzw. "BB" mitgeben.
Kann es sein, dass Du in Deinem Programm auf qualifizierte Tabellen zugreifst? Also SEL Feld1 FROM AA.Tabelle?
Dann kannst Du binden wie ein Weltmeister (mit beliebig vielen Qualifiern) und zahllose Packages erzeugen; allerdings greifen alle auf AA.* zu.@Gernot, ich glaube nicht, dass er die Collections während des Laufs wechseln will, sondern Mandanten-mässig parallel verarbeiten.
Grüsse
Alexander
2. Dezember 2008 um 9:26 Uhr #4408
AnonymInaktivHallo Steffen,
das könte auch an dem Bind-Parameter Dynamicrules liegen. Wurde beim Bind Dynamicrules(Bind) angegeben, wird für unqulaifiziertes dynamsiches SQL die User-Id des Binders als Qualifier verwendet. Bei Dynamicrules (Run) wird der ausführende User genommen.
MfG Rolf
2. Dezember 2008 um 10:52 Uhr #4469
AnonymInaktivHallo Gernot, Hallo Alexander,
vielen Dank für eure Antworten.
Als Hintergrundinformation: wir haben eine Cics-Anwendung die auf das DB2 z/OS zugreift. Die Zugriffe auf die Tabellen erfolgt in den Programmen unqualifiziert. Die Programme sind für alle Cics-Anwendungen die gleichen und die Qualifier werden über die Pläne mitgegeben.
Diese Anwendung wird nun Richtung Linux migriert und der Zugriff erfolgt jetzt über Packages.
Mein Wunsch ist es nun, um den Administrationsaufwand zu vermindern, für alle Mandanten die gleichen Packages zu verwenden und lediglich beim Binden der Packages den Qualifier mitzugeben.
Hier geht es auch um die Absicherung der Programme in der Produktionsumgebung.Ist es dann möglich an einer zentralen Stelle die Collection über current packageset zu setzen oder benötige ich das in jedem Programm?
Grüße
Steffen
2. Dezember 2008 um 11:00 Uhr #4499
AnonymInaktivHi,
poste doch einfach mal Deine Bind-JCL.
Und BB ist nicht zufällig nur ein Synonym auf AA? Sorry für so eine blöde Frage, aber manchmal … 😉Alexander
2. Dezember 2008 um 12:14 Uhr #4521
AnonymInaktivHallo,
hier der Connect-Befehl
db2 CONNECT TO db2 USER lxaa04 USING xxxund der Bind-Befehl:
db2 BIND xxxx.bnd COLLECTION lxaa04 QUALIFIER aa04 SQLERROR nopackage VALIDATE bind ISOLATION cs RELEASE commit EXPLAIN no ACTION replace DEGREE 1AA und BB sind jeweils ein eigenständiger Satz Tabellen.
@Rolf: Am Parameter Dynamicrules liegt es sehr wahrscheinlich nicht, da der User beim Binden und beim Ausführen der gleiche ist.
Gruß
Steffen
2. Dezember 2008 um 12:49 Uhr #4534
AnonymInaktivhmmm …
sind die Pläne OK? Du brauchst ja einen für AA und einen für BB. Nicht, dass Du die selbe Liste der Collections (AA.*) benutzt …
2. Dezember 2008 um 13:42 Uhr #4543
AnonymInaktivInnerhalb der DB2 Systemtabellen sehen die Packages gut aus. Ich vermute, dass lediglich das anziehen der korrekten Packages nicht funktioniert.
Das Problem ist unter Linux, dass ich keine Pläne verwenden kann und die Packages direkt ansprechen muss. Das heisst für mich dann wohl, dass ich die richtigen Packages nur über set current packageset bekomme.
-
AuthorPosts
You must be logged in to reply to this topic.