Anmelden

View Full Version : ODBC-SQL Statement auf iSeries nachvollziehen



Hütti
19-11-10, 10:36
hallo,

auf unser System iSeries greifen diverse User über einen technischen Benutzer per ODBC auf die iSeries zu.
Dadruch wird ein Job QZDASOINIT durch den technischen User erzeugt. Leider laufen diese Jobs teilweise ins Nirvana. Ich kann aktuell nicht festellen, welcher User den Job ins System gestellt hat (klar, da technischer USer bei allen gleich).
Kann man irgendwie in dem laufenden Job das Sql-Statement sehen? Dadruch könnte ich den Anwenderkreis einschränken, bzw. erkennen, was die da erstellt haben und warum der Job z.B. extreme Performnace zieht.

Danke

Fuerchau
19-11-10, 10:45
Der aktuelle User wird bei WRKACTJOB (ab V5R4) doch angezeigt.
Alternativ kann man in das Joblog hineinsehen, dort steht der aktuelle Benutzer auch drin.

Über den OpsNav (vor V5R4) wird der aktuelle User für diese Jobs auch angezeigt.

Die SQL-Befehle lassen sich über Einträge in der QAQQINI protokollieren.

Ggf. gibt der Indexadvisor (OpsNav) weitere Hinweise, dass noch Indexe anzulegen wären.

Wenn man sich mit der Auswahl 12 die Sperren eines QZDASOINIT's ansieht, suche da mal nach der Art *SQLPKG. Diese werden normalerweise in die QGPL gelegt und können per PRTSQLINF ausgedruckt werden. Auch hier sieht man dann, welche SQL's verwendet werden.

Hütti
19-11-10, 10:53
hallo,

ja, der user wird angezeigt, ist aber der technische user, und der ist bei allen gleich....
schaue mir deine anderen hinweise einmal an, sofern ich die rechte dafür habe.

danke

BenderD
19-11-10, 10:58
... am effektivxten bekommt man das mit dem Database Monitor zu packen, da muss man keine Joblogs umgraben, oder mit der Maus die Krümel vom Tisch fegen...

D*B


hallo,

auf unser System iSeries greifen diverse User über einen technischen Benutzer per ODBC auf die iSeries zu.
Dadruch wird ein Job QZDASOINIT durch den technischen User erzeugt. Leider laufen diese Jobs teilweise ins Nirvana. Ich kann aktuell nicht festellen, welcher User den Job ins System gestellt hat (klar, da technischer USer bei allen gleich).
Kann man irgendwie in dem laufenden Job das Sql-Statement sehen? Dadruch könnte ich den Anwenderkreis einschränken, bzw. erkennen, was die da erstellt haben und warum der Job z.B. extreme Performnace zieht.

Danke

Fuerchau
19-11-10, 11:40
Das mit dem "techn. User" habe ich übersehen.
Wenn ein Job das System stärker belastet so kann man leider nur über das Joblog (ggf. API's) die IP-Adresse des Users herausfinden.

Der Database-Monitor liefert ggf. sehr viele Informationen, die wieder schwierig zu filtern sind.

andreaspr@aon.at
19-11-10, 11:45
Hallo,
es gibt auch eine andere Möglichkeit im iSeries Navigator:
Rechtsklick auf Datenbanken (nicht die Datenbank, sondern die Auswahl 'Datenbanken'!!) --> Akutelle SQL für einen Job ... --> Job auswählen --> SQL-Anweisung
Dadurch wird die zuletzt ausgeführte SQL-Anweisung dieses Jobs angezeigt.
Da kannst du dann auch mit Visual Explain arbeiten usw.

lg

BenderD
19-11-10, 11:49
... das übt sich. Erst die Jobs mit SQL selektieren, dann nach Laufzeit absteigend sortieren und von oben runter abarbeiten, Interessant sind ohnehin nur die Penner und vielleicht noch Durchschnittswerte. Nach meiner Erfahrung findet man in einem Tag mit dem DB Monitor mehr, als mit allen anderen Alternativen in Wochen.

D*B



Der Database-Monitor liefert ggf. sehr viele Informationen, die wieder schwierig zu filtern sind.