RUG 2017 Trace JDBC error
Första indikationen
Bakgrund Extrahera data från ERP system (Order, Faktura, Produkt, Kund mm) Hämta förändrat data och skicka som XML via MQ ERP System. Egen utvecklade: Mainframe OFO, SOPIC, mm Inköpta: AS400 (Movex, Brain, JD Edwards, S21 mm) Affärsområden SMT (Stål) SHM (Hårdmaterial)
Varför nu? Har vi gjort några ändringar? Inte den senaste månaden Vi har enhetstester och integrationstester som körs varje natt När började problemet 2016-06-20 14:43 (Japan) Är alla bolag inblandade? Både SMT och SHM har problem, men inte alla marknader Gäller det bara double byte marknader? Till en början ser det så. Men det beror på att de kör natt batch från 13:00 Svensk tid. Första icke double marknad är Singapore (037) Problemet berör 5 AS400 maskiner
Vad säger manualen om -7008? https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzala/rzalaml.htm
Vad säger manualen?
Felanmälan Ser inte ut som ett applikations problem Skapa incident Skickas till infrastruktur Har man gjort något på infrastruktur sidan? Ja, Servicefönster 2016-06-19 (Söndag, problem börjar Måndag eftermiddag) Har våra testfall rapporterat några fel? Våra testfall som körs varje natt har inga problem Kan vi återskapa problemet Ja, om vi kör om marknader i produktion får vi samma fel Går det att återskapa både på AS400 och lokalt på PC Ja, både lokalt på AS400 och remote från PC
Vad har man förändrat?
Några kandidater SF99701 DB2 for system i SF99572 Java Preventive Service Planning (PSP) Dessa består av många PTF:er Skickar fråga till infrastruktur om dessa finns i Utveckling och Test Ja, dessa är på Hur kan våra automat tester fungera i Test? Bra fråga
Backa ur Ska vi be infrastruktur backa ur dessa? Vi vet fortfarande inte om det är dessa, men har inga andra kandidater Vi ber infrastruktur att backa ur ändringarna Svaret blir att de inte kan backa ur ändringarna Varför? Det krävs en IPL för att backa ur
Väg framåt Hur bråttom har våra kunder? Detta är statistik, så det brinner bara lite Ordinarie 5250 applikationer fungerar Kan vi se någon röd tråd? Olika marknader åker ur på olika ställen fast det är samma program Vad har de olika SQL:er för gemensam nämnare? Bra fråga Går det att köra de SQL:er som får problem från något annat verktyg? Ja, från Data Studio och vi får samma fel. (Ett fall framåt)
Återskapa felet Går det även att återskapa felet via SQL mot Utveckling och Test? Ja, det går bra att återskapa problemet där. Hur kan det vara möjligt? Inga testfall har ju åkt ur. Eller? Nu när jag tittar på testfallen Test, så åker de ur När började detta? Natten Måndag / Tisdag. Hur länge har PTF:erna varit på i Test? Samma tid som i Produktion och Utveckling Hur är det möjligt? Uppdatering av alla tre miljöerna samma dag
Trace på AS400 (DBMON) STRDBMON OUTFILE(QGPL/DBMON1) OUTMBR(*FIRST) JOB(*ALL) TYPE(*DETAIL) Återskapa felet ENDDBMON JOB(*ALL) Eftersom jag inte hade rättigheter att köra detta, så blev det tidsödande Finns det ett bättre sätt? Toolbox
Toolbox JT Open Open source version av Toolbox Hemsida http://jt400.sourceforge.net JDBC support Kolla status på jobb Anropa Cobol / RPG program Kolla spool kö Kommer åt fil systemet System status Starta trace dynamiskt mm
http://www-01.ibm.com/support/docview.wss? uid=nas8n1018744
Finns det andra sätt? Via Data studio kan man trace:a SQL statements För att göra detta behöver man veta namnet på DB2 instansen WRKRDBDIRE. Default är Serial Number. Nya använder servernamnet
Data Studio
Data Studio JCC Driver
JCCTrace
Data Studio JT400 Driver
JCC vs JT400 JCC Ett lätt sätt att se vad som skickas mellan klient och server Gäller alla plattformar Går att starta trace:ar via Data Studio JT400 Ett lätt sätt att se vad som skickas mellan klient och server Kan se mer på server sidan Kräver mer behörighet Bara AS400 Går att konfigurera så att en trace startas dynamiskt Alternativet kan vara en nätverks snifffer (WireShark) Man ser vad som skickas på nätverket men det finns ingen Meta Data
Toolbox settings (Eclipse)
Toolbox settings (AS400) INSTANCE_CONFIGURATION_FILE=-Dconf.properties=$EXEC_DIR/$CONF_DIR/configuration.properties TOOLBOX_1=-Dcom.ibm.as400.access.Trace.category=all TOOLBOX_2=-Dcom.ibm.as400.access.Trace.file=/home/trace/ToolboxTrace880a.txt TOOLBOX_3=-Dcom.ibm.as400.access.ServerTrace.JDBC=12 echo "$JAVA $CPATH $INSTANCE_CONFIGURATION_FILE $TOOLBOX_1 $TOOLBOX_2 $TOOLBOX_3 $LOG4J_CONFIGURATION $JAVA_EXECUTABLE" >> $LASTEXEC_FILE $JAVA $CPATH $INSTANCE_CONFIGURATION_FILE $TOOLBOX_1 $TOOLBOX_2 $TOOLBOX_3 $LOG4J_CONFIGURATION $JAVA_EXECUTABLE >> $LASTEXEC_FILE 2>&1
Toolbox Trace
Nu har vi ringat in felet Labbet säger att DB2 lämnar ifrån sig SqlState 020000 SqlCode +100 I java programmet får vi SqlState 55019 SqlCode -7008
Sökvägar Labbet vill att vi byter ut Query Optimizer Settings Hur gör man det? CRTLIB LIB(QIBMCIRC) CRTDUPOBJ OBJ(QAQQINI) FROMLIB(QSYS) OBJTYPE(*FILE) TOLIB(QIBMCIRC) DATA(*NO) CST(*YES) TRG(*YES) INSERT INTO QIBMCIRC/QAQQINI VALUES('IGNORE_DERIVED_INDEX', '*NO', NULL) Sedan kan man byta emellan den dessa CHGQRYA QRYOPTLIB(QIBMCIRC) CHGQRYA QRYOPTLIB(QUSRSYS) Efter nya sökvägar så fungerar SQL:en Nu kan labbet återskapa problemet
Sammanfattning APAR SE65170 PTF SI61194 Den kräver ingen IPL Alla ekonomer är lyckliga för nu är det dags för kvartalsrapport