Aktualisierungen finden Sie in Bekannte Probleme mit dem Debugger für Routinen.
Zur Vermeidung dieses Problems aktualisieren Sie die Datenbankmanagerkonfiguration, um ein anderes JDK anzugeben, indem Sie den folgenden Befehl aus einem DB2-Befehlsfenster ausführen:
db2 update dbm cfg using JDK_PATH new-JDK-path
db2set DB2LIBPATH
db2set DB2LIBPATH=/home/db2inst1/sqllib/java/jdk64/jre/lib/amd64
db2stop force
db2start
db2set DB2LIBPATH
Zur Änderung der Benutzervorgabe für die Position von Routine Debug Session Manager wählen Sie Position von Routine Debug Session Manager entweder Integrierten Sitzungsmanager verwenden oder Bereits aktiven Sitzungsmanager verwenden aus.
aus. Wählen Sie in Benutzervorgaben die Option aus, um die Benutzervorgaben für das Debugging auszuwählen. Wählen Sie den Datenbankserver für die Routinen aus, für die Sie ein Debugging ausführen. Wählen Sie im AbschnittWenn Sie das Debugging für eine Routine für eine lokale DB2-Datenbank ausführen, erhalten Sie möglicherweise die Fehlernummer SQL1224N:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N Ein Datenbankagent konnte nicht für die Anforderung gestartet werden oder er wurde aufgrund eines Systemabschlusses der Datenbank bzw. durch den Befehl FORCE beendet. SQLSTATE-Wert=55032
Dieser Fehler wird vom Linux-Kernel (Linux Kernel Bugzilla Bug #351) verursacht. Die folgenden Anweisungen dienen als Fehlerumgehung, bei der die DB2-Verbindungsaufbaumethode TCPIP (als Rückschleife) statt CLI (Call Level Interface) verwendet wird. Bei dieser Vorgehensweise verwendet der Debugger denselben Aliasnamen der Datenbank wie zuvor:
Für die Schritte 2 bis 7 müssen Sie sich als DB2-Instanzeigner anmelden.
db2set db2comm
Wenn die Ausgabe nicht das Schlüsselwort tcpip enthält, müssen Sie den folgenden Befehl eingeben, um die Registry-Variable db2comm mit der Angabe tcpip zu aktualisieren:
db2set db2comm=<vorhandene_protokollnamen>,tcpip
Die Registry-Variable db2comm bestimmt das Protokoll, dessen Verbindungsmanager beim Start des Datenbankmanagers aktiviert wird. Sie können diese Variable für mehrere Kommunikationsprotokolle festlegen, indem Sie die Schlüsselwörter mit Kommata trennen.
Sie müssen den Befehl db2start erneut absetzen, damit die Verbindungsmanager für die vom Registry-Parameter db2comm angegebenen Protokolle gestartet werden. Da Sie DB2 in Schritt 7 erneut starten, müssen Sie das jetzt nicht tun.
.Geben Sie den folgenden Befehl ein, um die aktuelle Einstellung des Parameters SVCENAME zu überprüfen:
db2 get dbm cfg | grep -i svcename
Wenn Sie die Einstellung des Parameters SVCENAME aktualisieren müssen, können Sie den folgenden Befehl eingeben:
db2 update dbm cfg using svcename <verbindungsservicename>
Dabei muss bei <verbindungsservicename> die Groß-/Kleinschreibung beachtet werden und der Name muss mit dem Namen des Service-Ports übereinstimmen, den Sie in /etc/services gestellt haben (z. B. db2 update dbm cfg using svcename db2c_db2inst1).
Die Aktualisierung der Datenbankmanagerkonfiguration wird erst wirksam, wenn der Befehl db2start das nächste Mal abgesetzt wird. Diese Aktion werden Sie in Schritt 7 durchführen.
db2 catalog tcpip node <knotenname> remote <hostname> server <verbindungsservicename>
Dabei gilt Folgendes:
Setzen Sie den folgenden Befehl ab, um zu überprüfen, ob der Katalogisierungsbefehl ordnungsgemäß ausgeführt wurde:
db2 list node directory
Beispielausgabe dieses Befehls, in der zur besseren Lesbarkeit Leerzeilen entfernt wurden:
Knotenverzeichnis Anzahl Einträge im Verzeichnis = 1 Eintrag für Knoten 1: Knotenname = MYNODE Kommentar = Protokoll = TCPIP Hostname = 127.0.0.1 Servicename = db2c_db2inst1
Beispiel:db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 catalog db WASLOOP as WAS at node MYNODE
Anmerkungen:
Beispielausgabe für die Schritte 5a bis 5c
Vor Schritt 5a war bereits eine lokale Datenbank mit dem Namen WAS erstellt worden. Der Befehl db2 list db directory ergibt eine Ausgabe, die der folgenden Nachricht ähnelt:
Systemdatenbankverzeichnis
Anzahl Einträge im Verzeichnis = 1
Eintrag für Datenbank 1:
Aliasname der Datenbank = WAS
Datenbankname = WAS
Lokales Datenbankverzeichnis = /home/ctsui
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Indirekt
Katalogknotenummer = 0
Nach Schritt 5a ergibt db2 list db directory eine Ausgabe, die der folgenden Nachricht ähnelt:
Systemdatenbankverzeichnis
Anzahl Einträge im Verzeichnis = 2
Eintrag für Datenbank 1:
Aliasname der Datenbank = WAS
Datenbankname = WAS
Lokales Datenbankverzeichnis = /home/ctsui
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Indirekt
Katalogknotenummer = 0
Eintrag für Datenbank 2:
Aliasname der Datenbank = WASLOOP
Datenbankname = WAS
Lokales Datenbankverzeichnis = /home/ctsui
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Indirekt
Katalogknotenummer = 0
Nach Schritt 5b ergibt db2 list db directory eine Ausgabe, die der folgenden Nachricht ähnelt:
Systemdatenbankverzeichnis
Anzahl Einträge im Verzeichnis = 1
Eintrag für Datenbank 1:
Aliasname der Datenbank = WASLOOP
Datenbankname = WAS
Lokales Datenbankverzeichnis = /home/ctsui
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Indirekt
Katalogknotenummer = 0
Nach Schritt 5c ergibt db2 list db directory eine Ausgabe, die der folgenden Nachricht ähnelt:
Systemdatenbankverzeichnis
Anzahl Einträge im Verzeichnis = 2
Eintrag für Datenbank 1:
Aliasname der Datenbank = WAS
Datenbankname = WASLOOP
Knotenname = MYNODE
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Fern
Katalogknotenummer = -1
Eintrag für Datenbank 2:
Aliasname der Datenbank = WASLOOP
Datenbankname = WAS
Lokales Datenbankverzeichnis = /home/ctsui
Releasestand der Datenbank = 9.00
Kommentar =
Verzeichniseintragungstyp = Indirekt
Katalogknotenummer = 0
Setzen Sie die folgenden zwei Befehle ab, um zu überprüfen, ob der Befehl catalog db ordnungsgemäß ausgeführt wurde (siehe auch die folgende Beispielausgabe):
db2 connect to wasloop
db2 connect to was
Dabei gibt db2 connect to wasloop die Verbindungsinformationen aus und db2 connect to was ergibt den Fehler SQL1403N.
Beispielausgabe von db2 connect to wasloop:
Datenbankverbindungsinformationen
Systemdatenbankverzeichnis
Datenbankserver = DB2/6000 6.1.0
SQL-Berechtigungs-ID = CTSUI
Aliasname der lokalen Datenbank = WASLOOP
Beispielausgabe von db2 connect to was:
Datenbankverbindungsinformationen
Systemdatenbankverzeichnis
Datenbankserver = DB2/6000 6.1.0
SQL-Berechtigungs-ID = CTSUI
Aliasname der lokalen Datenbank = WAS
db2 update dbm cfg using authentication client
Zeigen Sie die neue Einstellung mit dem folgenden Befehl an, um zu überprüfen, ob der Befehl ordnungsgemäß ausgeführt wurde:
db2 get dbm cfg
Beispielausgabe:
....
Datenbankmanagerauthentifizierung (AUTHENTICATION) = CLIENT
....
db2stop
db2start
Anmerkung: Sie müssen unter Umständen den Befehl db2stop force verwenden, um alle aktiven Datenbankverbindungen zu schließen.
Beispiel:db2 attach to KNOTEN user ottomueller using kennwort db2 drop db WAS