DB2-åtkomst från WebSphere



Relevanta dokument
Möjligheten att få bättre effektivitet i databasåtkomst från Java. Lennart Henäng, IT-arkitekt, Handelsbanken

Klientprogrammering mot databaser

INTRODUKTION TILL JDBC

FNTSK SKNNK Fonetisk sökning

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Support Manual HoistLocatel Electronic Locks

RUG Trace JDBC error. Sandvik IT Services

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Recitation 4. 2-D arrays. Exceptions

Lösningsförslag, tentamen i Databaser

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Tentamen PC-teknik 5 p

Att skriva till och läsa från terminalfönstret

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Från Excel laddningar till web arbetsflöden

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Application Note SW

Beijer Electronics AB 2000, MA00336A,

2.1 Installation of driver using Internet Installation of driver from disk... 3

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Vyer, Prepared Statements, Triggers

Preschool Kindergarten

endast har ett korrekt alternativ. Om

Stored procedure i ASP.NET

Classpath. Class loading + resurser. Class loader. jar-filer

Introduktion till Entity Framework och LINQ. Källa och läs mer

Sample exam questions. Database exam TIG058

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata


ADO.NET Murach Kapitel 17-20

Modern webbutveckling. av Robert Welin-Berger

This work by. Fredrik Wendt. is licensed under a. Creative Commons

SharePoint 2010 licensiering Wictor Wilén

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Nyttjande av kartor och kartteknik hur ser framtiden ut? Jonas Bäckström, Sokigo AB

Freja eid. Anders Henrikson

IPv6 i Mobilnät. Mattias Karlsson. mattias.karlsson@telenor.com

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Styrteknik: Binära tal, talsystem och koder D3:1

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

PHP-presentation Dataföreningens Open Source-nätverk

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Avancerad SSL-programmering I

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.

CUSTOMER READERSHIP HARRODS MAGAZINE CUSTOMER OVERVIEW. 63% of Harrods Magazine readers are mostly interested in reading about beauty

Switch- och WAN- teknik. F2: Kapitel 3 och 4

Får endast utföras av behörig personal. May only be carried out by authorized electrician

Kvalitetsarbete I Landstinget i Kalmar län. 24 oktober 2007 Eva Arvidsson

Distribuerade System, HT03

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

public DataSet GenerateDataSet(SqlCommand dbcommand, String tablename, out String errormsg) { errormsg = "";

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Tips & Trix - Teknik Jeeves World Copyright 2011 Jeeves Information Systems AB

ÖVERVAKNING AV SQL SERVER

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Stored procedure i ASP.NET

Exempelsamling Assemblerprogrammering

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

PORTSECURITY IN SÖLVESBORG

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

Alias 1.0 Rollbaserad inloggning

Protokoll Föreningsutskottet

12.6 Heat equation, Wave equation

LARS. Ett e-bokningssystem för skoldatorer.

DB, DATA, LOGIC, EXPOSURE (WEB)

Hur integrera Active Directory och DNS? Rolf Åberg, Simplex System

Measuring child participation in immunization registries: two national surveys, 2001

CARRY YOU HOME. I've been knocked down, I've been lost With the ground shaking under my feet I gave it all to someone, who'd said fire, run

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Product configurations Produire configuration Produkt konfigurationen Producto configuraciones Produkt konfigurationerna

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

INTRODUKTION TILL SQLJ & MAKEFILE

Exemple på Tentauppgifter Webbprogrammering

Tentamen Nätverksprogrammering Lösningsförslag

Handbok SSCd. Peter H. Grasch

Boiler with heatpump / Värmepumpsberedare

App analytics TDP028

SkillGuide. Bruksanvisning. Svenska

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Taking Flight! Migrating to SAS 9.2!

SAMMANFATTNING AV SUMMARY OF

TN LR TT mg/l N b) 2,6-Dimethylphenole

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Volvo Information Technology. Volvo Information Technology HåkanEnarson,

SNABBGUIDE. Telia Anita 20 Bruksanvisning. Bläddra bland lagrade telefonnummer. Radera ett nummer. Radera alla nummer

The test can be performed on the following devices. In addition, the required cuvette and the absorption range of the photometer are indicated.

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

MANUAL LYNC 365 TELEFONI - KONTROLLPANEL

1. Unpack content of zip-file to temporary folder and double click Setup

Objektsamlingar i Java

Urban Runoff in Denser Environments. Tom Richman, ASLA, AICP

Säktest á la ET. Dennis Haglund Konsultchef Test Omegapoint AB

Webbregistrering pa kurs och termin

Transkript:

DB2-åtkomst från WebSphere Idéer och tankar inför etablerandet av best practices vid användning av DB2 i WebSphere-miljö Lennart Henäng OH bild 1

Agenda JCC - ny design och konfiguration (T2/T4) Autenticering och behörighet Spårbarhet och debitering Prestandamätning Loggning, klient och server Felhantering Trace SQLJ vs JDBC OH bild 2

