150 likes | 285 Vues
COURSE Tagung Bad Hersfeld 2008. DB2 UDB im z/VSE . Heinz Peter Maassen – Lattwein GmbH. DB2 UDB im z/VSE . Start Parameter Anpassung Programmierung CPG/HL1 Ausnahmen. Start Parameter. // JOB DB2START START DB2 IN MULTIPLE USER MODE mit UDB
E N D
COURSE Tagung Bad Hersfeld 2008 DB2 UDB im z/VSE Heinz Peter Maassen – Lattwein GmbH
DB2 UDB im z/VSE • Start Parameter • Anpassung • Programmierung CPG/HL1 • Ausnahmen
Start Parameter // JOB DB2START START DB2 IN MULTIPLE USER MODE mit UDB // LIBDEF *,SEARCH=(PRD2.TCPIP15E,PRD2.DB2740) // SETPFIX LIMIT=120K // EXEC PROC=ARIS74DB *-- DB2 DATABASE ID PROC // EXEC PROC=ARIS74SL *-- DB2 PRODUCTION LIBRARY ID PROC // ASSGN SYS098,SYSPCH * DBNAME=SQLDS NCUSER=12 (3 CICSF5, 3 CICSF7, 3 CICSF8, 3 BATCH ) // EXEC ARISQLDS,SIZE=8M,PARM='DBNAME=SQLDS,NCUSERS=12,RMTUSERS=3, X PROTOCOL=AUTO,PROCMXAB=12' /* /& // JOB DB2START START DB2 IN MULTIPLE USER MODE Ohne UDB // LIBDEF *,SEARCH=(PRD2.TCPIP15E,PRD2.DB2740) // SETPFIX LIMIT=120K // EXEC PROC=ARIS74DB *-- DB2 DATABASE ID PROC // EXEC PROC=ARIS74SL *-- DB2 PRODUCTION LIBRARY ID PROC // ASSGN SYS098,SYSPCH * DBNAME=SQLDS NCUSER=12 (3 CICSF5, 3 CICSF7, 3 CICSF8, 3 BATCH ) // EXEC ARISQLDS,SIZE=AUTO,PARM='DBNAME=SQLDS,NCUSERS=12,RMTUSERS=3' /* /&
ARISDIRD CATALOG ARISDIRD.A REPLACE=YES * THIS FILE CONVERTED BY ARICCDID PROC 20020208 10:40:44 FROM R51 INPUT * PRD4.DB2510.ARISDIRD.A INTO PRD2.DB2740.ARISDIRD.A * TYPE=LOCAL DBNAME=SQLDS APPLID=SYSARI00 TCPPORT=446 SYSDEF=Y * TYPE=LOCALAXE DBNAME=SQLDS APPLID=SYSARI00 TPN=07F6C4C2 * TYPE=REMOTE DBNAME=CPGDB TCPPORT=50000 IPADDR=192.168.197.20 * /+ Dann: // JOB ARISBDID -- DBNAME DIRECTORY SERVICE GENERATION erstellen Lokal: SQLDS Remote: CPGDB
DRDA Support Linken // JOB ARIS745D LINK EDIT ONLINE RESOURCE ADPATER WITH DRDA // STEP 2 - LINK EDIT ONLINE RESOURCE ADPATER DRDA ROUTER // JOB ARIS742D LINK EDIT RDS WITH DRDA SERVER SUPPORT // ARIS74LD: LINK EDIT BATCH RESOURCE ADAPTER WITH DRDA CODE Dann: // JOB ARIS120D * ********************************************************** * ARIS120D: RELOAD THE ISQL PACKAGE * ********************************************************** // EXEC PGM=ARIDBS,SIZE=AUTO,PARM='DBNAME(CPGDB)' CONNECT CPGDBA IDENTIFIED BY CPGDBAPW TO CPGDB; RELOAD PROGRAM (SQLDBA.ARIISQL) REPLACE KEEP INFILE(SYSIPT BLKSZ(80) PDEV(DASD)); READ MEMBER ARIISQLM /* COMMIT WORK; /* /&
CPG/ HL1 mit DB2 UDB • CPG und HL1 können mit CPGPREP Inline SQL Statements interpretieren und ausführen. • DB2PREP ist ein Preprozessor, der erst Assembler DB2 Statements erzeugt, die dann mit Original IBM DB2 Preprozessor den Source Code ergeben. • QSAT kann sowohl in der VSE DB2 Umgebung als auch in der UDB eingesetzt werden.
QPG und DB2 UDB • Bei QPG muss das SQL Interface in der UDB installiert sein. Das sind die Packages HMXPRSQ für CICS und HMYPRSQ für Batch. • Dann kann das QPG Programm nach SQL CONNECT :UID IDENTIFIED BY :PWD TO :UDBauf die UDB mit dynamischen SQL Statements (ohne DECLARE CURSOR FOR ... und SELECT INTO ...) zugreifen. • Ansonsten gibt es die gleichen Einschränkungen wie im CPG/HL1 • Leider unterstützt die UDB bisher nicht alle extended dynamischen Befehle.
CPG/ HL1 mit DB2 UDB • HL1 / CPG Programme • SQL UPDATE CPGDBA.KUNDEN * • SQL SET FIRMA = :FIRMA * • SQL WHERE KDNRA = :KDNR User Application = Sicht Gen. ASM Code = System Sicht CALL HOSTVAR DC C‘FIRMA‘,X‘2E‘,C‘ ‘ DC C‘KDNRA‘,X‘05‘,C‘ ‘ CALL SQLCMD DC C‘UPDATE‘,X‘002C‘ HOSTVAR SQLCMD
Defaults setzen: • Ab QSAT 2.5 kann eine Default DB2 DB sowohl für den Compile als auch für QSAT definiert werden. • Hierzu wird der Source Code von QSATDIR angepasst, ein Objekt erstellt und die Phasen entsprechend neu gelinkt.
QSATDIR.A QSATDIR CSECT *---------------------------------------------------------------------* * QSAT DIRECTORY FUER DB2 TYPE * * ---------------------------- * * DIESE TABELLE WIRD IM QSAT UND BEIM PREPROZESS VERWENDET UM ZU * * ENTSCHEIDEN, WELCHE SQL BEFEHLE ZUR DATENBANK ERLAUBT SIND. * * AUSSERDEM WIRD IM QSAT ENTSCHIEDEN, WELCHE HL1 MODULE AUFGERUFEN * * WERDEN, DA DIE SYSTEM TABELLEN UNTERSCHIEDLICHE NAMEN IN DER UDB * * ODER IM SQLDS HABEN. * *---------------------------------------------------------------------* * AUFBAU DER TABELLE: * * ------------------- * * DBNAME DC CL18'SQLDS' 1 - 18 DBNAME * * DBTYPE DC CL3'VSE' ODER 'VM ' ODER 'UDB' 19 - 21 DBTYPE * * --------------------------------------------------------------------* SQLDS DC CL18'SQLDS',CL3'VSE' * CPGDB DC CL18'CPGDB',CL3'UDB' * DBMAS DC CL18'DBMAS',CL3'UDB' * ENDDIR DC F'-1' * * END , END IN ASMA90 , END DO NOT REMOVE COMMA *
Benutzen: In ISQL Start Kann die UDB Direkt eingetra- gen werden.
Anzeige Tabelle mit ISQL: Das ist das CPGDD für DB2 Program- mierung. View Table Direkt in der Steuerzentrale der DB2 UDB unter Windows XP.
Programmierung: // JOB DB2UMW /* EXEC CPGPREP,SIZE=512K,PARM='PUNSOURCE,LIST,NOPRINT,ISOL(CS),DB(SQLD /* S),USERID=CPGDBA/CPGDBAPW,QSATDB(CPGDB),QSATPW(CPGDBAPW)' // EXEC CPGPREPW,SIZE=512K,PARM='PUNSOURCE,LIST,NOPR,ISOL(CS),DB(CPGDB)* ,USERID=CPGDBA/CPGDBAPW,QSATDB(CPGDB),QSATPW(CPGDBAPW)' - OPTIONS MAIN HL1 H COM ADD 0 TITLE SQL#SERVER PHASE TST039 - ASS A DIC DEF BIG. - *--------------------------------------------------------------* - * TEST INSERT MIT NULL FELDERN * - *-------------------------------------------------MAS-30.04.08-* - -D. - SQL BEGIN DECLARE SECTION ............ Hier folgt das Programm /* ...
Was nicht geht: Bei DRDA sind einige wichtige und Performance sparende Funktionen leider nicht unterstützt, besonders im Bereich dynamischer Befehle: Nullwerte werden beim INSERT Befehl nicht unterstützt, es kommt SQLCODE –309! DRDA unterstützt kein SELECT ... INTO. Das muss mit einem DECLARE CURSOR, OPEN, FETCH , CLOSE gelöst werden. WHERE CURRENT OF ... geht nicht Zum Teil werden hierdurch erhebliche Programmänderungen erforderlich!
Noch Fragen ? Vielen Dank für Ihre Aufmerksamkeit