PDA

View Full Version : DRDA Protokollfehler



Kampi4
08-07-09, 09:42
Hallo zusammen,
habe ein kleines Problem:
Ich habe auf der AS400 einen Job laufen, der in bestimmten Zeitabständen eine FTP Verbindung zu einem Server aufmacht um Daten abzuholen.
Dafür holt er sich per SQL die IP + Username + Passwort.

Das klappt auch einwandfrei. Nur irgendwann nach ein paar Hundert (Tausend?) Mal, bekomme ich einen "DRDA Protokollfehler".

Ich vermute mal, nachdem ich ein wenig im Internet rumgelesen habe, dass das nichts mit FTP, sondern mit der SQL Abfrage zu tun hat, oder?

Wie kommt dieser Fehler auf einmal zustande, wenn vorher das SQL schon weiss ich nicht wie oft funktioniert hat.

Oder ist es doch ein anderer Fehler?

Schon mal vielen Dank für die Hilfe im Voraus!

Mfg Kampi

Fuerchau
08-07-09, 10:00
DRDA ist das Datenbankprotokoll für ferne SQL-Zugriffe zwischen AS/400-Systemen (nicht zu verwechseln mit ODBC).

Das Problem könnte ein Ressourcenengpass sein, wenn nach dem SQL-Zugriff nicht "aufgeräumt" wird.

Kampi4
08-07-09, 10:04
Hi, danke für die schnelle Antwort.
Also das SQL wird ja auf der AS400 ausgeführt und greift auf die interne AS400 Datenbank zu.
Wie könnte ich diesen Engpass denn umgehen bzw. bereinigen. Wie kann ich "aufräumen"?

Danke schon mal für die Antwort!!

Mfg KAMPI

Fuerchau
08-07-09, 12:36
Bist du sicher dass du auf die lokale DB und nicht per RDB (WRKRDBDIRE) auf eine ferne AS/400 zugreifst ?

Aufräumen kann man per RCLRSC, RCLACTGRP. Besser ist es, dass der SQL-Zugriff definitiv Ressourcen freigibt "exec sql set option ...;".

Kampi4
08-07-09, 12:43
Ja, greife auf jeden Fall lokal zu.
Statement ist folgendes:

C/exec sql
C+ select kofun into :ip
C+ from hrkontrl
C+ where konum = 'IPS' and kopn = 'OPC_IP'
C/end-exec

Wie sähe das dann mit der definitiven Ressourcenfreigabe aus?

Habe das jetzt mal umgestellt, dass das Statement nicht mehr allzu oft aufgerufen wird.

Interessieren würde mich das mit der Freigabe natürlich trotzdem ;)

Danke für deine Hilfe!

Mfg KAMPI

Fuerchau
08-07-09, 14:01
Da du in diesem Fall keinen Cursor hast, gibts nix freizugeben (SQL hält da nur die ODP's offen).

Per "set option closqlcsr=*endmod" kann man zwar etwas verbessern, bringt in deinem Fall aber nichts.

Hierzu wäre im Fehlerfall tatsächlich das Joblog mal hilfreich.