JCC - ny design och konfiguration (T2/T4) DB2 V8.1.4 klient COM.ibm.db2.jdbc.app.DB2Driver JDBC T2 T2 JDBC com.ibm.db2.jcc.db2driver JDBC 2.0 db2cli.ini ODBC CLI T4 JDBC 3.0 URL för Typ 2: jdbc:db2:sample RTE URL för Typ 4: jdbc:db2:host:port/rdbname DRDA samt :propertykey=value; DB2 Består av: db2jcc.jar db2jcc_license_cisuz.jar sqlj.zip Ännu är inget beslut taget om T2 eller T4! OH bild 3

propertykeys - några exempel drivertype user password currentpackageset currentschema currentsqlid retrievemessagesfromserverongetmessage clientuser, clientworkstation... OH bild 4

Autenticering och behörighet Applikationsuser APPL011 säkerhet RACF Connection Pooling (endast T2) Thread Pooling OH bild 5

Autenticering och behörighet Applikationsuser konfigureras i DataSource Applikationen autenticerar användaren Interna användare via anrop till RACF Externa användare via anrop till säkerhet Behörighet kontrolleras mot RACF Egna resurser sätts upp i RACF Grupper ges READ eller UPDATE behörighet Användare kopplas till rätt grupp OH bild 6

Test av autenticering och behörighet Anrop till Stored Procedure AUTHENTICATE #sql {CALL AUTHENTICATE(:in user, :in passwd, :in application, :out outtext, :out statuscode)}; Assemblerprogram anropar RACF RACROUTE REQUEST=VERIFY Bygger ACEE baserat på userid och password RACROUTE REQUEST=AUTH Frågar RACF om behörighet till resurs Stored Procedure svarar med statuscode 0 eller 8 plus meddelande ev SQLSTATE Anrop tar cirka 90 ms varav 60 ms i DB2 OSA-adaptern används inte i nuläget! OH bild 7

Spårbarhet Idag: DSNV401I = DISPLAY THREAD REPORT FOLLOWS - DSNV424I = INACTIVE THREADS - NAME ST A REQ ID AUTHID PLAN ASID TOKEN SERVER R2 0 java APPL011 DISTSERV 00A8 17 V437-WORKSTATION=app1p, USERID=appl011, APPLICATION NAME=java V445-SEFOLK00.U007I001.BB563C56EB75=17 ACCESSING DATA FOR <U007I001>:U007I001 OH bild 8

Spårbarhet Idag: DSNV401I = DISPLAY THREAD REPORT FOLLOWS - DSNV424I = INACTIVE THREADS - NAME ST A REQ ID AUTHID PLAN ASID TOKEN SERVER R2 0 java APPL011 DISTSERV 00A8 17 V437-WORKSTATION=app1p, USERID=appl011, APPLICATION NAME=java V445-SEFOLK00.U007I001.BB563C56EB75=17 ACCESSING DATA FOR <U007I001>:U007I001 Förslag: DSNV401I = DISPLAY THREAD REPORT FOLLOWS - DSNV402I = ACTIVE THREADS - NAME ST A REQ ID AUTHID PLAN ASID TOKEN SERVER RA * 3 db2jccmain APPL011 DISTSERV 0208 54 V437-WORKSTATION=193.44.158.105, USERID=19730415-8652, APPLICATION NAME=S70D016 V445-GA0135E3.G504.00F8EDFF2E26=54 ACCESSING DATA FOR 10.1.53.227 OH bild 9

API för spårbarhet DB2Connection con = (DB2Connection)DriverManager.getConnection( url, userid, password );... // clientuser maximum 16 characters for DB2 for z/os String clientuser = "19730415-8652"; // wkstn maximum 18 characters for DB2 for z/os String wkstn = "193.44.158.105"; // appinfo maximum 32 characters for DB2 for z/os String appinfo = "S70D016"; // accinfo maximum 200 characters for DB2 for z/os String accinfo = "1234";... // Set client information con.setdb2clientuser( clientuser ); con.setdb2clientworkstation( wkstn ); con.setdb2clientapplicationinformation( appinfo); con.setdb2clientaccountinginformation( accinfo );... // Generated correlator (luwid) System.out.println("Correlator: " +con.getdb2correlator ()); //will print: // Create an application trace (four last apps) con.setdb2clientapplicationinformation(appinfo + + getdb2clientapplicationinformation()); //Correlator: GA0135E3.G504.00F8EDFF2E26 OH bild 10

Debitering Ordinarie DB2 Accounting Trace Införs i ordinarie debiteringsrutiner OH bild 11

Prestandamätning end-to-end OH bild 12

API för prestandamätning Kräver JVM 1.4.1 från IBM annars SQLException på getcoredrivertimemicros getnetworkiotimemicros Kräver DRDA-anslutning annars 0 i getservertimemicros... // do some performance measuring DB2SystemMonitor monitor = con.getdb2systemmonitor(); /* I already have a DB2Connection */ monitor.enable(true); // monitor.start(db2systemmonitor.accumulate_times); monitor.start(db2systemmonitor.reset_times); // Call the stored procedure by invoking this method callmystoredproc(outmedian, ctx); // and stop the monitor monitor.stop();... OH bild 13

