Aktualisierungen finden Sie in Bekannte Probleme mit dem Debugger für Routinen.
Der Debugger für PL/SQL-Routinen unterstützt keine globalen Variablen. Die Variablensicht zeigt keine globalen Variablen an, die innerhalb einer gespeicherten PL/SQL-Prozedur, einer Funktion oder eines PL/SQL-Pakets verwendet werden.
Wenn Sie das Debug 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 Registrierdatenbankvariable db2comm mit der Angabe tcpip zu aktualisieren:
db2set db2comm=<vorhandene_protokollnamen>,tcpip
Die Registrierdatenbankvariable 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 Registrierungsparameter 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