Zur Arbeit mit DB2 in der Arbeitsgruppe Technologie der Informationssysteme Die SQL-Aufgaben, die in den Übungen zu den Vorlesungen der Arbeitsgruppe bearbeitet werden, können (und sollten auch) anhand einer realen Datenbank ausprobiert werden. Für diese Übung verwenden wir das Datenbankmanagementsystem DB2 Universal Database in der Version 10.1 und verschiedene Datenbanken, z.B. die Datenbank UEBUNG. Der Zugriff auf diese Datenbank ist auf verschiedene Art und Weise möglich. In der Übung werden Accounts verteilt. Jeder Account besteht aus einem Nutzerkennzeichen der Form GEPV;; (wobei ;; eine zweistellige Nummer darstellt) und einem Passwort. Mit diesem Account kann man nicht nur auf die Datenbankschnittstelle zugreifen, sondern sich auch auf den Servern der Arbeitsgruppe anmelden und die dort installierte Software nutzen. 1 Webschnittstelle Eine Zugriffsmöglichkeit wird über eine WWW-Datenbankschnittstelle unter der Adresse KWWSVZZZLVLQIRUPDWLNXQLNLHOGHGEV realisiert. Die Datenbankschnittstelle ist von jedem Rechner mit Internetanschluss aus verfügbar. Nach Aufruf der Adresse KWWSVZZZLVLQIRUPDWLNXQLNLHOGHGEV im Browser erscheint zunächst ein Login-Formular. Hier gibt man die Daten seines Accounts ein. Wichtig ist die Auswahl des zu verwendenden Datenbankschemas. Jeder Account arbeitet auf einer eigenen Kopie der Daten, so dass sich das Einfügen und Löschen von Daten und Tabellen nicht auf andere Studenten auswirkt. Nach dem erfolgreichen Anmelden befindet man sich im Hauptmenü, siehe . Es stehen folgende Funktionen zur Verfügung: „Neues Statement“: Eingabe von SQL-Anweisungen „Anzeige aller Tabellen“: Alle Tabellen und Sichten, die momentan in der Datenbank vorhanden sind, werden inkl. der Daten angezeigt. • „logout“: Rückkehr zum Login-Formular • „[Schema] wiederherstellen“: Falls Daten geändert/gelöscht werden, dann kann durch Drücken dieses Buttons die Datenbank wieder in ihren ursprünglichen Zustand versetzt werden. Nach dem ersten Anmelden kann man sich durch Drücken dieses Buttons die Tabellen anlegen lassen. Falls der Browser zu restriktiv eingestellt ist und nur absolut sichere Serverzertifikate zulässt, ist der Zugriff auch über https://merkur-db2.is.informatik.uni-kiel.de:8075/dbs möglich. • • 1.1 SQL-Anweisung Durch Drücken des „Abschicken“-Buttons im Bereich „Neues Statement“ wird die Anweisung ausgeführt und das Ergebnis angezeigt. Bei falschen Eingaben wird die Fehlermeldung des DBMS angezeigt. Das Webinterface nimmt keine Interpretation der Fehlermeldung vor, die Daten werden so angezeigt, wie sie vom DBMS gemeldet werden. Nicht immer sind diese Fehlermeldungen hilfreich. Unter Umständen ist in den im WWW verfügbaren Handbüchern nach dem Fehlercode zu suchen. Innerhalb des Eingabebereichs kann die SQL-Anweisung beliebig durch Einrückungen und Zeilenumbrüche formatiert werden. Hinweis: Schließen Sie die SQL-Anweisung nicht mit einem Semikolon ab. Auch wenn DB2 in dieser Beziehung kulant ist, kann ein Semikolon Probleme verursachen. Das Webinterface ist darauf ausgelegt, immer genau ein SQL-Statement zu bearbeiten. 2 Arbeit im Rechnerraum HRS3 R409 Es stehen in der HRS3 R409 Clients für die Arbeit mit DBs zur Verfügung. Nach dem Einschalten des Rechners öffnet man eine Remote-Verbindung mit dem Programm X2Go Client zum zentralen Terminalserver jupiter der Arbeitsgruppe. Die Login-Daten sind die des dbms-Accounts. Sie finden auf dem Desktop unter „Applications/IBM Data Studio“ einen Shortcut „Data Studio Client“. Nach dem Starten der Steuerzentrale kann eine Datenbankverbindung zum DB2-Server merkur-db2 eingerichtet werden (mehr dazu im Anhang). Sie können hier einzelne sowie mehrere durch Semikolon getrennte SQL-Statements absetzen. Vergessen Sie nicht, diese Statements in einer eigenen Datei zu sammeln. Die erstellten Dateien können Sie in Ihrem GEPV;;-Account hinterlegen. Für einen Datei-Manager gehen Sie auf „Places/Home Folder“. 3 Ändern des Passworts DB2 delegiert die Authentifizierung des Nutzers an das Betriebssystem. Aus diesem Grund steht per Weboberfläche keine direkte Funktion zum Ändern des Passworts bereit. Wer sein Passwort ändern möchte, meldet sich bitte auf einem der Server der Arbeitsgruppe an und nutzt das Kommando SDVVZG zum Ändern des Passworts. Das Anmelden kann entweder lokal im Raum 409 über PuTTY auf dem TerminalClients oder über 66+ aus der Ferne erfolgen: VVKGEPV;;#HULVLVLQIRUPDWLNXQLNLHOGH Notwendig ist ein 66+-Client; unter Windows z.B. PuTTY oder OpenSSH über Cygwin oder Bitvise Tunnelier. Diese 66+-Clients bringen ebenfalls einen 6)73-Client für die Übertragung von Dateien zu den Servern der Arbeitsgruppe mit. 4 Direkter Datenbankzugriff Das Ausführen von SQL-Skripten kann direkt mit den Kommandozeilentools von DB2 erfolgen. Melden Sie sich dazu auf dem Server PHUNXUGE an. Falls Sie von zuhause aus arbeiten, wählen Sie sich zunächst auf dem Server HULVLVLQIRUPDWLNXQLNLHOGH ein und von dort auf dem Server PHUNXUGE: VVKGEPV;;#HULVLVLQIRUPDWLNXQLNLHOGH VVKGEPV;;#PHUNXUGE Auf PHUNXUGEstarten Sie die DB2-Kommandozeile durch Eingabe von GEW. Falls dies zu einem Fehler führt, melden Sie sich bitte beim Administrator der Arbeitsgruppe (R 411), damit dieser ihre Konfiguration prüfen kann. Nach Eingabe von GEW befinden Sie sich im interaktiven Modus der DB2- Kommandozeile. Mit Hilfe des FRQQHFWWR-Befehls verbinden Sie sich zu einer Datenbank. FRQQHFWWR8(%81* verbindet Sie mit der Datenbank 8(%81*. Nachdem die Verbindung erfolgreich hergestellt wurde, können Sie ihre SQL-Befehle eingeben. Schließen Sie jedes Statement mit einem Semikolon ab. Eine Anfrage, die immer funktioniert, ist z.B. VHOHFWIURP6<6,%06<6'800< Sie beenden die Verbindung, indem Sie WHUPLQDWH eingeben. Danach befinden Sie sich wieder in der normalen Shell. Wer ein SQL-Skript ausführen will (z.B. die Datei VNULSWVTO), kann in der Shell folgendes Kommando eingeben: GEWIVNULSWVTO Mittels der Anweisung GEWIVNULSWVTO!RXWW[W werden alle bei der Ausführung des Skriptes anfallenden Meldungen in der Datei RXWW[W gespeichert. Das Skript sollte die FRQQHFWWR- und WHUPLQDWH-Anweisungen enthalten. Im Folgenden sei der Aufbau des Skriptes VNULSWVTO beispielhaft dargestellt. 9HUELQGXQJ]XP'%6FKHPD FRQQHFWWR8(%81* $EVHW]HQYRQ64/6WDWHPHQWV VHOHFWIURP6<6,%06<6'800< 7UHQQHQGHU9HUELQGXQJ WHUPLQDWH Wenn das Skript diese Anweisungen nicht enthält, kann man auch Folgendes in der Shell eingeben (angenommen, man möchte in der Datenbank 8(%81* arbeiten): GEFRQQHFWWR8(%81* GEWIVNULSWVTO GEWHUPLQDWH Hinweis: DB2 ist allergisch gegen Textdateien, die unter Windows erstellt wurden und dadurch eine Windows-Zeilenendekennung besitzen. Falls das Skript unter Windows erzeugt wurde, sollte die Datei vor Aufruf der Befehle konvertiert werden: GRVXQL[VNULSWVTO!VNULSWVTOXQL[ Anschließend wird mit VNULSWVTOXQL[ weitergearbeitet. 5 Arbeit mit lokaler Datenbankverbindung Wer von zuhause aus mit DB-Entwurfstools arbeiten möchte, kann auch eine direkte Verbindung zum DBMS herstellen. Da sich jedoch PHUNXUGE im abgesicherten Bereich der Arbeitsgruppe befindet, ist ein „Umweg“ notwendig, um eine Verbindung aus dem WWW heraus aufzubauen. Dazu verwendet man HULVLVLQIRUPDWLNXQLNLHOGH als „Tor“ zu dem internen Netzwerk der Arbeitsgruppe und baut über diesen einen SSH-„Tunnel“ zwischen dem eigenen Rechner und PHUNXUGE auf. Die Arbeitsweise des dann aufgebauten SSH-Tunnels wird durch Abbildung 2 veranschaulicht. Abbildung 2: Workflow mit einem SSH-Tunnel Anfragen, die an das DBMS gerichtet werden sollten, werden bei erfolgreich aufgebautem Tunnel an ORFDOKRVW gestellt (z.B. an Port 50000). Der SSH-Dienst nimmt diese entgegen, leitet sie an HULVLVLQIRUPDWLNXQLNLHOGH weiter, der sie seinerseits an PHUNXUGE, Port 50000 weiterleitet, wo sie von dem DBMS entgegengenommen und weiterverarbeitet werden können. Dieser Vorgang kann etwa als die Weiterleitung eines lokalen Ports an dem Port eines entfernten Rechners (in diesem Fall PHUNXUGE) illustriert werden. Hinweis: Der Port des lokalen Rechners muss nicht zwangsläufig 50000 sein; diesen kann jeder je nach geltenden Sicherheitsrichtlinien selbst wählen. Aber der Port 50000 von PHUNXU GE ist zwingend, da dieser der Port ist, an dem das DBMS „lauscht“. Der generische SSH-Befehl zum Aufbauen eines SSH-Tunnels ist dann VVK/SRUW!PHUNXUGEGEPV;;#HULVLVLQIRUPDWLNXQLNLHOGH wobei SRUW! mit dem gewünschten lokalen Port zu ersetzen ist. Je nach Gegebenheiten, wie z.B. verwendeter „Tunnel-Client“, Betriebssystem oder Sicherheitsfreigaben, kann der obige Befehl geändert werden. 5.1 JDBC Wer per JDBC auf die Datenbanken zugreifen möchte, benutzt bitte den DB2-JCC-Treiber. Der „alte“ Treiber (GEMDYD]LS) ist nicht mit dieser DB2-Version kompatibel. An dieser Stelle sei nochmals hingewiesen, dass zurzeit die Verbindung mit PHUNXUGE nur indirekt über einen SSH-Tunnel geschehen kann. Zu diesem Zweck ist, nach erfolgreichem Tunnel-Aufbau, die JDBC-Verbindungsurl entsprechend zu setzen: MGEFGEORFDOKRVWSRUW!GDWDEDVH!SDUDPHWHU! wobei SRUW! der lokale, an PHUNXUGE „weitergeleitete“ Port ist, GDWDEDVH! der Name der gewünschten Datenbank und SDUDPHWHU! die Verbindungsparameter, wie z.B. Benutzer-name und Passwort. Für eine ausführliche Einführung in JDBC sei hiermit auf http://www.is.informatik.uni-kiel.de/~fiedler/teaching/ss2007/dbs1/JDBC.pdf verwiesen. 5.2 DB2 Server Client Werkzeuge zum Abfragen von DB2-Datenbanken, Anzeigen von Ausführungsplänen etc. werden von IBM zur Verfügung gestellt und können auf Ihrem privaten Rechner installiert und benutzt werden. Dazu ist die DB2-Client-Software unter !"#$!%&$'&()*+*&,-%',+,))'-,"& herunterzuladen und zu installieren. Laden Sie von der oben genannten Seite das IBM Data Studio herunter. Für die Client-Installation werden Administrator-Rechte benötigt. Nach erfolgreicher Installation des DB2-Clients ist dieser mit dem Datenbanksystem am Lehrstuhl zu verbinden. Der im Folgenden beschriebene Weg dafür ist sicherlich nicht der Einzige, doch er ist intuitiv und führt mit wenig Aufwand zum Erfolg. 1. Die erfolgreiche Benutzung einer Datenbank durch den DB2-Client setzt voraus, dass diese erst „katalogisiert“ wird. Dazu muss dem Client mitgeteilt werden, wo die Datenbank zu finden ist. Dazu a. Bauen Sie bitte einen SSH-Tunnel wie oben beschrieben auf und vergewissern Sie sich, dass dieser ordnungsmäßig funktioniert. b. Teilen Sie dem Client mit, welchen DB2-Server Sie benutzen möchten und wo sich dieser befindet – siehe Anhang. Dabei bezeichnet SRUW! wieder den lokalen Port, der durch den SSH-Tunnel an PHUNXUGE weitergeleitet wird und <host> der localhost. Sind alle DB2-Server (als Knoten) und alle DB2-Datenbanken, die Sie verwenden möchten, angebunden, so brauchen Sie vor jeder Benutzung der Datenbanken nur noch einen SSHTunnel mit PHUNXUGE aufzubauen und die graphische Oberfläche des DB2-Clients zu starten. 6 Hilfe, ich kann nicht auf die Datenbank zugreifen! Wo gehobelt wird, da fallen Späne - dies gilt auch für den Übungsbetrieb. Die große Anzahl an relativ unerfahrenen Benutzern ist eine große Herausforderung für jedes System. Der Rundum-die-Uhr-Zugriff auf die Server der Arbeitsgruppe über ein Webinterface wurde eingeführt, um die Übungen angenehmer und effizienter zu gestalten. Ein echter 24/7-Betrieb bindet aber personelle und finanzielle Ressourcen, die sich für den Übungsbetrieb nicht rechtfertigen lassen. Außerdem würden einige Anfragen, die von Studenten aus Unwissenheit an die Systeme gestellt werden, im realen Produktivbetrieb als „Angriff“ gewertet werden. Deshalb kann es immer wieder zu Systemausfällen kommen. Um einen vernünftigen Übungsbetrieb sicherzustellen, sollte deshalb Folgendes beachtet werden: 1. Seien Sie auf Systemausfälle gefasst! Lösen Sie ihre Übungsaufgaben nicht erst 5 min vor dem Abgabetermin, sondern nutzen Sie die gesamte Bearbeitungszeit. 2. Support von Seiten der Arbeitsgruppe wird nur während der üblichen Dienstzeiten gewährt. 3. Wer unsicher im Umgang mit SQL und/oder Linux-Systemen ist, sollte seine Aufgaben während der üblichen Dienstzeiten im Rechnerraum der Arbeitsgruppe (HRS3, Raum 409) erledigen. Wenn Ihnen einmal ein Fehler passiert (der zu einem Ausfall führt) oder Sie einen Systemausfall bemerken, dann benachrichtigen Sie den Administrator der Arbeitsgruppe (Steffen Gaede) und ihren Übungsleiter mit einer E-Mail an GEV#LVLQIRUPDWLNXQLNLHOGH Wir werden uns um das Problem kümmern. Keiner muss Angst haben, dass Bedienfehler negativ angerechnet werden. Es ist schlimmer, ein Problem zu vertuschen. Wichtig: „Nichts geht mehr“ ist keine vernünftige Fehlermeldung. Versuchen Sie, das konkrete Problem zu identifizieren. Dadurch sorgen Sie dafür, dass es schneller behoben wird. Versuchen Sie folgendes und schildern Sie bei ihrer Fehlermeldung ihre Erkenntnisse. Nennen Sie bitte jedes mal unbedingt Ihren Account. a) Können Sie sich per Webschnittstelle zu einer der anderen Datenbanken verbinden? b) Falls das Webinterface überhaupt nicht erreichbar ist: können Sie sich per VVK auf HULVLVLQIRUPDWLNXQLNLHOGH anmelden? VVKGEPV;;#HULVLVLQIRUPDWLNXQLNLHOGH L Wenn nicht: welche Ausgabe erzeugen folgende Befehle: SLQJHULVLVLQIRUPDWLNXQLNLHOGH . LL / SLQJZZZJRRJOHGH Wenn ja: versuchen Sie mit den Kommandozeilentools zu arbeiten: VVKGEPV;;#PHUNXUGE GEW FRQQHFWWR8(%81* VHOHFWIURP6<6,%06<6'800< WHUPLQDWH Kommen Fehlermeldungen? 7 Anhang – Einrichtung Datenbankverbindung im Data Studio Zur Einrichtung einer Datenbankverbindung zum DB2-Server über das Data Studio klicken Sie zunächst auf „Neue Verbindung zu Einer Datenbank“ In den Verbindungsparametern wählen Sie DB2 für Linux, Unix und Windows, in den Eigenschaften die Datenbank, den Server merkur-db2 und Ihren dbmsXX-Account und das dazugehörige Kennwort. 0 Wenn die Verbindung erfolgreich mit „Verbindung testen“ war, klicken Sie auf „Fertig stellen“. Im nächstem Schritt ändern Sie die Aktivität von „Datenbanken verwalten“ auf „SQL ausführen“: Zunächst stellen Sie eine Verbindung zu Ihrem Datenbankprofil her Klicken Sie auf „Fertigstellen“, nach Auswahl des richtigen Profils. 12 Nun können im Editor einzelne oder mehrere Befehle eingegeben werden. Zum Abschluß den Play-Button drücken. Die Rückantworten tauchen zu jeder Anweisung in Register „Status“ auf, und falls eine Ergebnismenge zurückgegeben wurde, taucht zu der Anweisung ein Register „Ergebnis“ auf. Mehr Fragen zum Data Studio, werden im IBM Blog zum Data Studio unter „https://www.ibm.com/developerworks/community/blogs/59a36a54-50c8-4de0-a587ec9eb47ceb5f?lang=en“ beantwortet. 11