Test av API för prestandamätning // The Core Driver and Network IO times can only be gotten with an IBM JVM // The Server time always shows as 0 when running with a local DB2 // This is verified with DB2 development (Curt Cotner) 2003-11-03 System.out.println("Application Time: " + monitor.getapplicationtimemillis() + " ms"); try { System.out.println("Core Driver Time: " + monitor.getcoredrivertimemicros() + " us"); } catch (Exception x) { System.out.println("JVM does not have accurate timer support"); System.out.println("Called method was: getcoredrivertimemicros"); } try { System.out.println("Network IO Time: " + monitor.getnetworkiotimemicros() + " us"); } catch (Exception x) { System.out.println("JVM does not have accurate timer support"); System.out.println("Called method was: getnetworkiotimemicros"); } System.out.println("Server Time: " + monitor.getservertimemicros() + " us"); System.out.println("If above time is 0, then you are probably running with a local DB2"); OH bild 14

Output vid prestandamätning Run as a Java app Application Time: 611 ms JVM does not have accurate timer support Called method was: getcoredrivertimemicros JVM does not have accurate timer support Called method was: getnetworkiotimemicros Server Time: 57939 us If above time is 0, then you are probably running with a local DB2 Run within WSAD Application Time: 109 ms Core Driver Time: 100526 us Network IO Time: 52867 us Server Time: 38183 us If above time is 0, then you are probably running with a local DB2 OH bild 15

Loggning, klient och server Klient Authid, Correlation, Application, Workstation, RealUser, Time, AppTime, DriverTime, NetworkIOTime, ServerTime? Server Authid, Correlation (?), Application (V8), Workstation (V8), RealUser (V8), Time... OH bild 16

Felhantering try { #sql {CALL AUTHENTICATE(:in user, :in passwd, :in application, :out outtext, :out statuscode)}; } catch (SQLException e) { if (e instanceof DB2Diagnosable) { DB2Sqlca sqlca = ((DB2Diagnosable) e).getsqlca(); System.err.println("DSNT408I SQLCODE = " + sqlca.getsqlcode() + ", " + sqlca.getmessage()); System.err.println("DSNT418I SQLSTATE = " + sqlca.getsqlstate() + " SQLSTATE RETURN CODE"); // System.err.println("SQLERRM : " + sqlca.getmessage()); // System.err.println("SQLCODE : " + sqlca.getsqlcode()); // System.err.println("SQLSTATE: " + sqlca.getsqlstate()); // String[] tokens = sqlca.getsqlerrmctokens(); // if (tokens!= null) { // for (int i = 0; i < tokens.length; i++) { // System.err.println("ERRMC[" + i + "]: " + tokens[i]); // System.err.println("SQLWARN: " + new String(sqlca.getSqlWarn())); // } // } } } DSNT408I SQLCODE = -471, INVOCATION OF FUNCTION OR PROCEDURE ALHE03.AUTHENTICATE FAILED DUE TO REASON 00E79001 DSNT418I SQLSTATE = 55023 SQLSTATE RETURN CODE OH bild 17

Trace Startas numera ifrån applikationen Har ej testat ännu OH bild 18

SQLJ vs JDBC SQLJ är lättare att koda SQLJ fångar fel tidigare SQLJ är snabbare SQLJ ger bättre säkerhet SQLJ är mer förutsägbart och tillförlitligt SQLJ ger bättre prestandauppföljning SQLJ har stöd i WSAD 5.1 SQLJ hanterar inte spontana queries OH bild 19

PreparedStatement stmt = conn.preparestatement( SELECT MAX(SALARY), AVG(SALARY) + FROM DSN8710.EMP ); rs = statement.executequery(); if (!rs.next()) { // Error no rows found } max.salary = rs.getbigdecimal(1); avgsalary = rs.getbigdecimal(2); if (rs.next()) { // Error more than one row found } rs.close(); stmt.close(); Vadå enklare? OH bild 20

PreparedStatement stmt = conn.preparestatement( SELECT MAX(SALARY), AVG(SALARY) + FROM DSN8710.EMP ); rs = statement.executequery(); if (!rs.next()) { // Error no rows found } max.salary = rs.getbigdecimal(1); avgsalary = rs.getbigdecimal(2); if (rs.next()) { // Error more than one row found } rs.close(); stmt.close(); Vadå enklare? #sql [ctx] { SELECT MAX(SALARY), AVG(SALARY) INTO :maxsalary, :avgsalary FROM DSN8710.EMP }; OH bild 21

SQLJ Program Preparation OH bild 22

SQLJ Program Preparation OH bild 23

sqlj SpSecTE.sqlj Test av SQLJ SpSecTE_SJProfile0 SpSecTE.java SpSecTE.class db2sqljcustomize -url jdbc:db2://mvs84.folksam.se:5144/sefolkdb2 -user lelle03 -password jättehemligt -bindoptions "ISOLATION(CS) PATH(LELLE03) VERSION(TEST)" -collection S70COLL -singlepkgname SPSECTE SpSecTE_SJProfile0 Skapar paketet S70COLL.SPSECTE(TEST) i DB2 OH bild 24