www.ordix.de news Spring AOP 2009 € 2,20 Kundenservice groß geschrieben: Einführung in die aspektorientierte Programmierung mit Spring S. 12 Ein Data Warehouse für den Admin Open Source Reporting mit BIRT Backup und Recovery mit NIM Mit „screen“ zur Schirmherrschaft Mit „Datenauflistung“ beim MS SQL Server 2008 Perfomance-Indikatoren sammeln S. 06 IBM AIX NIM kann mehr als nur installieren 01 S. 38 Das kostenlose Tool ist eine empfehlenswerte Alternative zu kommerziellen Produkten S. 18 Tipps und Tricks aus der Unix-Welt S. 44 Save the Date DOAG Logistik & SCM 2009 12. Mai 2009 im DHL Innovation Center, Troisdorf X Erleben Sie die neuesten Innovationen und globale Logistiklösungen in einer einzigartigen Location X Informieren Sie sich über die neuesten Strategien und Entwicklungen aus diesem Bereich X Tauschen Sie sich mit Entscheidern der unterschiedlichen Branchen über aktuelle Best Practices aus X Erweitern Sie Ihr Know-how und Ihr Netzwerk für den Themenbereich Logistik & SCM X Diskutieren Sie mit Oracle Experten und Führungskräften über neue und innovative Ideen für Ihre Projekte X Alle Infos und Anmeldung unter www.doag.org/go/logistik Editorial Nullen oder Einsen Paderborn, März 2009 Die Informatik ist eigentlich ganz einfach und klar: Sie besteht nur aus 0 oder 1. Deswegen sollten Sie in der IT-Branche auch richtig schnell zu klaren, eindeutigen Aussagen und Ergebnissen kommen. Stimmt es? Nein? Ach, geht es Ihnen auch so, dass sich Ihre IT-Spezialisten bei irgendeinem Phänomen oder Fehler schlimmer winden als ein Aal an Land, um wieder ins Wasser zu gelangen? Anstatt klare Aussagen zu einem Fehler oder einem Termin bekommen Sie eine Anhäufung von Entschuldigungen, Allgemeinplätzen und Konjunktiven? Viele IT-Spezialisten verhalten sich also fast wie Politiker im Wahljahr - bloß keine Entscheidung treffen, sich ja nicht festlegen. Wahlen sind übrigens jedes Jahr und auch bei Politikern gibt es Nullen oder Einsen, aber meist mehr Nullen als Einsen. Nehmen wir unseren alten und neuen Wirtschaftsminister: Der alte wollte eigentlich nie Wirtschaftsminister sein (Zitat: „Ich hoffe, dass es meinem Land nie so dreckig geht, dass es auf Leute wie mich zurückgreifen muss“), konnte das aber erst nach knapp dreieinhalb Jahren klar sagen. Der neue kennt Wirtschaft vermutlich nur vom Besuch einer solchen (für Nicht-Bayern oder Franken: Wer dort in die Wirtschaft geht, will meist nur ein Bier trinken). Aber als smarter Politiker mit dem richtigen Parteibuch zum richtigen Zeitpunkt kann man halt alles werden. Übrigens, nicht Merkel sondern Seehofer machte ihn zum Wirtschaftsminister. Seine Begründung sind das „beneidenswerte Auftreten“ und die Fremdsprachenkenntnisse zu Guttenbergs. - Naja, wenn man damit Wirtschaftsminister werden kann ... Schade, dass Nikolaus Bollmann (siehe Editorial der letzten ORDIX News) kein solches Auftreten hat. Sein Vorschlag führte zumindest zur Abwrackprämie im Konjunkturpaket II. Das meist verkaufte Auto war dann bisher der VW Fox. Der wird übrigens in Brasilien gebaut. Aber Opel bleibt zumindest von der Insolvenz so lange verschont, wie der sogenannte1) Wirtschaftsspezialist Rüttgers dem amerikanischen Pleiteunternehmen GM Hilfen verspricht, die aber angeblich nur in Deutschland bleiben. Erstaunlicherweise ging die GM Tochter Saab sofort Pleite, als der schwedische Staat genau solche Hilfen versagte und GM den Geldhahn zudrehte. Wenigstens kann Saab jetzt aus der Insolvenz heraus saniert und von der kranken Mutter GM losgelöst werden. Manche Aussagen habe ich wieder via Google zusammengesucht. Ich hoffe, ich liege dieses Mal nicht so falsch wie mit Kurt Tucholsky und „Wenn die Börsenkurse fallen“. Danke denen, die meinen Aufsichtsrat und mich korrigiert haben. Schön und treffend fand ich das Gedicht dennoch. Dieser Tage wäre auch Heinz Erhardt 100 Jahre alt geworden, der Meister des Vierzeilers: In nur vier Zeilen was zu sagen Erscheint zwar leicht, doch ist es schwer! Man braucht ja nur mal nachzuschlagen; Die meisten Dichter brauchen mehr. Mehr Zeilen brauchten auch die Autoren der Artikel dieser ORDIX News. Schließlich braucht die Beschreibung eines Clusters, von BIRT oder Oracle Grid Control mehr als nur smartes Auftreten. Keinen Sinn macht es, meine Editorials mit Versionskontrolle in Subversion anzulegen, obwohl ich dieses Mal sehr viel Bezug auf die letzte Version genommen habe. Aber vielleicht sollte ich auch mal ein Recovery alter Editorials wagen. Ob das mit NIM klappt, erfahren Sie ab Seite 38. Sollten Sie demnächst mal Aal essen, denken Sie nicht an Ihren IT-Spezialisten, aber versuchen Sie, diesen immer wieder mal festzunageln. Manchen empfehle ich auch, Logfiles nicht nur auf den letzten Zeilen zu lesen, denn oft steht bereits am Anfang, warum es am Ende nicht geklappt hat. In diesem Sinne ein schönes Frühjahr im Wahl- und Krisenjahr 2009. Lassen Sie sich nicht mürbe machen durch Pessimismus à la Merkels Neujahrsrede. Es kommen (hoffentlich) auch wieder optimistischere Politiker, egal ob Nullen oder Einsen: die Nullen dienen den Kabarettisten und dem Lachen, die Einsen der Politik und dem Fortschritt. Wolfgang Kögler 1) Habe ich aus der FAS geklaut . ORDIX News 1/2009 3 Inhalt Ein Data Warehouse für den Administrator Seite 06 Open Source 08 Hochverfügbarkeit mit Heartbeat-Version 2 (Teil II): Immer noch verfügbar, Administrator? Bericht über die Implementierung von Heartbeat Clustern in einem Kundenprojekt. Es wird gezeigt, wie flexibel das Verhalten der Cluster-Lösung an die Gegebenheiten des Unternehmens angepasst werden kann. 18 Open Source Reporting mit BIRT Das Reporting mit BIRT ist als kostenlose Alternative zu kommerziellen Produkten von IBM, SAP oder Oracle auch besonders für mittelständische Unternehmen geeignet. 21 BIRT im Expertencheck 29 Flexible Versionskontrolle mit Subversion (SVN) Beschreibung der grundsätzlichen Funktionsweise sowie der administrativen Konfigurationsmöglichkeiten des Versionskontrollsystems Subversion. 44 Tipps und Tricks aus der Unix-Welt: Mit „screen“ zur Schirmherrschaft Vorstellung des sehr nützlichen und vielfältigen GNU-Tools „screen“, das als freie Software eine effektivere Arbeit mit der Shell ermöglicht. IT-Strategie 26 Reihe SOA (Teil III): RESTful Web Services RESTful Web Services werden als Alternative zu den klassischen, auf SOAP basierenden Web Services, vorgestellt. Bei Spring AOP wird Kundenservice groß geschrieben Seite 12 Datenbanken 06 MS SQL Server 2008 New Features (Teil II): Datenauflistung - Ein Data Warehouse für den Administrator Mit der neuen Funktion „Datenauflistung“ können Performance-Indikatoren von SQLServer-Instanzen in einem zentralen Data Warehouse gesammelt und ausgewertet werden. 22 Oracle Objekttypen von A - Z (Teil IX): Ressourcen und andere Objekte In diesem Teil der Reihe stellen wir den Resource Manager sowie die Objekttypen Sequenz, Snapshot, Synonym, Tabelle und Trigger vor. 34 Oracle Enterprise Manager Grid Control (Teil VI): Standardisieren Sie Ihre individuelle Überwachung! Durch das Customizing von Standardmetriken reduzieren Sie die Alert-Flut auf für Sie interessante Meldungen. Java/JEE 12 Machen oder machen lassen, das ist hier die Frage: Bei Spring AOP wird Kundenservice groß geschrieben Einführung in die aspektorientierte Programmierung (AOP) unter Verwendung des Spring-Frameworks. 43 Eclipse-Kurzreferenz 4 ORDIX News 1/2009 Inhalt Reihe SOA (Teil III): RESTful Web Services Seite 26 Backup und Recovery mit NIM Seite 38 Betriebssysteme Aktuell 38 NIM, ein Tool zur Installation von Software, birgt einen unerwarteten Schatz: Backup und Recovery mit NIM Vorstellung der Eigenschaften des IBM AIX Network Installation Management (NIM) als Installations- und Backup-Lösung. Dabei werden die Aspekte von NIM als Installationswerkzeug für Betriebssysteme und Software beleuchtet und die Möglichkeiten für Backup und Recovery vorgestellt. Impressum Herausgeber: ORDIX AG Aktiengesellschaft für Softwareentwicklung, Beratung, Schulung und Systemintegration, Paderborn Redaktion: Sascia Brinkmann ViSdP: Benedikt Georgi, Wolfgang Kögler Anschrift der Redaktion: ORDIX AG Westernmauer 12 - 16 33098 Paderborn Tel.: 05251 1063-0 Fax: 0180 1673490 Gestaltung/Layout: Sascia Brinkmann Auflage: 9.800 Druck: Media-Print Informationstechnologie GmbH, Paderborn Bildnachweis: aboutpixel.de / Aral © snygo; flickr.com © Kyle Pearce; aboutpixel.de / 10 auf 79 © Arnim Schindler; flickr.com © skyseeker 17 Larry Ratlos: Datenselektion mit Hindernissen 46 DOAG Aktivitäten Konferenz und Schulungstag 2008 sowie Regionalgruppenleitung Rhein/Main Standards 03 Editorial 04 Inhalt 05 Impressum 24 Seminarübersicht: März bis Oktober 2009 Autoren dieser Ausgabe: Christof Amelunxen, Dr. Uwe Bechthold, Christian Fertsch, Stefanie Heither, Martin Hoermann, Andreas Jordan, Wolfgang Kögler, Roger Niemeyer, Ulf Papenfuß, Thomas Rohde, Michael Skowasch, Jens Stahl, Alexander Zeller Copyright: ORDIX AG. Alle Rechte, auch die der Übersetzung, des Nachdrucks und der Vervielfältigung der Artikel oder von Teilen daraus, bleiben uns vorbehalten. Kein Teil der Artikel darf ohne unsere schriftliche Genehmigung in irgendeiner Form reproduziert, insbesondere unter Verwendung elektronischer Systeme verarbeitet, verbreitet, vervielfältigt oder zu öffentlichen Wiedergaben benutzt werden. Haftung: Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz sorgfältiger Prüfung durch die Redaktion vom Herausgeber nicht übernommen werden. Warenzeichen: Einige der aufgeführten Bezeichnungen sind eingetragene Warenzeichen ihrer jeweiligen Inhaber. ORDIX® ist registrierte Marke der ORDIX AG. Die Zeitschrift ORDIX News wird von der ORDIX AG an ausgewählte Kunden verteilt und kann für 2,20 Euro bestellt werden. Sie finden sowohl die neueste Ausgabe als auch ältere Ausgaben im Archiv der ORDIX News im Internet unter: http://wwwordixde Schauen Sie mal rein! Der Kontakt zu unseren Lesern ist uns sehr wichtig. Für Anregungen, Kritik und Anmerkungen zu den Themen, aber auch für interessante Ideen sind wir immer offen und dankbar. Wir freuen uns auf Ihr Feedback an redaktion@ordixde. ORDIX News 1/2009 5 Datenbanken MS SQL Server 2008 New Features (Teil II): Datenauflistung Ein Data Warehouse für den Administrator Dieser Artikel richtet sich an Administratoren von MS SQL Servern, die sich einen Überblick über die hinzugekommenen Funktionalitäten der neuen Version verschaffen möchten. Wie hat sich die CPU-Auslastung in der letzten Woche entwickelt? Welche Abfragen belasten den Server besonders? Diese typischen Fragen würde jeder Administrator gerne mit einem kurzen Blick auf seine Verwaltungsoberfläche beantworten können. Mit der neuen Funktion „Datenauflistung“ des SQL Servers 2008 ist dies nun möglich. Überblick Der Datenauflister Die Funktion „Datenauflistung“ (Data Collection) besteht im Wesentlichen aus den folgenden drei Komponenten: Der Datenauflister nutzt verschiedene Datenquellen, um die zu sammelnden Daten auf der lokalen SQL-Server-Instanz zu ermitteln. Als Datenquellen sind derzeit implementiert: • • • Dem Datenauflister (Data Collector), der die gewünschten Daten ermittelt. Dem Management Data Warehouse, das die gesammelten Daten speichert. Den Berichten, die die Daten übersichtlich und interaktiv anzeigen. Datenauflister und Data Warehouse können dabei auf getrennten Instanzen liegen, so dass alle Instanzen im Unternehmen ein zentrales Data Warehouse nutzen können. Die Einrichtung und Konfiguration erfolgt im SQL Server Management Studio im Unterpunkt „Verwaltung“ (siehe Abbildung 1). 6 ORDIX News 1/2009 • • • • T-SQL-Abfragen SQL-Ablaufverfolgung Abfrageaktivität Leistungsindikatoren Aus diesen Datenquellen können die zu sammelnden Informationen in einem Auflistsatz zusammengestellt werden. Dazu ist die Verwendung von T-SQL-Statements notwendig, da es hierfür aktuell keinen Assistenten im Management Studio gibt. Allerdings werden drei vorkonfigurierte Auflistsätze mitgeliefert, die mit einem Assistenten Datenbanken installiert werden können und die wichtigsten Performance-Daten des Servers sammeln: • • • Abfragestatistik: Hier werden Abfragen mit hohem Ressourcenverbrauch gesammelt, dazu Detailinformationen bis hin zu den genutzten Ausführungsplänen. Datenträgerverwendung: Hier werden für jede Datenbank die Größe und Verwendung der Daten- und Transaktionsprotokoll-Dateien gesammelt. Serveraktivität: Hier werden zum einen generelle Systemparameter, wie CPU- und Arbeitsspeicherauslastung, zum anderen spezielle SQL-Server-Parameter, wie die Anzahl und Verteilung von Wartevorgängen, gesammelt. Abb. 1: Die Funktion „Datenauflistung“ wird mit dem Management Studio verwaltet. Das Intervall der Datensammlung ist einstellbar. Gesteuert wird sie durch Aufträge im SQL-Server-Agenten. Das Management Data Warehouse Das Management Data Warehouse ist eine „normale“ relationale Datenbank, die auf einer beliebigen Instanz des SQL Server 2008 liegt. Alle für dieses Data Warehouse konfigurierten Datenauflister speichern dort die gesammelten Daten. Die Einrichtung kann ebenfalls mit einem Assistenten erfolgen. Die Berichte Für die drei vorkonfigurierten Auflistsätze werden interaktive Berichte im Stil der klassischen SQL-Server-Berichte im Management Studio, wie z. B. das Server-Dashboard, mitgeliefert. Abbildung 2 zeigt die Einstiegsseite des Berichts über die Serveraktivität. Mit einem Klick auf die einzelnen Grafiken können zusätzliche Details angezeigt werden. Natürlich sind alle Daten des Data Warehouse auch über SQL-Statements abrufbar. Die Tabellen mit den gesammelten Werten liegen im Schema snapshots. Fazit Die Funktion „Datenauflistung“ bietet eine einfach einzurichtende Möglichkeit, wichtige Performance-Daten zentral zu sammeln und so einen langfristigen Überblick über die Auslastung des Servers zu gewinnen. Abb. 2: Interaktive Berichte dienen als Einstiegspunkt zu den gesammelten Informationen, wie hier mit allgemeinen Informationen zur Serveraktivität. Link ►► [1] Film, in dem die Data Collection Funktionalität vorgestellt wird: http://edge.technet.com/Media/SQL-Server-2008-Data-Collection/ Andreas Jordan ([email protected]). ORDIX News 1/2009 7 Open Source Hochverfügbarkeit mit Heartbeat-Version 2 (Teil II) Immer noch verfügbar, Administrator? Dieser Artikel wendet sich an erfahrene Linux/Unix-Administratoren, die sich mit ClusterLösungen auseinander setzen oder einen kurzen Überblick über die Heartbeat-Implementierung bekommen möchten. Hochverfügbarkeit ist eines der häufig verwendeten Schlagwörter im Wortschatz von ORDIX und unserer Kunden. In der ORDIX News 2/2008 [1] haben wir bereits ein Kundenprojekt vorgestellt, in dem insgesamt drei Heartbeat Cluster für einen 7x24-Stunden-Betrieb einzurichten waren. Im ersten Teil berichteten wir über die zwei Cluster, auf denen verschiedene Web-Dienste hochverfügbar eingerichtet wurden. In diesem Teil geht es um den dritten Cluster, der vorwiegend als Hostsystem für VMware-Gäste und MySQL-Datenbanken verwendet wird. Administrator, was soll ich tun? Der dritte Cluster besteht aus insgesamt drei Cluster-Knoten, auf denen jeweils SuSE Linux Enterprise Server 10 SP1 mit Heartbeat in der Version 2.0.8 installiert ist. Heartbeat wurde in der Version 2 konfiguriert, denn nur hiermit ist es möglich, einen Cluster mit mehr als zwei Knoten zu erstellen. Die hochverfügbar ausgelegten Dienste auf diesem System sind MySQL, Samba und VMware-Gäste. Als gemeinsamer Speicher wurde für jede Ressource ein DRBD-Device erstellt (siehe ORDIX News 4/2008 [2]), so dass die Ressourcen unabhängig voneinander kontrolliert werden konnten. Die Nutzung von DRBD führte aber auch dazu, dass die Ressourcen immer nur auf 2 der 3 Knoten lauffähig waren. So mussten für jede Ressource Abhängigkeiten erstellt werden, wo definiert wird, auf welchem System die Ressource laufen darf. Die Konfiguration der Ressourcen wurde jeweils in XML-Dateien geschrieben und mit Kommandozeilenbefehlen auf den Cluster angewendet. Abbildung 1 bildet ein Beispiel für eine der verwendeten Abhängigkeiten ab. CIB, das Herz von Heartbeat 2 Richtet man Heartbeat in der Version 2 ein, werden alle Ressourcen mit Hilfe von XMLDateien konfiguriert. Der größte Vorteil gegenüber der alten Konfiguration ist, dass die 8 ORDIX News 1/2009 Änderungen auf jedem Knoten nach dem Einlesen der XML-Datei in den Cluster sofort zur Verfügung stehen. Ein Verteilen der Konfiguration und Neustarten der Dienste, wie es noch in Version 1 notwendig war, entfällt. Es gibt aber auch weiterhin die Konfigurationsdatei /etc/ha.d/ha.cf, in der die Konfiguration des Cluster Interconnect stattfindet. Hier ist nach Änderungen weiterhin ein Neustart der Dienste notwendig. Die in Abbildung 1 dargestellte Konfiguration zeigt, dass die Ressource Vmware1 nur auf den Knoten sles1 und sles2 laufen darf. Der Cluster wurde so konfiguriert, dass nur Ressourcen gestartet werden, solange zwei Knoten verfügbar sind und für die Ressource eine Location angegeben wurde. Dieses wurde mit den globalen Einstellungen name="symmetric-cluster" value="false" und name="no-quorumpolicy" value="stop" in der CIB festgelegt. Die Datei in Abbildung 1 wurde mit dem Befehl cibadmin -C -o constraints -x datei.xml auf die CIB angewendet. VMware - die Gäste treffen ein Um möglichst flexibel zu sein, wurde für jeden VMware-Gast ein eigenes DRBD-Device eingerichtet, so dass die Gäste auf unterschiedlichen Knoten laufen können. Die VMwareDienste /etc/init.d/vmware starten beim Booten der Cluster-Knoten automatisch. Nun Open Source musste eine Möglichkeit gefunden werden, wie die VMware-Gäste durch den Heartbeat Cluster gestartet, überwacht und gestoppt werden können. Dies wurde mit einem eigenen OCF-Skript namens vmware-gast rea­ lisiert. Diesem Skript werden vom Cluster die Argumente start, stop und monitor übergeben. Der VMware-Gastname wird mit Hilfe einer Umgebungsvariablen übergeben, so dass es nur ein Skript für alle Gäste gibt. Die Variable selbst wird durch den Cluster gesetzt. Mit Hilfe des Monitoring kann der Status des Gastes abgefragt werden. Mit den anderen beiden Parametern wird er vom Cluster gestartet bzw. gestoppt. In Abbildung 2 sind die verwendeten VMware-Befehle aus dem Skript dargestellt. Datenspeicherung mit DRBD Um bei einem Umzug der Ressourcen auf einen anderen Knoten die Daten sofort verfügbar zu haben, wurde die Open Source Software DRBD gewählt. Somit konnte auf teure Lösungen wie SAN oder Infiniband verzichtet werden. Da hier sehr viele DRBD-Devices gleichzeitig eingesetzt wurden, musste gewährleistet werden, dass die Netzwerkkarte nicht zum Flaschenhals wird. Um dies zu vermeiden, sind die Cluster-Systeme mit ausreichend Netzwerkkarten bestückt und die DRBD-Verbindungen auf die Karten verteilt. In den Cluster sind die DRBD-Devices als Master/Slave-Ressource eingebunden. Die auch als Multi-State bezeichneten Ressourcen sind Ressourcen, die entweder den Status Master oder Slave haben. Ein Master/Master-Status, wie es z. B. bei Cluster-Dateisystemen benötigt wird, ist in der aktuellen Heartbeat-Version noch nicht berücksichtigt. In Abbildung 3 ist die XML-Konfiguration einer DRBD-Master/Slave-Ressource dargestellt. Nach dieser Konfiguration läuft eine Master/ Slave-Ressource auf mehreren Knoten gleichzeitig (name="clone_max" value="2"). Auf jedem System läuft die Ressource maximal 1 Mal (name="clone_node_max" value="1") und es gibt nur einen Master (name="master_node_max" value="1"). Der Name des DRBD-Devices ist vmware1 und wird in der DRBD-Konfigura­tionsdatei /etc/drbd.conf festgelegt. Leider hat die Konfiguration der Master/Slave-Ressourcen auch einen Nachteil: Sie lassen sich nicht in einer Cluster-Ressourcengruppe anwenden, sondern können immer nur als „native“ Ressource konfiguriert werden. Während bei einer Ressourcengruppe eine implizite Reihenfolge beim Starten bzw. Stoppen der Ressourcen <constraints> <rsc_location id="location_Vmware1" rsc="resource_Vmware1"> <rule id="prefered_location_Vmware1" score="100" boolean_op="or"> <expression attribute="#uname" operation="eq" value="sles1"/> <expression attribute="#uname" operation="eq" value="sles2"/> </rule> </rsc_location> </constraints> Abb. 1: Abhängigkeit, die Ressourcen nur auf einem bestimmten Knoten starten lässt. starten: /usr/bin/vmware-cmd /vmware/configs/Vmware1.vmx start stoppen: /usr/bin/vmware-cmd /vmware/configs/Vmware1.vmx stop monitor: /usr/bin/vmware-cmd /vmware/configs/Vmware1.vmx getstate Abb. 2: Befehle aus dem OCF-Startskript, um VMware-Gäste zu starten, zu stoppen und zu überwachen. <master_slave id="DRBD1"> <meta_attributes id="DRBD1_meta_attrs"> <attributes> <nvpair id="DRBD1_metaattr_clone_max" name="clone_max" value="2"/> <nvpair id="DRBD1_metaattr_clone_node_max" name="clone_node_max" value="1"/> <nvpair id="DRBD1_metaattr_master_max" name="master_max" value="1"/> <nvpair id="DRBD1_metaattr_master_node_max" name="master_node_max" value="1"/> <nvpair id="DRBD1_metaattr_notify" name="notify" value="true"/> <nvpair id="DRBD1_metaattr_globally_unique" name="globally_unique" value="false"/> </attributes> </meta_attributes> <primitive id="DRBD_CLONE1" class="ocf" type="drbd" provider="heartbeat"> <instance_attributes id="DRBD_CLONE1_instance_attrs"> <attributes> <nvpair name="drbd_resource" value="vmware1"/> </attributes> </instance_attributes> <meta_attributes id="DRBD_CLONE1:0_meta_attrs"> <attributes> <nvpair id="DRBD_CLONE1:0_metaattr_target_role" name="target_role" value="started"/> </attributes> </meta_attributes> </primitive> </master_slave> Abb. 3: Aufbau einer Master/Slave-Ressource. besteht, müsste diese bei nativen Ressourcen explizit angegeben werden, was bei einem größeren Cluster zu zusätzlichen Konfiguratio­ nen von Abhängigkeiten führt. ORDIX News 1/2009 9 Open Source STONITH Da bei diesem VMware-Cluster sehr viel mit gesharten Dateisystemen gearbeitet wird, be­­steht immer die Gefahr von Korruption bei einem Split-Brain-Zustand. Hier bieten ClusterHersteller unterschiedliche Arten des Korruptionsschutzes an. Unter Linux gibt es das so genannte STONITH (Shot the other node in the head). Hierzu werden schaltbare Steckdo- <clone id="STONITH_SLES1"> <instance_attributes> <attributes> <nvpair name="clone_max" value="2"/> <nvpair name="clone_node_max" value="1"/> </attributes> </instance_attributes> <primitive id="child_do_fencing_sles1" class="stonith" type="apcmaster"> <operations> <op name="monitor" interval="10s" timeout="30s" prereq="nothing"/> <op name="start" timeout="20s" prereq="nothing"/> </operations> <instance_attributes> <attributes> <nvpair id="STONITH_ip_SLES1" name="ipaddr" value="10.10.10.10"/> <nvpair id="STONITH_user_SLES1" name="login" value="sles1"/> <nvpair id="STONITH_pass_SLES1" name="passwd" value="sles1pw"/> </attributes> </instance_attributes> </primitive> </clone> Abb. 4: XML-Datei für ein STONITH Device. MEM_FREE=$(grep MemFree /proc/meminfo | awk ‚{ print $2 }‘); /usr/sbin/attrd_updater -n mem_free -v ${MEM_FREE} Abb. 5: Cron-Job, der den freien Arbeitsspeicher alle 5 Minuten ausliest und in die CIB schreibt. <constraints> <rsc_location id="location_Vmware1" rsc="resource_Vmware1"> <rule id="prefered_location_Vmware1" score="100"> <expression attribute="mem_free" operation="gte" value="2000000" type="number"/> </rule> </rsc_location> </constraints> Abb. 6: Starten einer Ressource nur auf einem Knoten mit genug freiem Arbeitsspeicher. 10 ORDIX News 1/2009 senleisten angeschlossen, mit deren Hilfe der eine Cluster-Knoten in einer Split-Brain-Situation den anderen stromlos schalten kann. Unter Heartbeat Version 2 kann die STONITH-Konfiguration auf zwei Arten gelöst werden: 1. Wie in der Version 1 üblich, über einen Eintrag in der Datei /etc/ha.d/ha.cf. 2. Mit Hilfe der XML-Konfiguration. Hier wurde die modernere Variante gewählt, in der die Ressource als so genannter „Clone“ konfiguriert wird. Ein Clone ist eine Ressource, die n-Mal innerhalb des Clusters läuft. Voraussetzung ist, dass in den globalen Einstellungen der Schalter name="stonith-enabled" value="true" aktiviert wurde. Auch ein Clone hat den Nachteil, dass er nicht innerhalb einer Ressourcengruppe konfiguriert werden kann. In Abbildung 4 ist die Konfiguration des STONITH Clones dargestellt. Aber bitte nicht den Cluster lahm legen Lässt man den Cluster beim Starten der VMware-Gäste entscheiden, auf welchem Knoten der Gast gestartet wird, ist dies vergleichbar mit Russischem Roulette. Normalerweise verteilt der Cluster die Ressourcen gleichmäßig auf die Cluster-Knoten. Dies wäre bei einer Apache- oder FTP-Ressource kein Problem, da diese normalerweise sowieso nur 1-mal auf einem Knoten laufen. Bei diesem Cluster ist es aber gewünscht, dass auch mehrere VMwareGäste auf demselben Knoten laufen. Da diesen aber unterschiedliche Mengen an Arbeitsspeicher zugewiesen werden, besteht die Gefahr, dass die VMware-Gäste einen Cluster-Knoten lahm legen. Hier bietet Heartbeat die Möglichkeit, dynamisch zu entscheiden, auf welchem Knoten eine Ressource gestartet werden soll. Dies kann z. B. mit Hilfe der mitgelieferten Ressource „SysInfo“ geschehen. SysInfo wird als Clone auf allen beteiligten Knoten gestartet und schreibt regelmäßig die aktuellen Werte von Arbeitsspeicherauslastung, SwapAuslastung etc. in die CIB. Leider waren die übermittelten Werte in der eingesetzten Heartbeat-Version nicht sehr zuverlässig, so dass auf dieses Verfahren verzichtet wurde. Heartbeat bietet aber auch die Möglichkeit, eigene Daten in die CIB zu schreiben. Mit Hilfe des in Abbildung 5 gezeigten Cron-Jobs wurde der aktuelle freie Arbeitsspeicher alle 5 Minuten ausgelesen und in die CIB eingetragen. Die Information findet sich dann in den Statusinformationen des entsprechenden Hosts. Open Source Abbildung 6 zeigt, wie die geschriebenen Informationen dann ausgewertet werden. In diesem Beispiel wird Vmware1 auf einem Knoten gestartet, der mindestens 2 GB Arbeitsspeicher frei hat. Bei der hier beschriebenen Implementierung wurde der Arbeitsspeicherverbrauch des Gastes vor dessen Starten per Skript aus der VMware-Konfigurationsdatei ausgelesen und dynamisch in value eingetragen. <cluster_property_set id="every_sunday" score="100"> <rule id="my_vmware1:failover" boolean_op="and"> <date_expression id="my_vmware1:days" operation="date_spec"> <date_spec id="my_vmware1:days" weekdays="7"/> </date_expression> </rule> </cluster_property_set> Abb. 7: Regeln, um Ressourcen an bestimmten Tagen auf einen Knoten zu schalten. Immer wieder sonntags Während der Implementierungsphase des Clusters kam der Wunsch des Kunden auf, zu bestimmen, dass eine Ressource sonntags immer auf einem bestimmten Cluster-Knoten laufen soll. Auch dies ist mit Heartbeat ClusterBordmitteln durchführbar. Zum einen gibt es die Möglichkeit, eine Ressource per CronJob auf einen bestimmten Knoten zu switchen (crm_resource -M -r Vmware1 -f -H sles1). Heartbeat bietet aber auch selbst die Möglichkeit, per Location-Regel zeitbasierte Regeln festzulegen. In Abbildung 7 ist ein Beispiel der eingesetzten Regeln abgebildet. Zu beachten ist hierbei, dass die zeitbasierten Regeln nicht mit jeder Heartbeat-Version funktio­ nieren. Glossar CIB Cluster Information Base. XML Cluster-Konfiguration, die automatisch auf alle Cluster-Knoten repliziert wird. OCF Open Cluster Framework. Definition von Standardzugriffschnittstellen des Heartbeat Cluster. Split-Brain Zustand, bei dem alle Verbindungsleitungen zwischen den ClusterKnoten unterbrochen sind. Heartbeat Name einer Hochverfügbarkeitslösung aus dem Open Source Umfeld, aber auch Bezeichnung für eine private Leitung zwischen Cluster-Knoten, mit deren Hilfe geprüft wird, ob die anderen Knoten noch „leben“. STONITH Kurz für „Shoot the other node in the head“. Eine Möglichkeit, mit der man verhindert, dass zwei oder mehr Systeme schreibend auf ein Dateisystem oder auch eine Datenbank zugreifen. Fencing (abzäunen, ausgrenzen) Falls der Cluster keine Informationen mehr über seine Partnerknoten bekommt, also z. B. die Heartbeat-Leitungen zerstört sind, tritt das Fencing ein. Es eröffnet verschiedene Lösungen, um mögliche Schäden zu verhindern wie z. B. STONITH, Self-Fencing RAID Controller, Abschalten des FibreChannel Ports und SCSI3 Reservierungen. MySQL und Samba Die Konfiguration der Ressourcen MySQL und Samba wurde im Verhältnis zur VMwareKonfiguration zur Nebensache. Die MySQLDatenbanken wurden auf ein DRBD-Device verlagert. Dessen Dateisystem wird auf einem Knoten eingebunden und danach der MySQLDienst gestartet. Bei Samba wurde ähnlich vorgegangen, mit dem kleinen Unterschied, dass hierbei während der Laufzeit Statusinformationen anfallen, z. B. welche Clients gerade mit einem Share verbunden sind. Hier wurde dafür gesorgt, dass die Statusinformationen auf dem DRBD-Device abgelegt werden und auf den Cluster-Knoten jeweils per symbolischen Links auf das DRBD-Device verwiesen wird. Alternativ gibt es hier auch wieder eine Open Source Software-Lösung namens drbdlinks, die für eine dynamische Verlinkung beim Aktivieren der Ressourcen sorgt. Fazit Während dieses Kundenprojektes hat sich wieder einmal gezeigt, wie flexibel sich die Heartbeat-Cluster-Lösung einsetzen lässt. Wird mal ein Skript nicht mitgeliefert, kann sehr schnell ein eigenes Skript eingebunden Links ►► [1] ORDIX News Artikel „Sind wir verfügbar, Administrator?“ http://www.ordix.de/ORDIXNews/2_2008/Open_Source/heartbeat2.html ►► [2] ORDIX News Artikel „Keine Angst vor Split-Brain!“ http://www.ordix.de/ORDIXNews/4_2008/Betriebssysteme/OCFS_DRBD.html ►► [3] Homepage des Heartbeat Projektes: http://www.linux-ha.org/ ►► [4] Homepage des DRBD Projektes: http://www.drbd.org/ werden. Auch die Zusammenarbeit mit anderen Open Source Tools ist beliebig kombinierbar. In neueren Versionen hat sich auch der SysInfo-Ressourcenagent als zuverlässiger erwiesen. Und in zukünftigen Versionen werden uns die Heartbeat-Entwickler bestimmt mit weiteren, neuen Funktionen überraschen. Schon in einer der nächsten ORDIX News möchten wir von fortgeschrittenen HeartbeatEigenschaften berichten, wie z. B. dem Aufbau von OCF-Ressourcenskripten oder die ScoreBerechnung innerhalb des Cluster. Christian Fertsch ([email protected]). ORDIX News 1/2009 11 Java/JEE Machen oder machen lassen, das ist hier die Frage Bei Spring AOP wird Kundenservice groß geschrieben Dieser Artikel richtet sich an Java-Entwickler und Architekten, die einen schnellen Einstieg in die aspektorientierte Programmierung mit dem SpringFramework erhalten möchten. Die Verbreitung des Spring-Frameworks ist mittlerweile stark fortgeschritten Neben der Dependency Injection (DI) stellt das aspektorientierte Programmiermodell (AOP) eine fundamentale Säule dar, deren Funktionsprinzip und Einsatzmöglichkeiten in diesem Artikel näher vorgestellt werden Einleitung Die wesentliche Aufgabe der Softwareentwicklung besteht in der Umsetzung der Geschäftslogik. Leider ist es damit nicht getan. Als Entwickler muss man sich natürlich auch um Dinge wie Logging, Security und Transaktionsmanagement kümmern. 12 ORDIX News 1/2009 Hier wurde man bei der Entwicklung bisher dazu gezwungen, in seine wunderschön implementierte Geschäftslogik solche technischen Aspekte (auch: Cross Cutting Concerns – CCC) einzubauen. Diese Aspekte wiederholen sich nicht nur ständig, sondern blähen auch den mühevoll geschriebenen Quellcode Ihrer Geschäftslogik ganz schön auf. Java/JEE Wäre es da nicht viel angenehmer, man könnte diese Aufgaben von einer anderen, unabhängigen Komponente erledigen lassen, die speziell dafür entwickelt wurde, die­ se beiden Bereiche sauber voneinander zu trennen? public class Auto { private int tankinhalt = 50; public void fahren() { this.tankinhalt -= 40; System.out.println("Auto faehrt"); } public void oeffneTankdeckel() { System.out.println(" - Tankdeckel oeffnen"); } public void schliesseTankdeckel() { System.out.println(" - Tankdeckel schliessen"); } public void betanken(int fuellmenge) { this.tankinhalt += fuellmenge; System.out.println(" - Auto wird betankt"); } public int getTankinhalt() { return this.tankinhalt; } } Tankstelle mit Kundeservice Stellen Sie sich vor, Sie sind mit Ihrem Auto unterwegs und fahren zum Tanken an die Tankstelle. Bevor Sie das Auto betanken können, müssen Sie den Tankdeckel öffnen. Ansonsten geht der ganze teure Treibstoff daneben. Nach dem Tankvorgang muss der Tankdeckel wieder geschlossen werden. Abbildung 1 zeigt eine Klasse Auto. Es kann fahren, betankt werden und bietet Funktionalitäten zum Öffnen und Schließen des Tankdeckels. Abb. 1: Die Klasse Auto kann fahren, betankt werden und bietet Funktionalität für den Tankdeckel. Die Tankstelle ist in Abbildung 2 dargestellt. Sie kann das Auto mit der angegebenen Füllmenge betanken. Was jetzt noch fehlt, ist das Öffnen und Schließen des Tankdeckels. Bisher müssen sie das selbst tun. public class Tankstelle { Wäre es aber nicht sehr praktisch, wenn man sich um diese technischen Dinge gar nicht selbst kümmern müsste? Wie würde es Ihnen gefallen, wenn Sie an die Zapfsäule fahren und der Tankwart für Sie diese Aufgabe übernimmt? (Wer hat eigentlich das SB-Tanken erfunden? ☺) Auch in Ihrer Software brauchen Sie sich zukünftig nicht mehr um das Öffnen und Schließen des Tankdeckels kümmern. Mit AOP können Sie diese Aufgabe auch an einen Tankwart delegieren. Dazu brauchen Sie nur noch jemanden, der diesen darüber in Kenntnis setzt, dass Sie gerade an einer Zapfsäule vorgefahren sind. public void autoBetanken(Auto auto, int fuellmenge) { auto.betanken(fuellmenge); } } Abb. 2: Die Tankstelle kann ein Auto betanken, indem der Treibstoff eingefüllt wird. • Joinpoint Ein Joinpoint ist im Wesentlichen keine technische Komponente, sondern definiert einen Punkt im gewöhnlichen Programm­ ablauf, an dem ein Aspekt eingebunden werden kann, wie z. B. das Vorfahren mit dem PKW an eine Zapfsäule. • Pointcut Ein Pointcut ist derjenige, der die Anwendung kontrolliert und überwacht, wann ein Advice aufgerufen werden soll. Normalerweise wird dies über den Namen von Methoden und Klassen realisiert, die mit Hilfe von regulären Ausdrücken definiert werden. Der Kassierer ist in diesem Fall der Pointcut. Er würde dem Tankwart Bescheid geben, sobald Sie vorgefahren sind. Begriffsdefinitionen In der Welt von AOP haben sich einige Begriffe etabliert, deren Bedeutung wir unbedingt klären müssen, bevor wir richtig loslegen können: • Advice Ein Advice ist der konkrete Tankwart, der gerufen wird, wenn Sie vorfahren. Er weiß genau, was zu tun ist und wann es zu tun ist. Also vor und/oder nach dem Ausführen der eigentlichen Zielmethode. Z. B. kann er den Tankdeckel öffnen und schließen. ORDIX News 1/2009 13 Java/JEE • Advisor Ein Advisor ist diejenige Komponente, die alles zusammenbringt. Sie verknüpft einen Advice und einen Pointcut miteinander, um den entsprechenden Aspekt ausführen zu können. • Weaving Als Weaving bezeichnet man das Herstellen der Verbindung zwischen einem Aspekt und der eigentlichen Zielmethode. Spring realisiert das „Einweben“ zur Laufzeit durch die Generierung eines dynamischen Proxy­Objekts. Es ist daher weder ein Weaving Compiler noch ein spezieller Classloader erforderlich. Advices auf dem Prüfstand public class Tankwart implements MethodInterceptor { @Override public Object invoke(MethodInvocation invocation) throws Throwable { Spring AOP liefert für unterschiedliche Anforderungen verschiedene Advices. Schauen wir uns die wichtigsten an: • MethodBeforeAdvice Ein MethodBeforeAdvive wird aufgerufen, bevor die eigentliche Zielmethode ausgeführt wird. Mit diesem Advice können Sie den Tankdeckel öffnen lassen. Für das Schließen sind Sie dann aber selbst zuständig. • AfterReturningAdvice Ein AfterReturningAdvice leistet seine Dienste, nachdem der Aufruf der Zielmethode beendet ist. Er kann also nur den Tankdeckel schließen. Abb. 3: Der Tankwart ist ein MethodInterceptor und implementiert die InvokeMethode. • ThrowsAdvice Ein ThrowsAdvice wird aufgerufen, nachdem die Zielmethode eine Ausnahme ausgelöst hat, z. B. wenn während des Tankens der Treibstofftank der Tankstelle leer geworden ist oder Sie Benzin anstelle von Diesel tanken wollen. ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); • MethodInterceptor Etwas allgemeingültiger ist die Implementierung des MethodInterceptor-Interfaces der AOP-Alliance: Der AroundAdvice. Dieser wird zunächst vor dem Aufruf der Zielmethode aufgerufen und ist dann für die Ausführung der Zielmethode zuständig. Damit können zusätzliche Funktionalitäten sowohl vor als auch nach dem Zielmethodenaufruf eingebunden werden. Für unser Tankstellen-Szenario wäre das die passende Lösung. Object result = null; System.out.println(" Tankwart tritt heran"); Auto auto = (Auto) invocation.getThis(); auto.oeffneTankdeckel(); result = invocation.proceed(); auto.schliesseTankdeckel(); System.out.println(" Tankwart ist fertig"); return result; } } Auto auto = (Auto) appCtx.getBean("auto"); Tankstelle tankstelle = (Tankstelle) appCtx.getBean("tankstelle"); System.out.println("Tankinhalt: " + auto.getTankinhalt() + " l"); auto.fahren(); System.out.println("Tankinhalt: " + auto.getTankinhalt() + " l"); // auto.oeffneTankdeckel(); mit AOP nicht erforderlich tankstelle.autoBetanken(auto, 40); // auto.schliesseTankdeckel(); mit AOP nicht erforderlich System.out.println("Tankinhalt: " + auto.getTankinhalt() + " l"); auto.fahren(); Abb. 4: Der Aufruf im Programm geschieht über den ApplicationContext. 14 ORDIX News 1/2009 Sehen Sie sich in der Abbildung 3 den Tankwart an. Er implementiert das Interface MethodInterceptor. Die Invoke-Methode wird aufgerufen, wenn Sie an der Tankstelle vorfahren. Über den Parameter vom Typ Method­ Invocation haben Sie alle Informationen, die für die Zielmethode relevant sind. Über Java/JEE invocation.getThis() holen wir uns zunächst das Objekt Auto, das betankt werden soll. Nun wird der Tankdeckel geöffnet und danach die Zielmethode mit invocation. proceed() aufgerufen. Nun kann der Tankdeckel wieder geschlossen werden und der Tankwart verabschiedet sich von Ihnen. Mit invocation.getArguments() könnten Sie an dieser Stelle auch auf die Übergabeparameter der Zielmethode zugreifen und diese bei Bedarf sogar vorher verändern. Pointcuts Stellen Sie sich einen Pointcut als Kassierer vor, der einen Überblick über die Tankstelle hat. Allerdings ist die Tankstelle in zwei Bereiche geteilt. Einen SB-Tankbereich, den braucht der Kassierer nicht einsehen und einen Servicebereich, wo Sie von einem Tankwart bedient werden. Fahren Sie nun mit Ihrem PKW im Servicebereich an einer Zapfsäule vor, gibt er einem Tankwart Bescheid, dass dieser Sie bedienen kann. Fahren Sie im SB-Bereich vor, geschieht nichts. Sie sehen also, dass so ein Pointcut eine wesentliche Aufgabe hat. Bei Spring sorgt er dafür, dass ein Tankwart überhaupt etwas zu tun bekommt. Dieser wird in der Spring-Konfiguration definiert. Man arbeitet hier im Wesentlichen mit regulären Ausdrücken, die auf den Aufruf bestimmter Klassen und Methoden zugeschnitten werden. Abbildung 4 zeigt die gesamte Spring-Konfiguration. Dort finden Sie neben dem Tankwart, der hier zunächst eine ganz gewöhnliche Spring-Bean ist, auch den Kassierer-Pointcut. Er überwacht die Ausführung der Methode betanken() der Klasse Auto. Der Advisor darunter fügt nun beide Elemente zusammen und verknüpft sie fest miteinander. Damit weiß der Poincut, (im übertragenen Sinne) wem er Bescheid geben soll, wenn Sie an der Zapfsäule vorfahren. Den gesamten Programmaufruf zeigt Abbildung 5. Zunächst wird mit dem Auto gefahren. Jede Fahrt benötigt hier 40 Liter Kraftstoff. Danach wird der Tankinhalt ausgegeben und das Auto wird an der Tankstelle betankt. Ohne den Einsatz von AOP müssten Sie nun zunächst den Tankdeckel öffnen und nachher wieder schließen (siehe Kommentare im Code). <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/ spring-beans-2.0.xsd"> <bean id="auto" class="de.ordix.on.spring.aop.Auto" /> <bean id="tankstelle" class="de.ordix.on.spring.aop. Tankstelle" /> <!-- Advice --> <bean id="tankwart" class="de.ordix.on.spring.aop. Tankwart" /> <!-- Poincut --> <bean id="kassiererPointcut" class="org.springframework. aop.aspectj.AspectJExpressionPointcut"> <property name="expression" value="execution(* de.ordix.on.spring.aop.Auto.betanken(..))" /> </bean> <!-- Advisor --> <bean name="advisor" class="org.springframework.aop. support.DefaultPointcutAdvisor"> <property name="advice" ref="tankwart"/> <property name="pointcut" ref="kassiererPointcut"/> </bean> <!-- Proxy-Generator --> <bean class="org.springframework.aop.framework.autoproxy. DefaultAdvisorAutoProxyCreator" /> </beans> Abb. 5: In der Spring-Konfiguration werden Poincut und Advice konfiguriert. AOP via Proxy In Spring wird AOP via Proxies realisiert. Das bedeutet, dass bei der Erstellung der SpringBeans, zu denen ein Aspekt konfiguriert ist, eine Subklasse der Zielklasse erzeugt wird. Das geschieht entweder über die Klasse java.lang.reflect.Proxy des JDK oder mittels der Library CGLIB. Der Proxy kapselt damit den Aufruf der Zielmethode und schaltet sich vor deren Aufruf ein. Somit besteht die Möglichkeit, jeweils vor und/oder nach Aufruf des Ziels weiteren Programmcode auszuführen. Der AOP-Namespace von Spring Damit das Konfigurieren der Aspekte in Spring nicht zur Lebensaufgabe wird, stellt das Spring-Framwork einen speziellen XML- ORDIX News 1/2009 15 Java/JEE <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/ spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/ spring-aop-2.0.xsd"> <!-- --> Auto, Tankstelle und Tankwart werden wie vorher auch konfiguriert (Fehlt in dieser verkürzten Darstellung) <!-- Pointcut und Advisor zusammen --> <aop:config> <aop:pointcut id="tankPoincut" type="aspectj" expression="execution(* de.ordix.on.spring.aop.Tankstelle.betanken(..))"/> <aop:advisor pointcut-ref="tankPoincut" advice-ref="tankwart"/> </aop:config> </beans> Abb. 6: Mit dem AOP-Namespace wird es schon gleich viel übersichtlicher. Glossar Aspektorientierte Programmierung (AOP) AOP ist ein Programmiermodell zur Ausführung von Programmcode unter Verwendung konfigurierbarer Aspekte, die sich in den „normalen“ Programmcode einbinden lassen. Dependency Injection (DI) Dependency Injection bezeichnet die Möglichkeit, Abhängigkeiten von Beans zu anderen Beans zu injizieren. Bei Spring geschieht dies über eine konfigurierbare Bean Factory. Cross Cutting Concerns (CCC) Funktionen, die sich über mehrere Punkte der Anwendung erstrecken. AOP-Alliance Die AOP-Alliance beschäftigt sich mit der Vereinfachung und der Entwicklung von Standards im AOP-Umfeld. Links ►► [1] Entwicklung und Host des Spring-Frameworks: http://www.springsource.com ►► [2] AOP-Alliance: http://aopalliance.sourceforge.net ►► [3] Download Tankstellen-Beispiel: Namespace für AOP bereit. Dieser muss natürlich zunächst im Header der XML-Konfiguration eingebunden werden. Danach kann er verwendet werden. Abbildung 6 zeigt, wie die gleiche Konfiguration mit diesem Namespace verwendet werden kann. Ihnen wird direkt auffallen, dass wir nun viel weniger überflüssigen Code haben und das Ganze ein wenig übersichtlicher aussieht. Hier können Sie direkt den Pointcut und den Advisor in einem einzigen XML-Tag definieren und auch den DefaultAdvisorAutoProxyCreator müssen Sie nicht mehr einbinden (siehe Abbildung 5). Einsatzbereiche Aus Sicht Ihrer Anwendung werden Sie wahrscheinlich nicht häufig das Bedürfnis haben, ein Auto zu betanken. Das sollte hier auch nur als Beispiel dienen. In der Praxis werden Sie über AOP wahrscheinlich eher technische Dinge abwickeln, wie beispielsweise Logging, Security oder Tranksaktionsmanagement. Auch ist es hierdurch relativ einfach, eine Software hinsichtlich ihrer Performance zu untersuchen. Sie könnten sich dafür einen Performance-Monitor bauen, der vor dem Aufruf einer Methode, die vielleicht eine komplexe Datenbankabfrage durchführt, die Zeit festhält und anschließend die Dauer des Zielmethodenaufrufs berechnet. Damit ist es ohne Quellcodeänderungen möglich, für Performance-Tests einfach eine entsprechende Spring-Konfiguration zu verwenden und Performance-Daten zu sammeln. Diese können im Anschluss ausgewertet werden. Fazit Neben der Dependency Injection ist das AOPFramework eine wesentliche Komponente von Spring. Es besteht nicht nur die Möglichkeit, AOP für seine eigenen Zwecke zu verwenden, sondern die umfangreiche APIAbstraktion (z. B. für JDBC, Hibernate, Transaktionsmanagement etc.) basiert ebenfalls auf diesem Prinzip und lässt sich daher sehr komfortabel in den bestehenden Programmcode integrieren. Das Tankstellen-Beispiel können Sie übrigens im Internet [3] herunterladen. http://www.ordix.de/ORDIXNews/1_2009/Java_JEE/tankstellenbeispiel.zip Thomas Rohde ([email protected]). 16 ORDIX News 1/2009 Aktuell Larry Ratlos: Datenselektion mit Hindernissen Larry Ratlos versteht die Welt nicht mehr Da steht er vor einer seiner alltäglichen Aufgaben und plötzlich funktioniert der Select, den er bisher immer erfolgreich verwendet hat, nicht mehr Und es ist nicht der 1 April, so dass er davon ausgehen kann, dass es nicht am Humor der Datenbank oder eines Kollegen liegen kann Auf einer DB-Instanz schlägt folgender select fehl: SQL> select * from tab_xy where col_z=12345; select * from tab_xy where col_z=12345 * FEHLER in Zeile 1: ORA-01722: invalid number Die Spalte ist vom Typ varchar2(30): SQL> desc tab_xy Name Null? Typ ------------------ --------- --------------------------KV_ID_EXT NOT NULL VARCHAR2(30) ... Können Sie Larry helfen? Larry ist ratlos, weil diese Abfrage bisher immer funktionierte. Und die Informationen, die er über die Datenbank bekommt, helfen ihm so zunächst auch nicht weiter. Was kann der Grund sein, dass die Abfrage zu einem Fehler führt? Und was ist zu tun, damit Larry doch das gewünschte Ergebnis bekommt? Schicken Sie Ihren Lösungsvorschlag und Ihre Begründung bis zum 9 April 2009 an kniffel@ordixde. Lösung der Aufgabe aus 4/2008 In der letzten ORDIX News hatte Larry Probleme mit der Dateisystemerweiterung in Solaris 10. Das bestehende 984 GB große Dateisystem sollte um zusätzliche 400 GB erweitert werden. Bei dem Versuch bekam Larry aber immer eine Fehlermeldung. Wie sich herausstellte, war Larrys Fehler folgender: Wenn beim Erstellen des Dateisystems die Standardoptionen beim newfs-Befehl verwendet werden, kann das Dateisystem nur 1 Terabyte groß werden. Wichtig wäre schon beim Anlegen die Option -T, also newfs -T gewesen. Nur so können Dateisysteme größer als 1 Terabyte werden. Auf einen Nachteil bei diesem Vorgehen ist Larry aber auch gestoßen: Wenn man jetzt nur sehr kleine Dateien auf dem Dateisystem anlegt, gehen schnell die Inodes aus, da bei der Option -T für jedes Megabyte ein Inode reserviert wird. ORDIX News 1/2009 17 Open Source Open Source Reporting mit BIRT Dieser Artikel richtet sich an Entscheider und Entwickler, die ein kostenloses Werkzeug zur Erstellung von Berichten suchen. Die Datenmenge steigt in vielen Unternehmen stetig an. Die Daten werden zwar archiviert und verwaltet, doch fällt es Unternehmen oft schwer, aus dieser Datenflut wertvolle Informationen zu gewinnen, um die Entscheidungsprozesse im Unternehmen zu unterstützen. Damit entgeht vielen Unternehmen ein entscheidender Wettbewerbsvorteil gegenüber der Konkurrenz. BIRT ist ein kostenloses Open Source Tool, das dieses Problem lösen soll und für Unternehmen eine Alternative zu kommerziellen Produkten von SAP, IBM oder Oracle bietet. Da auch die ORDIX AG seit einiger Zeit BIRT als Werkzeug für interne Berichte nutzt, ist es an der Zeit, Ihnen BIRT vorzustellen. Was ist BIRT? BIRT steht für Business Intelligence and Reporting Tools. Es ist ein von Actuate initiiertes Subprojekt von Eclipse, mit dem sich Berichte (Reports) in den Formaten HTML, PDF, XLS und CSV erstellen lassen. BIRT steht unter der Eclipse Public License. Die aktuelle Version ist 2.3.1. Um einen Report zu erstellen, muss zunächst eine Verbindung zu einer Datenquelle, z. B. zu einem Data Warehouse, hergestellt werden. Danach kann der Report mit Hilfe des BIRT Report Designers erstellt werden. Der fertige Report lässt sich in alle gängigen Servlet Engines integrieren. Datenquellen Als Datenquellen unterstützt BIRT sämtliche Datenbanken, die sich mit JDBC anbinden lassen, sowie XML-Dateien, Web Services, JavaBeans und eine große Auswahl an Flachdateien (z. B. CSV). Außer der Möglichkeit, SQL-Abfragen einzugeben, unterstützt BIRT auch Stored Procedures. BIRT kann innerhalb eines Reports mit beliebig vielen Datenquellen arbeiten. Den Abfragen lassen sich Parameter hinzufügen, was auch dynamische Abfragen ermöglicht. Die Datenbankverbindungen lassen sich zur Wiederverwendung zentral in einer Bibliothek speichern und für weitere Reports importieren. Seit kurzem un- 18 ORDIX News 1/2009 terstützt BIRT auch die Erstellung von OLAPCubes. Berichtsgestaltung Als Tool zur Gestaltung von Berichten stellt BIRT einen Report Designer zur Verfügung. Der Report Designer (siehe Abbildung 1) ist ein WYSIWYG-Editor, mit dessen Hilfe sich Report-Elemente per Drag&Drop auf einer Arbeitsfläche positionieren lassen. Die Po­ si­tionierung erfolgt mittels Tabellen (Grids), was eine pixelgenaue Darstellung sehr umständlich macht. Allerdings unterstützt BIRT ein sehr genaues Seitenumbruchverhalten. Für die Formatierung der Berichte können in BIRT eigene Stile angelegt werden und sogar komplette CSS-Dateien importiert werden. Die verschiedenen Stile können wie die Datenbankverbindungen in eine Bibliothek exportiert werden und sind somit auch für andere Reports nutzbar. Charts Die Erstellung von Diagrammen erfolgt mit Hilfe des BIRT Chart Designers (siehe Abbildung 2). Der Chart Designer ist dank seiner Drag&Drop-Unterstützung und Wizzard sehr leicht zu bedienen. Zur Zeit unterstützt BIRT 13 verschiedene Diagrammtypen z. B. Open Source Balken-, Linien- und Tortendiagramme. Die Daten können innerhalb der Grafik nochmals gefiltert, sortiert und gruppiert werden. Außerdem unterstützt BIRT eine Live-Ansicht des Diagramms während der Report-Erstellung. Dynamische Elemente Oft kann es nützlich sein, dass ein Report je nach gelieferten Werten seine Formatierung dynamisch ändert, z. B. um Umsatzgewinne und Umsatzverluste farblich zu unterscheiden oder um das Seitenumbruchverhalten dynamisch zu steuern. Für die Generierung von dynamischen Elementen setzt BIRT ein eigenes Event-Modell ein. Mit Hilfe der Scriptsprache Mozilla RhinoScript oder der Programmiersprache Java lassen sich eigene Event­handler schreiben (siehe Abbildung 3). Integration Abb. 1: Der Report Designer. Die mit dem BIRT Report Designer erzeugten Beichte lassen sich in alle gängigen ServletEngines (z. B. Apache Tomcat) integrieren. Um einen Report in den Apache Tomcat zu integrieren, muss nur der BIRT Viewer in den Webapps-Ordner des Tomcat kopiert werden. Anschließend kopiert man die Report-Datei (*.rptdesign) in den BIRT Viewer. Danach ist der Report über die entsprechende URL aufrufbar. Eine genauere Anleitung zur Integration von Berichten finden Sie unter [1]. Dokumentation Die Dokumentation von BIRT ist mittlerweile recht gut. Neben der Homepage [2] und den beiden Fachbüchern „BIRT - A Field Guide for Reporting“ [3] und „Integrating and Extending BIRT“ [4] ist besonders die Webseite der BIRT-Community [5] sehr empfehlenswert. Hier gibt es eine große Anzahl von Tutorials, Flash Demos, ein Wiki und ein eigenes Forum. Abb. 2: Der Chart Designer. import org.eclipse.birt.report.engine.api.script.* Die vier Ebenen eines Reports Jeder mit BIRT erstellte Report verfügt über einen bestimmten Aufbau, der auf 4 Ebenen erfolgt: • Auf Ebene 1 müssen für den Report Daten zur Verfügung gestellt werden. Als Datenquelle kann jede Datenbank genutzt werden, für die es einen JDBC-Treiber gibt. public class Event extends LabelEventAdapter { public void onPrepare(ILabel arg0, IReportContext arg1) { try { arg0.getStyle().setBackgroundColor("red"); } catch (Exception e) { } } } Abb. 3: Einfacher Eventhandler, der die Hintergrundfarbe auf rot setzt. ORDIX News 1/2009 19 Open Source Außerdem können XML-Dateien, WebServices und Flachdateien (CSV) als Datenquelle genutzt werden. • Report Designer Eclipse Report Designer Eclipse DTP, WTP, ... Chart Designer Custom Designer • Report Design Engine XML Report Design Data Report Document Report Engine Data Transform. Services Charting Engine Generation Services Presentation Services HTML PDF Excel Word Powerpoint PostScript ... Abb. 4: So funktioniert BIRT. Glossar 20 • Auf Ebene 2 erfolgt die Datentransformation. Darunter versteht man die Gruppierung oder die Filterung von Daten. Diese Datentransformation kann direkt in der SQL-Abfrage erfolgen (group by, where-Klausel), aber auch später im Report Designer. Auf Ebene 3 erfolgt das Hinzufügen der Geschäftslogik. Dies kann in BIRT sowohl mit Java als auch mit JavaScript erfolgen. Auf Ebene 4 erfolgt die Präsentation, also die Ausgabe des Reports, als HTML oder PDF. Funktionalität BIRT besteht im Wesentlichen aus zwei Hauptkomponenten, dem Report Designer und der Report Engine (siehe Abbildung 4). Wie die Namen schon verraten, dient der Report Designer zum Erstellen des Layouts und die Report Engine zur Erstellung des Berichts selbst. Der Report Designer Der Report Designer besteht aus den Komponenten Eclipse Report Designer, dem Chart Designer, der Report Design Engine und zusätzlichen Eclipse Plugins wie DTP (Data Tools Platform) und WTP (Web Tools Platform). Einfache Reports wie Tabellen und Listen werden mit dem Eclipse Report Designer erstellt, Charts wie Balken- oder Tortendiagramme mit dem Chart Designer. Die Report Design Engine wandelt den Report in eine XML-Datei mit der Endung *.rptdesign um. Die XML-Datei enthält alle Informationen zum Layout, zur Formatierung und zu den Datenquellen, die der Report nutzt. BI Business Intelligence - IT-basierter Gesamtansatz zur betrieblichen Entscheidungsunterstützung. BIRT Business Intelligence and Reporting Tools. BIRT ist ein BI-Tool der Eclipse Foundation, das auf Java-Technologien basiert. Eclipse Eine Open Source Entwicklungsumgebung, mit offener, pluginbasierter Struktur unter der Verwaltung der Eclipse Foundation. Die Report Engine JavaScript Von Netscape entwickelte client-seitige Skriptsprache zur Erstellung dynamischer Webseiten. JDBC Standard für den Zugriff auf relationale Datenbanken mit Java. Open Source Quelloffen - Quellcode ist einsehbar und darf verändert werden. Reporting Berichtswesen - Erstellung, Verteilung und Speicherung von statischen und dynamischen Berichten. Tomcat Servlet Container und HTTP-Server der Firma Apache. XML Extensible Markup Language (XML). XML ist eine so genannte Metasprache zur Beschreibung von Dokumenten. Ein Vorteil von XML ist der vereinfachte Austausch von Daten, da XML-Formate in einer strengen Grammatik definiert werden können und so die Implementierung von zuverlässigen Schnittstellen erlaubt. Die Report Engine ist die Laufzeitumgebung und ermöglicht es, aus der XML-Report-Design-Datei einen fertigen Report in unterschiedlichen Ausgabeformaten zu erstellen. Im ersten Schritt wird mit Hilfe der Generation Services die XML-Datei um die entsprechenden Daten angereichert. Bei Bedarf können diese Daten dann über die Data Transformation Services noch transformiert werden. Danach wird von den Generation Services eine temporäre Datei, das so genannte Report Document erzeugt. Das Report Document ist die XML-Datei, erweitert um die transformierten Daten. Je nach gewähl- ORDIX News 1/2009 Open Source tem Ausgabeformat können die Presentation Services aus dem Report Document einen fertigen Report in der gewünschten Ausgabe generieren. Für die Berichte, in denen Diagramme vorkommen, werden die Presentation Services von der Chart Engine unterstützt. Links ► [1] Anleitung zur Integration von Reports: http://www.eclipse.org/birt/phoenix/deploy/viewerSetup.php ► [2] Die Eclipse BIRT Homepage: http://www.eclipse.org/birt/phoenix/ ► [3] Buchtipp: „BIRT - A Field Guide for Reporting“, ISBN-10: 0321580273, ISBN-13: 978- Fazit Das Open Source Tool BIRT macht mittlerweile einen recht ausgereiften Eindruck. Eine der großen Stärken von BIRT ist die Benutzerfreundlichkeit. Wenn Sie bereits mit Eclipse gearbeitet haben und über etwas SQL-Grundlagenwissen verfügen, werden Sie schnell in der Lage sein, einen einfachen Report zu erstellen. Haben Sie darüber hinaus auch noch Java- oder JavaScript-Kenntnisse, sind mit BIRT auch komplexere Reports möglich. Wer also ein Tool sucht, das in der Lage ist, dynamische Reports in HTML oder PDF zu erzeugen, ist mit BIRT gut beraten. Negativ zu bewerten ist lediglich die Ausgabe von Reports als Excel-Dokument, die bei unseren Tests nur funktionierte, wenn der Report aus einfachen 0321580276 ► [4] Buchtipp: „Integrating and Extending BIRT“, ISBN-10: 0321443853, ISBN-13: 9780321443854 ► [5] Die BIRT Community mit vielen Tutorials und Beispielen: http://www.birt-exchange.com/ ► [6] Blog mit guten Code-Beispielen: http://birtworld.blogspot.com/ ► [7] Die Actuate Homepage : http://www.actuate.com/home/index.asp Tabellen bestand. Sobald der Report auch eine Grafik enthält, ist das Excel-Dokument unbrauchbar. Ob sich das in Zukunft ändert, ist fraglich, da Actuate mit dem Spreadsheet Designer ein kommerzielles Tool anbietet, das speziell diese Aufgabe erfüllt. Ulf Papenfuß ([email protected]). BIRT im Expertencheck 1. Installationsaufwand 2. Datenquellenanbindung 3. Formatunterstützung 4. IDE 5. Report-Generierung 6. Chart-Generierung 7. Integration in Servlet Engines 8. Benutzerfreundlichkeit 9. Dokumentation 10. Entwicklungspotential 11. Gesamteindruck positiv: negativ: „Der Einstieg in BIRT ist dank einfacher Installation und einer guten Dokumentation nicht schwierig. Besonders erwähnenswert ist die Generierung von Charts in BIRT. Diese ist aufgrund des Wizzards nicht nur sehr benutzerfreundlich, sondern bietet auch einen guten Funktionsumfang. Auch die Datenquellenanbindung ist für ein Reporting Tool mehr als ausreichend. Schwächen zeigt BIRT jedoch in der Unterstützung des Excel-Formats. Mein Fazit: BIRT hat einen guten Start hingelegt und hat aufgrund der großen Community und der Unterstützung der Eclipse Foundation ein großes Entwicklungspotential. Wer ein kostenloses Tool für die Erstellung von Reports in PDF und HTML sucht, für den ist BIRT die richtige Wahl.“ Ulf Papenfuß ORDIX AG, Paderborn ORDIX News 1/2009 21 Datenbanken Reihe Oracle Objekttypen von A - Z (Teil IX): Ressourcen und andere Objekte Die Reihe ist für alle Datenbankadministratoren und Entwickler, die einen Überblick über die Oracle Objekttypen bekommen wollen. In diesem Teil der Reihe Objekttypen von A - Z beginnen wir mit dem Resource Manager und kommen über Sequenzen, Snapshots und Synonymen zum Datenbankobjekt Tabelle. Mit dem Objekt Trigger beenden wir den neunten Teil dieser Reihe. Resource Manager Der Resource Manager ist ein Werkzeug zur Verwaltung von System-Ressourcen wie z. B. der CPU-Zeit, der Anzahl paralleler Prozesse und der Größe des Undo-Bereichs. Normalerweise kann ein Oracle-Benutzer beliebig viele Hardware-Ressourcen verwenden und so andere Benutzer oder Programme bei der Arbeit empfindlich stören. Mit Hilfe des Resource Managers lassen sich Ressourcenpläne definieren, die einerseits die Ressourcen auf bestimmte Gruppen aufteilen und andererseits Oracle-Benutzer diesen Gruppen zuordnen. Die Ressourcenpläne werden mit dem PL/SQL-Paket DBMS_RESOURCE_MANAGER angelegt und verwaltet und stellen eigene Datenbankobjekte dar. Die Verwaltung der CPUZeit in den Ressourcenplänen erfolgt über so genannte Consumer Groups, die ebenfalls eigene Datenbankobjekte darstellen. ORDIX News 1/2009 Abbildung 1 zeigt die Syntax zum Anlegen einer Sequenz und zur Erzeugung einer Sequenznummer. Snapshot Das Datenbankobjekt Snapshot gibt es nur noch aus Gründen der Kompatibilität mit früheren Versionen. Der Nachfolger von Snapshot heißt Materialized View. Diesem Datenbankobjekt haben wir uns in der Ausgabe 3/2008 [1] gewidmet. Sequenz Synonym Die Sequenz ist ein Datenbankobjekt zur Generierung von Integer-Zahlen. Häufig wird die Sequenz zur Befüllung eines künstlichen Primärschlüssels verwendet. Beim Anlegen der Sequenz können der Startwert, ein maximaler Wert und die Eigenschaft CYCLE angegeben werden. Die CYCLE-Eigenschaft besagt, dass bei Erreichung des maximalen Werts wieder beim Startwert begonnen wird. Ein Synonym ist ein Alias auf ein Datenbankobjekt. Das Datenbankobjekt kann dabei sowohl vom Typ Tabelle, View, Sequenz, Stored Procedure, Funktion, Paket, Materialized View oder Java-Klasse sein, als auch ein benutzerdefinierter Typ oder ein Synonym selbst. Eine weitere Eigenschaft ist die Sortierung. Diese stellt sicher, dass Sequenznummern zeitlich streng monoton aufsteigend vergeben werden. Während bei Single-Instance- 22 Datenbanken diese Eigenschaft zwingend ist, kann die Sortierung in RAC-Konfigurationen zu erheb­lichen Performance-Problemen führen. Der Vermeidung von Performance-Problemen dient der Parameter CACHE. Dieser legt fest, wie viele Sequenznummern im Speicher vorgehalten werden. Ein Synonym ist beispielsweise hilfreich, um eine Referenz auf ein Objekt in einem anderen Schema oder einer entfernten Datenbank zu verwenden, ohne das Schema bzw. den Datenbank-Link selbst im Programmcode festzuschreiben. Abbildung 2 zeigt, wie ein Synonym angelegt wird. Nach dem Anlegen Datenbanken des Objekts kann die entfernte Tabelle einfach über den Namen des Synonyms (hier kunde) angesprochen werden. Tabelle / Tabellen-Partition / Tabellen-Subpartition Die Tabelle ist wohl das bekannteste Datenbankobjekt. Sie dient der Aufnahme der Daten einer Anwendung, findet aber auch im Data Dictionary selbst vielfach Verwendung. Die Standardtabelle wird auch als so genannte Heap-Tabelle bezeichnet. Damit wird kenntlich gemacht, dass die Daten in der Tabelle in der Regel nicht sortiert sind, es handelt sich lediglich um einen „Haufen“ von Daten. CREATE SEQUENCE pk_id; SELECT pk_id.nextval FROM dual; Abb. 1: Verwendung von Sequenzen. CREATE SYNONYM kunde FOR sap.kunde; Abb. 2: Erstellung eines Synonyms. Links ►► [1] ORDIX News Artikel „LOB, LOB Partition, LOB Subpartition, Materialized Neben der Heap-Tabelle gibt es weitere Speicherstrukturen. Eine Index-Organized-Table (IOT) ist eine Tabelle, in der die Daten physikalisch nach dem Primary Key der Tabelle sortiert sind. Mit dem Anlegen einer IOT entstehen immer zwingend zwei Datenbankobjekte, die Tabelle und der Primary Key. Allerdings ist lediglich der Primary Key ein Segment. Views, Operator“: http://www.ordix.de/ORDIXNews/3_2008/Datenbanken/Oracle_Objekttypen_teil7.html ►► [2] ORDIX News Artikel „PL/SQL-Objekte und -Indizes“: http://www.ordix.de/ORDIXNews/3_2007/Datenbanken/oracle_objekttypen_teilIV.html ►► [3] ORDIX News Artikel „Oracle Objekttypen – Von Cluster bis XML“: http://www.ordix.de/ORDIXNews/3_2006/Datenbanken/oracle_objekttypen.html ►► [4] Übersicht ORDIX News Artikelreihe Oracle Objekttypen: http://www.ordix.de/ORDIXNews/artikelreihen.html#oracle_objekttypen Das Datenbankobjekt Index wurde bereits in der ORDIX News 3/2007 [2] behandelt. Eine weitere Speicherstruktur für Tabellen ist der Cluster, über den wir bereits in der ORDIX News 3/2006 [3] berichteten. Der Cluster verbindet mehrere Tabellen über einen Cluster-Index und speichert die zugehörigen Daten aller Tabellen physikalisch gemeinsam ab. Auch mit der Erstellung eines Clusters werden mehrere Datenbankobjekte erzeugt, jeweils ein Objekt für jede Tabelle und ein weiteres für den Cluster sowie den Cluster-Index. Hierbei sind nur die beiden letztgenannten auch Segmente. Eine weitere Möglichkeit der physikalischen Strukturierung stellt die Partitionierung dar. Mit deren Hilfe wird eine logische Tabelle nach einem bestimmten Kriterium (partition key) in mehrere kleinere Einheiten zerlegt. Diese Einheiten heißen Partitionen. Die Partitionen selbst können wiederum noch einmal in so genannte Subpartitionen partitioniert werden. Alle Partitionen und Subpartitionen sind, zusätzlich zur Tabelle selbst, eigenständige Objekte. Alle Eigenschaften des Datenbankobjektes Tabelle vorzustellen, würde den Rahmen dieser Ausarbeitung deutlich sprengen. In der Oracle 10.2 Dokumentation nimmt der Befehl CREATE TABLE bereits beeindruckende 55 Seiten ein! Trigger Ein Trigger ist ein Datenbankobjekt zum Auslösen bestimmter Aktionen beim Eintreffen eines Ereignisses. Bekannt sind sicherlich Trigger auf Tabellen, welche auf die DMLKommandos INSERT, UPDATE und DELETE reagieren. Daneben existieren aber auch Trigger auf Views. Diese Instead-Of-Trigger interpretieren DML-Kommandos auf Views frei nach den Wünschen des Anwendungsentwicklers. Die dritte Variante sind Trigger, die auf Datenbankereignisse reagieren. Diese Trigger können auf die Datenbank oder auf ein Schema angelegt werden. Das Triggerereignis kann beispielsweise der Start der Datenbank, das Anmelden eines Benutzers oder die Erstellung eines Objektes sein. Ausblick In der nächsten Ausgabe der ORDIX News schließen wir die Reihe der Objekttypen nach mehr als zwei Jahren und ca. 50 unterschiedlichen Objekttypen ab. Martin Hoermann ([email protected]). ORDIX News 1/2009 23 24 ORDIX News 1/2009 KW 14 KW 15 KW 16 KW 17 KW 18 KW 19 KW 20 KW 21 KW 22 KW 23 KW 24 KW 25 KW 15 KW 16 KW 17 KW 18 KW 19 KW 20 KW 21 KW 22 KW 23 KW 24 KW 25 Juni KW 14 Mai KW 13 April KW 13 Datenbanken Datenbank-Hochverfügbarkeitslösungen für Entscheider Datenbank-Modellierung Oracle SQL Oracle SQL für Umsteiger Oracle SQL für Experten Oracle Datenbankprogrammierung mit PL/SQL Grundlagen Oracle Datenbankprogrammierung mit PL/SQL Aufbau Oracle Datenbankadministration Grundlagen Oracle Datenbankadministration Aufbau Oracle Backup und Recovery Oracle Tuning und Monitoring Oracle Troubleshooting Workshop Oracle Real Application Cluster (RAC) Oracle 11g Neuheiten Oracle Security Oracle Data Guard Oracle RMAN Oracle Grid Control Oracle Streams Advanced Queuing Oracle Replikation IBM Informix SQL IBM Informix Dynamic Server Administration IBM Informix Dynamic Server Tuning und Monitoring IBM Informix Dynamic Server Backup und Recovery IBM Informix Dynamic Server 11 Neuheiten IBM Informix Dynamic Server Hochverfügbarkeits-Technologien unter Unix IBM DB2 für Linux/Unix/Windows SQL Grundlagen IBM DB2 für Linux/Unix/Windows Administration IBM DB2 für Linux/Unix/Windows Monitoring, Tuning und Hochverfügbarkeit MySQL Administration Microsoft SQL Server Administration Microsoft SQL Server Hochverfügbarkeits-Workshop Programmierung PHP Programmierung Grundlagen PHP Programmierung Aufbau Perl Programmierung Grundlagen Perl Programmierung Aufbau Shell, Awk und Sed AWK Intensiv-Workshop Einführung in XML XML Programmierung unter Java mit DOM und SAX Oracle und XML Java-JEE Einführung in die objektorientierte Programmierung Java Programmierung Grundlagen Java Programmierung Aufbau Java GUI Entwicklung mit Swing JEE für Entscheider Einführung in JEE JSP und Servlet Programmierung EJB Programmierung Web-Anwendungen mit JavaServer Faces (JSF) Entwickeln mit dem Spring-Framework Java Web Services Hibernate und die Java Persistence API Java Performance Tuning Java Memory und Garbage Collection - Theorie und Praxis Web- und Applikations-Server Apache Web-Server Installation und Administration Tomcat Konfiguration und Administration WebSphere Application Server Installation und Administration Administration und Konfiguration für JBoss Betriebssysteme Unix/Linux Grundlagen für Einsteiger Linux Systemadministration Networking für Unix-Systemadministratoren Server-Virtualisierung mit XEN Linux Hochverfügbarkeits-Cluster OpenLDAP - Praxiseinsatz im Netzwerk Solaris Systemadministration Grundlagen Solaris Systemadministration Aufbau Solaris kompakt für erfahrene Unix-Administratoren Solaris 10 für erfahrene Systemadministratoren Solaris Containers Zettabyte Filesystem (ZFS) Workshop AIX Systemadministration Grundlagen Multivendor-Systemadministration IPv6 für Entscheider IPv6 für Systemadministratoren Systemmanagement Systemüberwachung mit Nagios Grundlagen Systemüberwachung mit Nagios Aufbau Projektmanagement IT-Projektmanagement IT-Controlling Grundlagen IT-Projektcontrolling in der Praxis März KW 12 März - Oktober 2009 Preis in Euro *)**) KW 12 Seminartermine 550,00 € 890,00 € 1.890,00 € 890,00 € 1.290,00 € 1.890,00 € 1.890,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.290,00 € 1.590,00 € 1.590,00 € 1.290,00 € 1.290,00 € 1.290,00 € 1.790,00 € 1.990,00 € 1.990,00 € 1.290,00 € 590,00 € 1.590,00 € 1.890,00 € 1.990,00 € 1.290,00 € 1.190,00 € 1.790,00 € 790,00 € 1.690,00 € 1.190,00 € 1.690,00 € 1.690,00 € 1.690,00 € 1.190,00 € 1.190,00 € 890,00 € 1.190,00 € 1.190,00 € 1.690,00 € 1.690,00 € 1.690,00 € 590,00 € 1.290,00 € 1.590,00 € 1.590,00 € 1.590,00 € 1.190,00 € 1.190,00 € 1.690,00 € 1.290,00 € 690,00 € 1.190,00 € 1.190,00 € 1.390,00 € 1.190,00 € 1.690,00 € 1.690,00 € 1.690,00 € 1.190,00 € 1.290,00 € 1.490,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.990,00 € 1.290,00 € 890,00 € 1.990,00 € 1.990,00 € 590,00 € 1.190,00 € 1.190,00 € 890,00 € 1.990,00 € 1.290,00 € 1.290,00 € Seminartermine KW 43 KW 42 KW 41 Oktober KW 40 KW 39 KW 38 KW 37 KW 36 September KW 35 KW 34 KW 33 KW 32 KW 31 August KW 30 KW 29 KW 28 KW 27 KW 26 Juli März - Oktober 2009 Informationen und Anmeldung ORDIX AG Westernmauer 12 - 16 33098 Paderborn Tel.: 05251 1063-0 ORDIX AG Kreuzberger Ring 13 65205 Wiesbaden Tel.: 0611 77840-00 zentrales Fax: 0180 1 ORDIX 0 bzw. 0180 1 67349 0 E-Mail: [email protected] Online-Anmeldung: http://training.ordix.de Für Informationen und Fragen zu individuell zugeschnittenen Seminaren, Ausbildungsreihen oder Inhouse-Schulungen stehen wir Ihnen gerne zur Verfügung. Auf Wunsch senden wir Ihnen auch unser komplettes Seminarprogramm zu. http://training.ordix.de Online-Anmeldung und stets aktuelle Seminarinhalte und Termine! KW 43 KW 42 KW 41 KW 40 KW 39 KW 38 KW 37 KW 36 KW 35 KW 34 KW 33 KW 32 KW 31 KW 30 KW 29 KW 28 KW 27 KW 26 Seminartermin in Wiesbaden *) Preise pro Seminar pro Teilnehmer in Euro. Alle Preise gelten zzgl. ges MwSt. **) Inhousepreise auf Anfrage. ORDIX News 1/2009 25 IT-Strategie Reihe SOA (Teil III): RESTful Web Services Dieser Artikel richtet sich an Architekten und Entwickler, die eine einfache und performante Technologie zur Implementierung von Web Services suchen. Die Vorteile von serviceorientierten Architekturen (SOA) liegen auf der Hand: Geschäftsvorfälle werden über Services abgebildet, wodurch die Komplexität verringert und die Wiederverwendbarkeit bestehender Services ermöglicht wird. SOA macht keine Vorschriften über konkrete zu verwendende Technologien. Um Services zu realisieren, wird häufig auf Web Services, die auf SOAP basieren, zurückgegriffen. Da Web Services jedoch recht komplex sind, kann sich ein Blick auf die sehr einfache REST-Architektur lohnen. Roy Fielding, der auch an der Spezifikation des HTTP-Protokolls beteiligt war, prägte in seiner Doktorarbeit den Begriff REST (Representational State Transfer). REST ist ein Architekturvorschlag für die Implementierung verteilter Softwaresysteme. Das World Wide Web ist das wohl bekannteste Beispiel eines REST-Systems. Daher lassen 26 ORDIX News 1/2009 sich die grundlegenden Eigenschaften von REST auch im Web wiederfinden. Eigenschaften von REST-Systemen • Die Kommunikation verläuft bei REST nach dem Request-Response Paradigma. Der Client fordert Informationen vom Server an, der eine entsprechende Antwort zurückgibt. IT-Strategie • • • • Die Kommunikation erfolgt zustandslos. Sämtliche relevanten Informationen müssen über einen Request gesendet werden, eine Session ist nicht vorhanden. Die gewünschte Ressource ist über eine URI erreichbar. Die Anfragen erfolgen über bestimmte Operationen, zum Beispiel im HTTP: GET (Lesen), POST (Aktualisieren), PUT (Anlegen), DELETE (Löschen). @Path @GET @Produces @Consume @QueryParam Pfad, über den die Ressource zu erreichen ist. Analog zu den HTTP-Methoden GET, POST, PUT, DELETE und HEAD gibt es entsprechende Annotations, um Methoden einer Ressourcen-Klasse zu kennzeichnen. Diese werden dann entsprechend der HTTP-Anfrage aufgerufen. Gibt den MIME-Type der Antwort an den Client an. Gibt an, in welchem MIME-Type die Anfragen des Clients vorliegen. (In Kombination mit der Annotation @Post) Auslesen von Request Parametern Abb. 1: Auswahl an Jersey Annotations. Die Antworten können aus einem Cache geladen werden, um die Netzwerkeffi­zienz zu erhöhen. package de.ordix; Werden diese Eigenschaften bei der Entwicklung von Services beachtet, spricht man von „RESTful Services“. Bei der Implementierung dieser Services sollten folgende Prinzipien angewendet werden. Prinzipien bei der Entwicklung von RESTful Services • • • • Für jede über einen Service erreichbare Ressource wird eine eigene URI bereitgestellt, z. B. für ein Seminar mit der ID 4711: http://www.ordix.de/seminare/4711 Anfragen des Clients per GET-Methode dürfen keine Seiteneffekte haben. Der Server liefert die angeforderte Ressource zurück, führt aber keinerlei Änderungen durch. Der Server sollte als Antwort zusätzliche Hyperlinks zur Verfügung stellen, anhand derer der Client weitere Informationen zu der Ressource beschaffen kann. Services sollten per WSDL oder über ein einfaches HTML-Dokument beschrieben werden. Dies ist besonders wichtig, falls auch Operationen wie POST oder PUT möglich sind. Die Referenzimplementierung Jersey Wenn nun die Entscheidung für RESTful Services getroffen ist, wird eine konkrete Tech­ nologie zur Implementierung benötigt. An dieser Stelle lohnt sich ein Blick auf den von SUN verabschiedeten Java Specification Request Nummer 311. Dahinter verbirgt sich die „Java-API für RESTful Web Services“, die so genannte JAX-RS. Die Referenzimplementierung heißt Jersey und lässt sich in der aktuellen Version 1.0 beziehen [1]. Im Folgenden import javax.ws.rs.*; @Path("/seminare/{seminarname}") public class SeminarRessource{ @GET @Produces("text/plain") public String getSeminar(@PathParam("seminarname") String seminar) { return "Danke für Ihr Interesse an dem Seminar: "+seminar; } } Abb. 2: Ein einfacher RESTful Web Service. wird ein einfacher REST-Service mit Hilfe von Jersey implementiert. Beispielservice mit Jersey Die Funktionalität von Jersey lässt sich über eine einfache Servlet-Anwendung demonstrieren. Im Deployment Deskriptor der Anwendung (web.xml) wird der Jersey Servlet Container registriert. Dieser verarbeitet die eingehenden Anfragen und führt entsprechende Methoden aus. Die eigentliche Verarbeitung der REST-Anfragen findet in so genannten RessourcenKlassen statt. Diese sind einfache POJOS, die bestimmte Annotations verwenden. Einige Beispiele finden Sie in Abbildung 1. Abbildung 2 zeigt eine einfache RessourcenKlasse, die eine HTTP-GET Anfrage entgegennimmt und eine Nachricht im Textfor­ mat an den Client zurücksendet. Es wird ein URI-Template verwendet ({seminarname}), welches in der Methode getSeminar ausge- ORDIX News 1/2009 27 IT-Strategie wertet wird. Aufgerufen wird dieser Service wie folgt: Glossar REST Representational State Transfer. Architekturkonzept für verteilte Softwaresysteme, bei dem jede Ressource über eine eigene URI ansprechbar ist. SOA Serviceorientierte Architektur. Ist ein Systemarchitekturkonzept, das die Bereitstellung fachlicher Dienste und Funktionalitäten in Form von Diensten (Services) vorsieht. Ein Dienst ist in diesem Kontext eine Funktionalität, die über eine standardisierte Schnittstelle in Anspruch genommen werden kann. Häufig werden solche Dienste als Web Services realisiert. Simple Object Access Protocol. SOAP ist ein Protokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und Remote Procedure Calls durchgeführt werden können. Hypertext Transfer Protocol (Hypertext-Übertragungsprotokoll). HTTP ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten und andere Daten aus dem Internet in einen Webbrowser zu laden. Uniform Resource Identifier. (Einheitlicher Bezeichner für Ressourcen). Zeichenfolge zur eindeutigen Identifizierung einer Ressource (z. B. Webseite). Java Specification Request. JSR kennzeichnet eine Anforderung für eine Änderung der Programmiersprache Java, die vom Standardisierungskomitee, dem Java Community Process, eingebracht wird. SOAP HTTP URI JSR POJO Plain Old Java Object. Dabei handelt es sich um ein normales Objekt in der Programmiersprache Java. Annotations Anmerkungen im Java Source Code, die zur Laufzeit des Programms ausgewertet werden können. Annotations sind seit Java 5 Bestandteil von Java. Als geistigen Vater dieser Annotations kann man das Open Source Projekt XDoclet ansehen. XDoclet erlaubte es, auch schon in früheren Java- Versionen mit Annotations zu programmieren. Links ►► [1] Jersey Download: https://jersey.dev.java.net/ ►► [2] ORDIX News Reihe SOA (Teil I) „Was ist SOA?“: http://www.ordix.de/ORDIXNews/3_2008/IT-Strategie/Ueberblick_SOA.html ►► [3] ORDIX News Reihe SOA (Teil II) „SOA-Governance - Braucht SOA eine neue Regierung?“: http://www.ordix.de/ORDIXNews/4_2008/IT-Strategie/SOA_Governance.html http://beispiel.de:8080/restWebAnwendung/seminare/Java Die Ausgabe lautet dann: „Danke für Ihr Interesse an dem Seminar: Java“. Vorteile von RESTful Services Das Beispiel in Abbildung 2 macht deutlich, dass es mit relativ wenig Aufwand möglich ist, Web Services mit Hilfe von REST zu implementieren. Auch lässt sich Jersey leicht in bestehende Anwendungen integrieren: Entsprechende Methoden müssen lediglich mit den passenden Annotations versehen werden. Die Daten werden über das HTTP-Protokoll übertragen. Daher entfällt der XML-Overhead, den das SOAP-Protokoll mitbringt. Bestehende Caching-Mechanismen im Web, z. B. von Web-Servern oder Proxy-Servern, können ausgenutzt werden. Auch lässt sich der REST-Ansatz leicht mit Ajax Frameworks kombinieren, da diese auf einer HTTP-Kommunikation basieren. Fazit RESTful Web Services können eine durchaus sinnvolle Alternative zu den Web Services auf Basis von SOAP sein. Sie sind einfach zu implementieren und performant. Die Referenzimplementierung Jersey bietet mit Annotations die Möglichkeit, Services einfach und übersichtlich zu entwickeln. Spielen allerdings komplexe Workflows, Security und Transaktionsmanagement eine Rolle, stoßen RESTful Services an ihre Grenzen. Jens Stahl ([email protected]). Seminarempfehlung: Java Web Services ►► Informationen/Online-Anmeldung: http://training.ordix.de/seminar.php?nr=266 In diesem Seminar werden Sie mit der Erstellung der innovativen WebServices im Java-Umfeld auf Basis von JAX-WS und Axis2 vertraut gemacht. Alle zugehörigen Technologien und Realisierungsstrategien werden praxisnah betrachtet, so dass Sie nach dem Seminar in der Lage sind, auf den gängigen Plattformen WebServices zu implementieren. Seminar-ID: INT-05 Dauer: 3 Tage Preis pro Teilnehmer: 1.190,00 € (zzgl. MwSt.) Frühbucherpreis: 1.071,00 € (zzgl. MwSt.) 28 ORDIX News 1/2009 Termine 15.06.- 17.06.2009 in Wiesbaden 03.08.- 05.08.2009 in Wiesbaden 12.10.- 14.10.2009 in Wiesbaden Wir führen unsere Seminare auch jederzeit an einem geeigneten Ort Ihrer Wahl durch und bringen, wenn nötig, auch das entsprechende Equipment mit. Informieren Sie sich am besten im Internet über unsere Inhouse-Seminare und die mobilen Schulungen: http://training.ordix.de. Open Source Flexible Versionskontrolle mit Subversion (SVN) Größere Entwicklungsprojekte bestehen mitunter aus tausenden Dateien. Diese werden zudem von mehreren Entwicklern zum Teil parallel bearbeitet. Ohne den Einsatz von speziellen Tools ist es nicht möglich, dabei die Übersicht zu behalten. Mit Subversion (SVN) wird in diesem Artikel das derzeit aktuellste Versionskontrollsystem aus dem Open-Source-Bereich vorgestellt. Die Entstehung Versionskontrollsysteme gibt es bereits seit geraumer Zeit, sowohl im kommerziellen als auch im Open-Source-Bereich. Lange Zeit galt im Open-Source-Bereich das Tool CVS (Concurrent Version System) als erste Wahl. In vielen Entwicklungsprojekten stellte sich jedoch heraus, dass das System in einigen Belangen zu unflexibel und der Funktionsumfang nicht immer ausreichend war. Die Intention für die Entwicklung des Versionskontrollsystems Subversion bestand da­ rin, die Einschränkungen und Unzulänglich­ keiten von CVS auszuräumen und dem An­wender so viel Flexibilität wie möglich zur Verfügung zu stellen. Aktuell steht Subversion in der Version 1.5.5 zur Verfügung. Einsatzgebiete Grundsätzlich lassen sich alle Arten von Dateien mit SVN verwalten. So kommt Subversion durchaus auch für die Verwaltung von Binärdateien, z. B. Office-Dokumenten oder Bildern, zum Einsatz. Wichtige Funktionalitäten, wie zum Beispiel der Vergleich verschiedener Dateiversionen oder das automatische Zusammenführen von verschiedenen Bearbeitungsständen, funktionieren jedoch nur mit textbasierten Dateien. Für den Dateivergleich von Office-Dateien existieren zwar teilweise externe Tools, die verwendet werden können, das Haupteinsatzgebiet für Subversion stellt Dieser Artikel richtet sich an Entwickler und Architekten, die in ihren Projekten ein Versionskontrollsystem benötigen sowie an Administratoren, die ein solches System betreuen. jedoch ganz klar die Softwareentwicklung bzw. die Verwaltung von Quellcodedateien dar. Grundsätzliche Funktionsweise Die grundsätzliche Funktionsweise eines jeden Versionskontrollsystems ist im Prinzip immer gleich. Die verwalteten Daten liegen an einer zentralen Stelle in einem Repository, auf das die beteiligten Entwickler von ihren lokalen Rechnern aus zugreifen können. Die Bearbeitung einer Datei wird dann lokal durchgeführt und Änderungen oder neu erstellte Dateien werden anschließend in das Repository übertragen, so dass sie den anderen Entwicklern zur Verfügung stehen. Das Repository Das Repository kann auf dem SubversionServer entweder im Filesystem des Servers oder als BerkleyDB-Datenbank angelegt werden. Beide Alternativen unterstützen Transaktionen, so dass Änderungen immer atomar durchgeführt werden. Eine Netzwerkunterbrechung oder ein ähnliches Problem, das während der Übertragung zwischen Working­copy und Repository auftreten kann, führt demnach nicht zu einem inkonsistenten Datenbestand, da nur ein Teil der Dateien übertragen wurde. Obwohl die Struktur des Repositories völlig frei wählbar ist, wird ein Repository in der Regel immer nach dem gleichen Schema auf- ORDIX News 1/2009 29 Open Source gebaut (siehe Abbildung 1). Es wird also zwischen der Hauptentwicklungslinie (trunk), den Nebenentwicklungslinien (branches) und gegebenenfalls den Lieferständen (tags) unterschieden. Mehr dazu finden Sie im Abschnitt „Branches und Merges“. Die einzelnen Arbeitsversionen werden innerhalb des Repository mit einer Revisionsnummer gekennzeichnet. Jede Änderung, die per Commit-Befehl aus einer lokalen Workingcopy in das Repository gespielt wurde, führt dazu, dass die Revisionsnummer des gesamten Repository hochgezählt wird. Dabei spielt es keine Rolle, ob eine Datei im Trunk oder in einem Branch geändert wurde. Die Revisionsnummer bezieht sich immer auf das gesamte Repository. Die Workingcopy Um die verwalteten Dateien bearbeiten zu können, müssen die Entwickler zunächst eine Workingcopy des Repository-Standes auf ihrem lokalen Rechner erstellen. In dieser können dann die Änderungen vorgenommen werden. Dieser Checkout wird in der Regel nur ein einziges Mal vorgenommen. Anschließend werden nur noch die Unterschiede zwischen der Workingcopy und dem Repository (Commit) und umgekehrt (Update) übertragen. In jedem Ordner der Workingcopy wird ein verstecktes Verzeichnis mit dem Namen .svn angelegt. Darin befinden sich alle Informationen über die Datei, wie zum Beispiel der Dateipfad innerhalb des Repository, der Dateistatus oder die Revisionsnummer. Des Weiteren befindet sich innerhalb des Verzeichnisses .svn auch eine Kopie der Dateiversion zum Zeitpunkt des Checkouts bzw. des letzten Updates. Dies ermöglicht es dem SVN-Client zum einen, alle lokal vorgenommenen Änderungen rückgängig zu machen (Revert). Zum anderen kann der Client auch feststellen, ob eine Datei lokal verändert wurde oder nicht. Beides ist möglich, ohne sich mit dem Repository verbinden zu müssen. Durch die Sicherung der ausgecheckten Version verbraucht die Workingcopy immer ungefähr doppelt so viel Speicherplatz wie der Repository-Stand. Verschiedene Dateistatus Eine Datei innerhalb einer Workingcopy kann verschiedene Status haben: • Normal: Datei, die seit dem letzten Update nicht verändert wurde. • Modified: Datei, die seit dem letzten Update geändert wurde. • Conflicted: Datei, die sowohl in der lokalen Workingcopy als auch im Repository verändert wurde. • Deleted bzw. added: Datei, die in der lokalen Workingcopy gelöscht oder hinzugefügt wurde. Die Änderungen in der Workingcopy werden erst durch ein Commit zum SVN-Server wirksam. Weitere Status sind „locked“, „readonly“ und „ignored“: • trunk • Projektname tags • branches Abb. 1: Aufbau des Repository. 30 ORDIX News 1/2009 Locked: Eine Datei kann durch einen Anwender für andere Benutzer gesperrt werden, um eine Bearbeitung zu unterbinden. Sie erhält dann den Status „locked“. Readonly: Dateien, die manuell mit einem Schreibschutz versehen sind, werden als „readonly“ verwaltet. Ignored: Auch der Status „ignored“ wird manuell gesetzt. Dies ist nützlich für Dateien, die zwar bei einem Checkout aus dem Repository in die lokale Working­copy übernommen, deren Änderungen jedoch nicht ins Repository zurückgespielt werden sollen. Verwendet wird dieser Mechanismus beispielsweise für lokal unterschiedliche Konfigurationsdateien. Open Source Das Copy-Modify-Merge-Prinzip 1. Um die parallele Bearbeitung einer Datei zu ermöglichen, greift SVN auf das so genannte Copy-Modify-Merge-Prinzip zurück (siehe Abbildung 2). Im Gegensatz zu vielen anderen Versionskontrollsystemen, wird eine Datei, die sich in Bearbeitung befindet, nicht für die Bearbeitung durch andere Benutzer gesperrt. Das Lesen und Bearbeiten ist also für jeden Nutzer zu jeder Zeit möglich (siehe Schritt 1). Ein Benutzer kann eine lokal geänderte Datei nicht in das Repository spielen, wenn diese in der Zwischenzeit bereits von einem anderen Anwender geändert wurde (siehe Schritt 2). Die Datei erhält den Status „conflicted“. Er muss zunächst ein Update vornehmen und die beiden geänderten Versionen innerhalb seiner Workingcopy zusammenfügen (siehe Schritt 3). Wenn sich die vorgenommenen Änderungen nicht wiedersprechen, wird dieser Vorgang bei textbasierten Dateien automatisch vorgenommen. Dieser Mechanismus arbeitet zeilenbasiert, d. h. Dateien, in denen Änderungen von unterschiedlichen Benutzern in derselben Zeile vorgenommen wurden, können nicht automatisch bearbeitet werden. In diesem Fall muss der Benutzer die Dateiversionen manuell zusammenfügen. Die meisten SVN-Clients bieten aber auch hier Unterstützung an. Nachdem die beiden Versionsstände zusammengeführt wurden, kann der Dateistatus auf „modified“ gesetzt und die Datei anschießend über ein Commit in das Repository gespielt werden (siehe Schritt 4). Branches und Merges Um den Entwicklungszweig (trunk) zu duplizieren, bietet Subversion, wie auch die meisten anderen Versionskontrollsysteme, die Möglichkeit an, einen so genannten Branch (zu Deutsch: Ableger) zu erstellen. Technisch gesehen stellt ein Branch lediglich eine Kopie dar. Die im Branch vorgenommenen Änderungen können in die Hauptentwicklungslinie übernommen werden und umgekehrt. Das Übernehmen der gesamten Änderungen oder Teilen davon in eine andere Entwicklungslinie bezeichnet man als „Merge“. Für die Erstellung eines Branches kann es mehrere Gründe geben. Bug-Fix-Branch Am häufigsten wird ein so genannter Bug-FixBranch angelegt. Dies geschieht immer dann, 2. Repository Read Repository Read Write 1 3. Write 2 4. Repository Repository Read Write Merge Abb. 2: Copy-Modify-Merge-Prinzip. wenn ein bestimmter Verionsstand erreicht ist, der in den Test- oder Produktionsbetrieb geht. Somit kann in der Hauptentwicklungslinie die Entwicklung des nächsten Release beginnen und im Branch können Fehler behoben oder Änderungen vorgenommen werden, die während des Test- oder Produktionsbetriebs aufgefallen sind. Diese Änderungen können aus dem Branch in den Trunk übernommen werden. Aus dem Branch kann dann zu jeder Zeit ein Programmstand erzeugt werden, der zwar die Fehlerkorrekturen, nicht jedoch die neuen Funktionen für das nächste Release enthält. Entwicklungs-Branch Wenn für eine Entwicklung einer bestimmten Funktionalität oder eines bestimmten Moduls sehr weitreichende Änderungen an der Software vorgenommen werden müssen, kann dies die Arbeit anderer Entwickler beeinträchtigen. In diesem Falle kann es sinnvoll sein, für diese Entwicklung einen eigenen Branch anzulegen. Änderungen aus der Hauptentwicklungslinie würde man regelmäßig in den Branch übernehmen. Wenn die Entwicklung des Moduls abgeschlossen ist, übernimmt man diese dann wieder in den Trunk. Sonderversions-Branch Wenn neben der Standardversion einer Software eine oder mehrere Sonder- oder Spezialversionen existieren, kann es sinnvoll sein, auch hierfür einen separaten Branch zu er- ORDIX News 1/2009 31 Open Source Datei svnserve.conf -------------------[general] anon-access = read auth-access = write password-db = passwd authz-db = authz realm = Repositoryname [sasl] # use-sasl = true Datei users ------------------[users] user1 = Passwort1 user2 = Passwort2 Datei authz -----------------[/Repository Pfad] user1 = rw user2 = rw * = r Abb. 3: Konfigurationsdateien für den SVN-Zugriff. stellen. In diesen können dann alle Erweiterungen und Bugfixes aus dem Trunk bzw. anderen Branches übernommen werden. Die spezifischen Sonderfunktionen können jedoch in dem Branch separat verwaltet werden. Administratives Der Zugriff auf das Repository kann auf vielerlei Arten und über verschiedene Protokolle realisiert werden. Der gängigste Weg ist die Verwendung eines Apache Webservers, über den dann auch die Authentifizierung stattfindet. Als Protokoll kommt in diesem Fall http/https zum Einsatz. Der Webserver muss um 2 Moduldateien für die Einbindung von WebDAV und den SVNZugriff erweitert werden. In der Datei httpd.conf des Servers kann dann die Authentifizierungsmethode festgelegt und konfiguriert werden. Die Authentifizierung lässt sich dabei beispielsweise über einen LDAP, eine Datenbank oder die Kombination einer Passwort- und Berechtigungsdatei realisieren. Durch die Verwendung des WebDAV-Protokolls können die RepositoryInformationen auch in einem ganz normalen Browser angezeigt werden. Alternativ kann auch der SVN eigene Server „svnserv“ verwendet werden. Dieser kommuniziert über ein eigenes Protokoll namens „svn“ mit dem Client. Für die Authentifizierung und Autorisierung werden die Dateien svnserve.conf, users und authz im Verzeichnis conf des Repositories angelegt (sie­ he Abbildung 3). In der Datei svnserve.conf wird zunächst festgelegt, welche Berechtigungen ein authentifizierter Benutzer hat (Wert des Parameters auth-access) und welche Rechte ein nicht-authentifizierter Benutzer hat (Wert des Parameters anon-access). Die Werte für die Parameter password-db und auth-db verweisen auf die Dateien, in denen die UserPasswort-Kombinationen (password-db) bzw. die Berechtigungen der User (auth-db) hinterlegt sind. Es können lediglich die Werte r für lesenden und rw für lesenden und schreibenden Zugriff vergeben werden. SASL Abb. 4: Vergleich zweier Source-Dateien in NetBeans. 32 ORDIX News 1/2009 Seit der Version 1.5 unterstützt SVN auch die Verwendung einer SASL-Bibliothek. SASL ist ein Standard, der verschiedene Authentifizie- Open Source rungsmechanismen für unterschiedliche Protokolle zur Verfügung stellt. Der Einsatz von SASL in Verbindung mit Subversion ermöglicht beispielsweise die Verwendung einer Verschlüsselung bei der Authentifizierung oder die Anbindung eines LDAP, ohne dafür einen Apache Webserver installieren und einrichten zu müssen. Sinnvoll ist der Einsatz also vor allem dann, wenn kein Apache installiert werden kann/soll, oder wenn WebDAV-Kommandos nicht akzeptiert werden. Glossar SVN Abkürzung für Subversion. SVN ist eine Open Source Software zur Versionsverwaltung von Dateien und Verzeichnissen. CVS Concurrent Version System. Ein CVS ist ein Open Source Versionskontrollsystem. IDE Integrated Development Environment. Eine IDE ist eine grafische Oberfläche für eine komfortable Softwareentwicklung. Eclipse ist z. B. eine JavaIDE. LDAP Lightweight Directory Access Protocol. LDAP ist ein Protokoll zur Abfrage von Verzeichnisdiensten. LDAP setzt auf den heute als Standard anzusehenden Netzwerkprotokollen TCP/IP auf. SASL Simple Authentication and Security Layer. SASL ist ein Standard, der verschiedene Authentifizierungsmechanismen für unterschiedliche Protokolle zur Verfügung stellt. Verschiedene SVN-Clients Für alle gängigen Betriebssysteme existiert ein Commandline Client, über die SVN-Befehle direkt an den SVN-Server abgeschickt werden können. Mit einem Commandline Client lassen sich zwar sämtliche Funktionen von SVN nutzen, der Komfort eines Kommandozeilen-Tools ist aber in der Regel nicht sehr hoch. Vor allem der Vergleich von verschiedenen Dateiversionen lässt sich in einer Kommandozeile nur sehr spartanisch darstellen. Aus diesem Grunde gibt es eine ganze Reihe von Tools oder grafischen Benutzeroberflächen, die das Arbeiten mit Subversion deutlich erleichtern. Teilweise verwenden diese Tools einen Commandline Client als Grundlage, teilweise beinhalten sie die Funktion auch selbst. Das wahrscheinlich bekannteste Tool für Windows-Umgebungen ist das Programm „Tortoise“. Dieses integriert sich direkt in den Windows Explorer und erlaubt das Arbeiten daraus. Integration in IDEs Zwar lassen sich mit Subversion prinzipiell alle Arten von Dateien verwalten, der Hauptanwendungszweck ist jedoch sicherlich die Softwareentwicklung und die Verwaltung und Versionierung von Quellcode-Dateien. Ein wichtiger Aspekt bei der Auswahl eines Ver­ sionskontrollsystems ist also die Kompatibilität bzw. die Integration in die Entwicklungsumgebung, mit der gearbeitet wird. Für alle gängigen IDEs wie Netbeans, Eclipse, IntelliJ oder Visual Studio existieren Plugins, die den Zugriff auf ein SVN-Repository direkt aus der Entwicklungsumgebung heraus ermöglichen. Die meisten Plugins bieten neben den Grundfunktionen auch weitere Funktionalitäten an, wie zum Beispiel die Überprüfung von im Repository geänderten Dateien WebDAV Web-based Distributed Authoring and Versioning. WebDAV ist ein Standard, der den Zugriff auf ein Dateisystem über das Internet ermöglicht. Links ►► [1] Download des Tortoise Client: http://subversion.tigris.org/ ►► [2] HTML- und PDF-Dokumentationen zu SVN: http://svnbook.red-bean.com/ oder den kompletten Abgleich der lokalen Workingcopy mit dem Repository-Stand. Besonders nützlich ist auch der Vergleich zweier Versionsstände einer Datei. Hier bieten die meisten IDE-Integrationen grafische Übersichten an, in denen geänderte, gelöschte und neu hinzugefügte Dateifragmente farbig unterschiedlich dargestellt werden (siehe Abbildung 4). Dadurch können Unterschiede auf einen Blick erkannt und Änderungen über mehrere Versionen hinweg schnell und einfach nachverfolgt werden. Fazit Subversion überzeugt mit durchdachten Konzepten und einer ausgereiften Umsetzung. Nicht zuletzt sind auch die zahlreichen Tools und grafischen Bedienoberflächen sowie die sehr gute Integration in verschiedene Entwicklungsumgebungen ein Grund dafür, dass sich SVN zum meistgenutzten Versionskontrollsystem entwickelt hat. Subversion lässt kaum Wünsche offen und erleichtert die tägliche Arbeit in großen und kleinen Software-Projekten erheblich. Alexander Zeller ([email protected]). ORDIX News 1/2009 33 Datenbanken Oracle Enterprise Manager Grid Control (Teil VI): Standardisieren Sie Ihre individuelle Überwachung! Dieser Artikel richtet sich an Datenbankadministratoren, die ihre Zielüberwachung mit EM Grid Control optimal anpassen und standardisieren möchten. Mit EM Grid Control lässt sich eine sehr ausführliche Überwachung verschiedener Ziele realisieren. Jedoch führt diese Vielzahl an Überwachungsmöglichkeiten auch häufig zu einer wahren Flut an Alert-Meldungen. Um dieser Herr zu werden, können die Metriken der jeweiligen Ziele individuell angepasst und in eigenen Überwachungsvorlagen gespeichert werden. Wir zeigen Ihnen, wie Sie die Überwachung der Ziele mit EM Grid Control optimal auf Ihr Unternehmen abstimmen und standardisieren können. Allgemeines Auf der Startseite von EM Grid Control gibt der Menüpunkt Alerts einen Überblick über die Alerts der überwachten Ziele. Die überwachten Ziele können u. a. Datenbanken, Server, Listener oder auch Agenten sein. Im Einzelnen werden folgende Kategorien unterschieden: • • • • • • Heruntergefahrene Ziele Kritisch Warnung Fehler Blackout aktiv Unbekannte Verfügbarkeit Metriken Seit Oracle 10g gibt es innerhalb der Datenbank so genannte Metriken. Metriken erheben Statistikdaten von aktuellen oder historischen Daten nach einem voreingestellten oder individuell eingestellten Zeitintervall. Diese Statistikdaten werden im Automatic Workload Repository (AWR) innerhalb der Datenbank gespeichert. In Oracle 11g existieren über 180 Metriken in der Datenbank. Mit EM Grid Control lassen sich die Metriken individuell einstellen. 34 ORDIX News 1/2009 Beispiel: Die Metrik „Tablespace Used“ ermittelt alle 15 Minuten den Füllgrad aller Tablespaces der Datenbank. Diese Metrik generiert ab einem Füllgrad von 85 % eine Warnung und ab 97 % Füllgrad einen kritischen Alert. Auf der Datenbank Homepage vom EM Grid Control können Sie sich unter „Alle Metriken“ einen Überblick über alle vorhandenen Daten­ bankmetriken verschaffen. Benutzerdefinierte Metriken Die vorhandenen Metriken können durch benutzerdefinierte Metriken erweitert werden. Auf der Homepage des jeweiligen Ziels können Sie benutzerdefinierte Metriken erstellen. Je nach Zieltyp können für Server OperatingSystem-Based-Metriken und für Datenbanken SQL-Based-Metriken erstellt werden. Customizing der Metriken Damit Sie in EM Grid Control nicht mit den voreingestellten Standardmetriken mit Alert-Meldungen überflutet werden und den Überblick verlieren, können Sie die Metriken in Ihrem Unternehmen individuell anpassen. Erstellen Sie dazu Standard-Überwachungsvorlagen und kopieren Sie diese in die gewünschten Ziele. Datenbanken Mit einer Überwachungsvorlage in EM Grid Control können Sie voreingestellte Schwellwerte (Vergleichsoperatoren der Metriken) ändern oder fehlerbehebende Maßnahmen in den Metriken erstellen. Das Zeitintervall für jede Metrik kann ebenfalls individuell eingestellt werden. Die erstellte Überwachungsvorlage können Sie auf ein oder mehrere Ziele anwenden. Überwachungsvorlage erstellen Eine Überwachungsvorlage können Sie über den Menüpunkt „Überwachungsvorlagen“ im Setup-Überblick von EM Grid Control erstellen (siehe Abbildung 1). Schritt 1: Wählen Sie ein repräsentatives Ziel aus, z. B. ein Datenbankziel (siehe Abbildung 2) und geben Sie einen Namen für die Überwachungsvorlage an (siehe Abbildung 3). Abb. 1: Schritt 1 - Überwachungsvorlage erstellen. Schritt 2: Bearbeiten Sie nun die Metriken, ändern Sie Schwellwerte, den Ausführungsplan und geben Sie für Metriken gegebenenfalls fehlerbehebende Maßnahmen an (siehe Abbildung 4). Mit einer fehlerbehebenden Maßnahme kann z. B. mit einem Skript als Reaktion auf eine Warnung oder kritischen Alert reagiert werden. Bestätigen Sie die Änderungen und speichern Sie die Überwachungsvorlage (siehe Abbildung 5). Überwachungsvorlage anwenden Abb. 2: Zieleinstellungen kopieren. Die erstellte Überwachungsvorlage kann nun auf die gewünschten Ziele oder Gruppen angewendet werden (siehe Abbildung 6). Sie können mit der Option „Metriken mit mehreren Schwell­werteinstellungen“ entweder a) die vorhandenen Metrikeinstellungen der Ziele vollständig ersetzen oder b) die Metrikeinstellungen der Überwachungs­ vorlage zusätzlich zu den bereits vorhandenen Metriken in die Ziele integrieren. Die geänderten Metrikeinstellungen können Sie nun auf die gewünschten Ziele kopieren. Es werden nur die Metrikeinstellungen auf die Ziele übertragen, die in der Überwachungsvorlage definiert wurden. Alle anderen Metrik­ einstellungen der Ziele bleiben unberührt. Unter „Vergangene Anwendervorgänge“ können Abb. 3: Schritt 2 - Überwachungsvorlage erstellen. ORDIX News 1/2009 35 Datenbanken Sie sich über den Status des Vorgangs informieren. So können Sie schnell und effektiv eine Überwachungsvorlage auf ein oder mehrere Ziele anwenden und somit die Überwachung in Ihrem Unternehmen standardisieren. Wenn Sie die erstellten Überwachungsvorlagen aus EM Grid Control löschen, bleiben die geänderten Metrikeinstellungen auf den Zielen davon unberührt. Alerts versenden Sie können Alert-Meldungen, die durch Metriken generiert werden, z. B. per Mail versenden bzw. an Third-Party-Überwachungstools wie z. B. HP OpenView weiterleiten. Abb. 4: Metrikeinstellungen ändern. Auf der EM Grid Control Homepage können Sie unter „Voreinstellungen“ Regeln definieren und verschiedene Metriken in diese Regel mit aufnehmen. In dieser Regel können Sie als Methode „E-Mail senden“ aktivieren. Somit wird eine E-Mail an die abonnierten Benutzer der Regel versendet. Voraussetzung ist, dass unter „Benachrichtigungsmethoden“ der Mail-Server konfiguriert und für die Benutzer in EM Grid Control unter „Voreinstellungen – Allgemein“ eine gültige E-Mail-Adresse eingetragen wurde. Mit jeder Regel können Sie mit einer vorher definierten Methode auch Alert-Meldungen an Third-­Party-Produkte senden und Skripte auf dem Oracle Management Server (OMS) ausführen. Löschen von Alerts Abb. 5: Überwachungsvorlage erfolgreich erstellt. Glossar Blackout Mit Blackouts können Ziele aus dem EM Grid Control für einen definierten Zeitraum herausgenommen werden. WAR Automatic Workload Repository. Das AWR besteht aus Tabellen im Schema SYS, in denen laufend Performance-Informationen zur Datenbank und dessen Server zentral gespeichert werden. Diese Funktionalität steht ab Oracle 10g EE zur Verfügung. OMS Oracle Management Server. Software von Oracle zur zentralen Administration mehrerer Oracle Datenbanken. 36 ORDIX News 1/2009 In EM Grid Control werden die Alert-Meldungen automatisiert gelöscht, sobald die Schwellwerte der Metriken wieder unterschritten werden und die Probleme behoben sind. Auf der EM Grid Control Homepage unter Diagnostic Summary werden alle Alerts aufgelistet. Von dort gelangt man zu den einzelnen Alert-Meldungen. Jede Alert-Meldung kann so manuell gelöscht werden. Werden historische Alert-Meldungen auf der EM Grid Control Homepage unter Alerts nicht automatisiert gelöscht, empfiehlt sich folgende Vorgehensweise zur Löschung dieser Alert-Meldungen: Synchronisieren Sie mit <AGENT_HOME>/bin/emctl clearstate agent die Alert-Meldungen zwischen Daten­ bank und Agent. Ein weiteres Problem kann Datenbanken durch eine Inkonsistenz zwischen Alert Log Errors und Alert History auftreten. Oracle empfiehlt hier, Patchset 10.2.0.3 – Patch 3731593 und 5019532 einzuspielen [1] oder direkt auf 10.2.0.4 zu patchen. Fazit In großen Datenbank-Umgebungen werden viele Alert-Meldungen aus den voreingestellten Metriken generiert. Mit dem EM Grid Control können Sie diese voreingestellten Standardmetriken effektiv an Ihre Bedürfnisse anpassen. Mit diesem Überblick sind Sie nun in der Lage, die Überwachung von Oracle Datenbanken in Ihrem Unternehmen durch die Erstellung von Überwachungsvorlagen zu standardisieren. Abb. 6: Überwachungsvorlage anwenden: Ziele auswählen. Links ►► [1] Oracle Doku aus Metalink (Zugriff nur für registrierte User): https://metalink.oracle.com/ Metalink Note 431297.1 ►► [2] Seminarempfehlung „Oracle Grid Control“: http://training.ordix.de/seminar.php?nr=552 ►► [3] Oracle Enterprise Manager Advanced Configuration Guide: http://download.oracle.com/docs/cd/B16240_01/doc/nav/portal_booklist.htm Michael Skowasch ([email protected]). Seminarempfehlung: Oracle Grid Control ►► Informationen/Online-Anmeldung: http://training.ordix.de/seminar.php?nr=552 In diesem sehr übungsintensiven Workshop lernen Sie, mit Oracle Grid Control zu arbeiten und umzugehen. Sie erhalten einen Überblick über die Oberfläche und die Installation der Agenten. Nach dem Seminar sind Sie in der Lage, Oracle Datenbanken über die GUI-Oberfläche zu verwalten und zu administrieren. Seminarinhalte • • • • • • • • • • • Überblick über die Oberfläche Installation Grid Control Migration von OMS zu Grid Installation der Agenten unter Oracle 8i, 9i, 10g Administration Alerts Metriken Jobs Advisor Framework ADDM Vertiefung der Theorie durch praktische Übungen und Beispiele Termine 06.04.- 08.04.2009 in Wiesbaden 06.07.- 08.07.2009 in Wiesbaden 14.09.- 16.09.2009 in Wiesbaden 16.11. - 18.11.2009 in Wiesbaden Seminar-ID: DB-ORA-35 Dauer: 3 Tage Preis pro Teilnehmer: 1.290,00 € (zzgl. MwSt.) Frühbucherpreis: 1.161,00 € (zzgl. MwSt.) Wir führen unsere Seminare auch jederzeit an einem geeigneten Ort Ihrer Wahl durch und bringen, wenn nötig, auch das entsprechende Equipment mit. Informieren Sie sich am besten im Internet über unsere Inhouse-Seminare und die mobilen Schulungen: http://training.ordix.de. ORDIX News 1/2009 37 Betriebssysteme NIM, ein Tool zur Installation von Software, birgt einen unerwarteten Schatz: Backup und Recovery mit NIM Dieser Artikel richtet sich an Systemadministratoren, die sich mit einer flexiblen und kostengünstigen Lösung im Bereich System-Backup bei AIX beschäftigen Ein häufig unterschätztes Werkzeug, das im Umfeld von IBM AIX-Servern zum Backup eingesetzt werden kann, ist das Network Installation Management (NIM) NIM ist ein Server-Client-basiertes Tool Es dient der Installation von Software-Quellen auf AIXSystemen. Diese Quellen können zum einen aus den bekannten AIX-Software-Paketen gebildet werden und Updates, wie Technologie-Level und Service Packs, beinhalten Zum anderen können die Quellen aber auch aus System-Backups (mksysb) oder vollständigen, installierbaren LPP-Sourcen bestehen. Mit ihnen ist es möglich, ein System komplett neu aufzubauen oder wiederherzustellen Die NIM-Architektur NIM-Operationen können zentral vom Master aus angestoßen (Push-Modus mit dem Befehl nim) oder vom einzelnen Client aus angefordert werden (Pull-Modus mit dem Befehl nimclient). Der Benutzer root des ClientSystems kann somit auch ohne administrativen Zugriff auf den NIM-Master Software-Installationen auf dem eigenen System auslösen. Die NIM-Landschaft besteht mindestens aus einem Master und einem Client. Die NIM-Umgebung definiert sich über das Netzwerk, in 38 ORDIX News 1/2009 dem sich die verwalteten Maschinen befinden. Ein physisches Netzwerk kann allerdings von mehreren NIM-Umgebungen verwendet werden, ebenso wie ein NIM-Master mehrere Netzwerke bedienen kann, sofern eine Route zu ihnen existiert. Eine spezifische Maschine ist jedoch immer nur Mitglied einer NIM-Umgebung. NIM-Klassen Die einzelnen Bestandteile von NIM werden innerhalb einer objektorientierten Technolo- Betriebssysteme gie verwaltet und wie viele andere Konfigurationsdaten von AIX in der ODM abgelegt. Die NIM-Objekte unterteilen sich in vier Klassen: • • • • Maschinen Netzwerke Ressourcen Gruppen In der Klasse der Maschinen sind die Objekte Master und Standalone interessant. Während das Objekt Master selbsterklärend ist, repräsentiert Standalone die Objekte der NIM-Clients als Rechner, die über eigene Speichersysteme verfügen und ein Betriebssystem hochfahren können. Das einzelne Objekt dieser Klasse ist der NIMClient mit seinen Eigenschaften wie Hostname, Typ, Kommunikationsweg, CPUID und verschiedenen Zustandsdaten. In der Klasse der Netzwerke werden diese nach ihrer physischen Ausprägung als Ethernet, Token Ring oder anderen unterschieden. Als Eigenschaften dieses Objektes gelten die Netz­ adresse, die Netzmaske und Gateways in das betreffende Netz. In der Klasse der Gruppen können Maschinen oder Ressourcen zusammengefasst werden. NIM-Ressourcen Die wichtigste Klasse ist die der Ressourcen, da sie die Gesamtheit der installierbaren Software, Hilfsmittel und Steuerungsskripte enthält. Ein zentrales Objekt ist das der LPP-Sourcen. Eine LPP-Source ist ein Depot von AIXFilesets, z. B. den Installations-Filesets im backup file format (bff), die beispielsweise aus dem Inhalt einer AIX-Installations-DVD gebildet werden können. Natürlich kann Software weggelassen (Sprachunterstützungen etc.) oder hinzugefügt (weitere Treiber) werden. Diese Software kann ein System komplett installieren und besitzt somit das simages-Flag. Mit den zur Aktualisierung des Betriebssys­ temstands bei IBM herunterladbaren Technologie-Leveln und Service Packs werden zwar auch LPP-Sourcen gebildet, sie besitzen jedoch nicht das simages-Flag. Insofern ist es mit ihnen nicht möglich, ein System neu aufzusetzen. Besitzt eine LPP-Source das simages-Flag, wird aus ihr eine nächste Ressourcenart, der SPOT, gebildet. Dieser „shared object product nim –o define –t mksysb –a server=master –a location=/export/ images/mksysb_testclient –a source=testclient -a mk_image=yes mksysb_testclient Abb. 1: Definition einer mksysb-Ressource auf dem NIM-Server. ... CONSOLE = /dev/lft0 INSTALL_METHOD = overwrite PROMPT = no BOSINST_LANG = en_US CULTURAL_CONVENTION = en_US MESSAGES = en_US KEYBOARD = en_US HDISKNAME = hdisk0 ... Abb. 2: Minimalausstattung für eine nicht-interaktive Software-Installation. tree“ ist vereinfacht ausgedrückt ein /usrDateisystem. Bei der Betriebsysteminstalla­ tion wird es per NFS bereitgestellt und auf dem Client eingehängt. Daraus bedient er sich der benötigten Programme, Treiber, Libraries und Skripte. Bei der Bildung eines SPOT werden die bff-Dateien aus der LPP-Source in das /usr-Verzeichnis des SPOT installiert. Der SPOT hat dadurch die Eigenschaft, dass er einem Betriebssystemstand entspricht. Dieser kann aber jederzeit durch Einspielen von Technologie-Leveln und Service Packs aktualisiert werden. Wird ein System gemeinsam mit SPOT und LPP-Source neu installiert, muss der SPOT eine mindestens ebenso hohe Version aufweisen, wie die dazugehörigen LPP-Sourcen. Allgemeiner gilt auch, dass der Software-Stand des Betriebsystems des NIM-Masters höher oder gleich der von ihm verwalteten Ressourcen sein muss. Das mksysb als Backup-Medium Um nun der Funktion eines Backup-Servers näher zu kommen, gibt es die Ressource mksysb. In ihr sind die rootvg-Backups einzelner Clients zusammengefasst, die mit dem Befehl mksysb angelegt wurden. Da es sich um mksysb auf einem nicht startbaren Medium handelt, besitzen sie kein Boot Image. Als ersten Schritt in einem Backup-Konzept gilt es nun, regelmäßig ein mksysb eines ORDIX News 1/2009 39 Betriebssysteme NIM-Clients zu erstellen und auf dem NIMServer zu speichern. Dies kann natürlich vom NIM-Master aus gesteuert geschehen, z. B. per NFS. In einem Kundenprojekt wurde hierzu der nicht-berechtigte Benutzer nimadm auf den Master und alle Clients verteilt. Dieser ruft über sudo das Backup-Skript auf, in dem das Backup-Verzeichnis des NIM-Master per NFS eingehängt wird, ein neues mksysb geschrieben und bei Erfolg das alte gelöscht wird. Eine entsprechende Protokollierung und Benachrichtigung beendet das Skript. Die mksysb-Datei ist jetzt aber noch kein NIM-Objekt. Um zu vermeiden, aus jeder Datei ein neues Objekt anzulegen, wird an dieser Stelle mit symbolischen Links gearbeitet. Der Link wird als Ressource definiert und verweist auf die jeweils zu verwendende mksysb-Datei. Eine mksysb-Ressource kann auch direkt auf dem NIM-Server definiert werden (siehe Abbildung 1). Smitty ausdrücklich erlaubt Eine mksysb-Datei mit dem Namen mksysb_ testclient würde damit unter dem Verzeichnis /export/images vom Client testclient gezogen und unter dem Namen mksysb_testclient als Ressource definiert werden. Hier wird ein Grundmuster von NIM deutlich, Objekte unter einem Namen (und nie direkt) anzusprechen. Aufgrund der allgemein sehr langen Kommandos kann auch der Smitty benutzt werden. Mit smitty nim Perform NIM administration Tasks Manage Resources Define a resource: „mksysb“ (smitty fast /export/aix53/lppsource /export/aix53/spot /export/images /tftpboot für die Software-Quellen für den Spot für die Backups für die Boot Images Abb. 3: Speicherorte bei AIX 5.3. nim –o bos_inst -t mksysb –a source=master -a spot=Spotname -a lppsource=Lppsourcename -a mksysb=mksysbname -a bosinst_data=bosinst_dataname -a accept_licenses=yes -a no_nim_client=no –a set_bootlist=no Clientname Abb. 4: Die vorhandenen Ressourcen werden allokiert. 40 ORDIX News 1/2009 path: smitty nim_mkres mksysb) wird die Eingabemaske für die Parameter erreicht. bosinst_data ist eine weitere NIM-Ressource. Sie ist eine Konfigurationsdatei, die bei der Installation des Basisbetriebssystems benutzt werden kann. Ein Template für diese Datei ist auf jedem Server vorhanden. Die Minimalausstattung für eine nichtinteraktive Ins­ tallation von Software zeigt Abbildung 2. Die hier verwendeten Steueranweisungen besagen: löse eine Neuinstallation aus (überschreibe), frage nicht nach (kein Prompt) und installiere die Software auf hdisk0. Natürlich gibt es noch weitere NIM-Ressourcen, die aber nicht notwendig für das weitere Verständnis sind. Vorraussetzungen auf dem NIM-Master Zum Aufbau des NIM-Masters wird das Paket bos.sysmgt.nim.master auf dem ausgesuchten System installiert. Die Vorraussetzungen sind genügend Speicherplatz und eine gute Netzwerkanbindung. Die SoftwareQuellen benötigen pro unterstützter AIX-Version in der Regel zwar nicht mehr als 12 GB. Sollen aber die Backups der Clients gesichert werden, so ist pro Client mit weiteren 5 GB zu rechnen. Für die Speicherorte (hier für das Beispiel AIX 5.3) sind eigene, logische Datenträger anzulegen (siehe Abbildung 3). Für jede Plattform gibt es eigene Boot Images, die im Schnitt 10 – 12 MB groß sind. Da sie ansonsten in „/“ aufbewahrt würden, gibt es für sie einen eigenen logischen Datenträger. Sind die Laufwerke eingerichtet, kann der NIM-Server mit nimconfig initialisiert und erste Software-Quellen als NIM-Objekte eingerichtet werden. Aufgrund des singulären Charakters kann dies auch über den Smitty geschehen (smitty nimconfig oder auch smitty nim_mkres_inst). Hier müssen die AIX-Installationsmedien griffbereit liegen. Ist der Master mit LPP-Source und SPOT ausgestattet, wird noch die Definition eines Netzwerks (smitty nim_mknet) und der Clients (smitty nim_mkmac) benötigt. Anhand der Definitionen des Clients wird später entschieden, welcher Kernel beim Hochfahren über das Netzwerk Verwendung findet. Vorraussetzungen auf den NIM-Clients Um vom NIM-Master eine Operation auf dem Client auslösen zu können, muss die- Betriebssysteme ser in die Umgebung integriert und das Paket bos.sysmgt.nim.client installiert sein. Das Client-Paket muss in der Version gleich oder niedriger als das Master-Paket sein. Mit niminit –a name=Clientname –a master=Mastername –a platform=chrp -a pif_name =en0 –a connect=nimsh (oder smitty niminit) wird der Client in der Datei /etc/niminfo konfiguriert und beim Master angemeldet. Dieser Schritt entfällt, wenn der Server über NIM komplett neu installiert wird. Ab diesem Zeitpunkt sind Push- oder PullOperationen möglich. Die Kommunikation läuft hierbei über den NIM-Service Handler (nimsh), der eine „leichte“ Verschlüsselung und Authentifizierung über System-IDs bietet. Ansonsten bleiben als Alternativen, entweder das unsichere Protokoll rsh zu benutzen oder nimsh in Kerberos einzubinden. Ablauf einer Rücksicherung Alle Zutaten zu einer Rücksicherung sind nun vorhanden: ein NIM-Master mit den bereitliegenden Backups, Ressourcen und Definitionen. Was muss im Fall einer Rücksicherung getan werden? Wir setzen voraus, dass das System nicht mehr starttbar ist, die Platten aus der rootvg defekt waren und ausgetauscht wurden. Zuerst gilt es, die vorhandenen Ressourcen dem Client zur Verfügung zu stellen (zu „allokieren“). Den recht komplexen Befehl hierfür zeigt Abbildung 4. Mit smitty nim_bosinst:"mksysb" wird innerhalb des Managementwerkzeugs die Eingabemaske für alle Parameter erreicht. Damit werden die Ressourcen zur Benutzung durch den Client freigeschaltet und die entsprechenden NFS-Freigaben eingerichtet. Im Verzeichnis /tftpboot wird der entsprechende Boot Kernel bereitgelegt und der bootp-Daemon so konfiguriert, dass er den Kernel bei Anfrage durch den Client über das tftp-Protokoll überträgt. Der Client muss jetzt nur noch diesen Request aussenden. Im Fall einer laufenden Maschine würde einfach die Boot-Liste mit dem Befehl bootlist zum Hochfahren über Netzwerk konfiguriert und ein Reboot ausgeführt. Das System ist aber nach dem Ausfall nicht erreichbar. Wir benötigen einen Zugang zur Systemkonsole. Das Client-System wird in das SMS-Menü gebootet. Im RIPL-Menü werden, falls nicht schon vorhanden, die Netzwerkparameter, die eigene IP-Adresse, die NIM-Master-IP, die NIM bietet folgende Vorteile: ►► ►► ►► ►► ►► ►► Software und Verwaltung werden zentral auf einem Server gehalten. Es sind mehrere Installationen zur selben Zeit möglich. Eine Installation kann zeitlich gesteuert werden. Eine Installation kann nicht-interaktiv und automatisiert erfolgen. Eine Vorortanwesenheit (CD-Wechseln) ist nicht erforderlich. Die Installation ist üblicherweise schneller als über CD oder Band. Netzwerkmaske und das Gateway eingetragen. Im SMS werden unter Punkt 5 das Boot Device und das Netzwerk ausgewählt. Der NIM-Client schickt anschließend einen Boot Request zum NIM-Master, der mit Rücksendung eines Kernels beantwortet wird. Der Kernel startet und hängt über NFS den SPOT nach /usr. Die Prozesse zur Neueinrichtung der rootvg und das Zurückspielen des Backup beginnen. Nach dem abschließen­den Reboot steht der Client wieder zur Verfügung. Diese Prozedur kann nicht nur zur Rücksicherung von NIM-Clients benutzt werden, sondern auch zum Klonen. Eine aufwändige Konfiguration des Clients wird hier vereinfacht. Weitere Möglichkeiten des Backups Eine weitere, sehr bequeme Backup-Methode stellt der Befehl alt_disk_install (seit AIX 5.3 alt_disk_copy) dar, der im Paket bos.alt_disk_install.rte enthalten ist. Hierzu wird die doppelte Anzahl der vorhandenen Boot-Platten benötigt. Liegt die rootvg auf hdisk0 und hdisk1 und hat die freien Platten hdisk2 und hdisk3 zur Verfügung, lässt sich die rootvg mit dem Befehl alt_disk_install –C –B -n hdisk2 hdisk3 online auf diese Platten klonen. Die Option –C erstellt den Klon, -B verhindert die automatische Umsetzung der Boot-Liste und –n belässt das „neue“ System als NIMClient. Während des Kopiervorgangs ist diese Datenträgergruppe namens altinst_rootvg mit ihren Dateisystemen online, wird danach aber geschlossen. Der Befehl bootlist –m normal hdisk2 hdisk3 und ein anschließender Reboot können diese Platten als rootvg aktivieren. Die alte rootvg steht dann noch unter dem Namen old_rootvg (offline) zur Verfügung, kann allerdings auch wieder aktiviert werden. Ein Backup-Konzept ORDIX News 1/2009 41 Betriebssysteme auf diese Weise umschließt demnach eine regelmäßige Löschung der altinst_rootvg (alt_disk_install –X) mit anschließen­ der Neuerstellung auf nächtlicher oder wöchentlicher Basis. Der Vorteil ist, dass das Betriebsystem nach dem Reboot sofort zur Verfügung steht und nicht zeitaufwändig restauriert werden muss. Vereinfachung von Betriebssystem­ migrationen und -updates Eine Verbindung der Technologien von NIM und alt_inst_install bietet der Befehl nimadm (NIM Alternate Disk Manager). Während alt_disk_install dafür sorgt, dass die Daten von der rootvg auf die altinst_ rootvg transferiert werden, kann NIM gleichGlossar zeitig die Software aktualisieren, d. h. ein Update oder eine Migration durchführen. Das System bleibt dabei online. Die aktualisierte altinst_rootvg kann dann zu einem späteren Zeitpunkt hochgefahren werden. Das Altsystem steht danach noch als Fallback zur Verfügung. Die Downtime wird so auf die Reboot-Dauer minimiert. Das sind bei den Partitionen auf POWER5/6-Systemen nur noch wenige Minuten. Im Falle einer gespiegelten rootvg ist dabei nicht das Vorhandensein von 4 Platten notwendig. Da IBM noch immer keine Migrationen von gespiegelten rootvgs unterstützt, kann der Spiegel aufgebrochen und die freiwerdende Platte als altinst_rootvg benutzt werden. Voraussetzung für den Aufbau einer alternativen rootvg ist jedoch, dass der Client in eine funktionsfähige NIM-Umgebung eingebunden ist. NIM Network Installation Manager. NIM ist ein in AIX enthaltenes Softwaretool. Fazit smitty ASCII-basiertes, menü-gesteuertes Verwaltungswerkzeug für AIX. smitty fast path Smitty-Untermenüs können durch Angabe des Fast Path direkt erreicht werden. rootvg Die Datenträgergruppe mit den AIX-Systemdateien. LPP Source Licensed Program Products, installierbare Programmpakete. RIPL-Menü Remote Initial Program Load, ein Teil des System Management Service (SMS). SMS System Management Service, Boot-Konfigurationsmenü, kurzzeitig während des Boot-Vorgangs über die Konsole erreichbar. ODM Object Data Manager. Das ist die binäre Konfigurationsverwaltung von AIX. IBM AIX bietet seit vielen Jahren innerhalb seines Standardinstallationsumfangs ohne Extrakosten einige Schätze in punkto System­ installation, -backup und -recovery, die noch nicht überall „geborgen“ wurden. Zwar erhöht sich durch die Einführung von NIM der Verwaltungsaufwand, jedoch bringt die erhöhte Flexibilität und die Fähigkeit der Automation von Prozessen eine Erhöhung der Effizienz in der Installation schon ab wenigen angeschlossenen Client-Systemen. Dr. Uwe Bechthold ([email protected]). Seminarempfehlung: AIX Systemadministration Grundlagen ►► Informationen/Online-Anmeldung: http://training.ordix.de/seminar.php?nr=557 In diesem Seminar lernen Sie das System Management und die Systemadministration eines AIX-Betriebssystems kennen. Von der Betriebssysteminstallation über die Benutzer- und Festplattenverwaltung bis hin zur Datensicherung werden Grundlagen der Administration eines AIX-Systems erarbeitet. Sie sind nach dem Seminar in der Lage, ein AIX-System aufzusetzen und beherrschen die grundlegenden Systemadministrations­ tätigkeiten. Termine 25.05.- 29.05.2009 in Wiesbaden 24.08.- 28.08.2009 in Wiesbaden 02.11. - 06.11.2009 in Wiesbaden Seminar-ID: BS-12 Dauer: 5 Tage Preis pro Teilnehmer: 1.990,00 € (zzgl. MwSt.) Frühbucherpreis: 1.791,00 € (zzgl. MwSt.) Wir führen unsere Seminare auch jederzeit an einem geeigneten Ort Ihrer Wahl durch und bringen, wenn nötig, auch das entsprechende Equipment mit. Informieren Sie sich am besten im Internet über unsere Inhouse-Seminare und die mobilen Schulungen: http://training.ordix.de. 42 ORDIX News 1/2009 Java/JEE Eclipse-Kurzreferenz Navigation im Editor Öffnen, Speichern, Schließen Alt + bzw. Alt + Navigation in der History zum letzten/nächsten Registerblatt Strg + S Speichern Strg + Shift + S Alles speichern Cursor springt zur zugehörigen Klammer Strg + Shift + R Öffnen einer Ressource Strg + Shift + T Öffnen einer Klasse Strg + Shift + F4 Schließen aller Tabs Strg + F4 Schließen des aktuellen Tabs Strg + Shift + P Strg + Shift + Up bzw. Cursor springt zwischen MethoStrg + Shift + Down den und Membern Strg + L n Cursor springt zur Zeile n Strg + , bzw. Strg + . Cursor springt zum vorherigen bzw. nächsten Fehler Strg + E Editor-Tab wechseln über Auswahlbox Strg + M Maximieren/Minimieren des aktuellen Editor-Tabs F3 Zur Deklaration einer Methode oder eines Objektes springen F4 Zur „Hierarchy“ einer Methode oder eines Objektes springen Strg + Alt + H Anzeige aller Methoden, die die aktuelle Methode aufrufen (call hierarchy) Strg + T Anzeige der Klassen bzw. Methoden, die ein Objekt defi­nieren bzw. implementieren Manipulation von Quellcode im Editor Strg + Space Content Assist für den aktuellen Befehl aktivieren Alt + Shift + M Extract Method: Markierten Bereich einer Methode in eine neue Methode extrahieren Alt + Shift + R Refactoring des aktuell ausgewählten Elements Strg + 7 Auswahl ein- bzw. auskommentieren Strg + Shift + M Fehlende Imports ergänzen (Add Imports) Strg + Shift + O Fehlende Imports ergänzen und überflüssige Imports löschen (Organize Imports) Alt + Shift + J Javadoc-Kommentar vor Klassen/Methoden einfügen Einfügen, Löschen, Verschieben, Suchen Run und Debug Alt + bzw. Alt + Verschieben der markierten Zeilen im Dokument Strg + F11 Ausführen (run) eines aktiven Editor-Tabs bzw. einer ausgewählten Ressource Strg + Alt + bzw. Strg + Alt + Aktuelle bzw. markierte Zeilen nach oben/unten duplizieren F11 Debugging eines aktiven Editor-Tabs bzw. einer ausgewählten Ressource Strg + C Markierten Inhalt kopieren F5 Gehe in die Methode (während des Debugging) Strg + V Markierten Inhalt einfügen F6 Strg + X Markierten Inhalt ausschneiden Die aktuelle Methode überspringen (während des Debugging) Strg + D Aktuelle bzw. markierte Zeilen löschen F7 Gehe einen Schritt zurück (während des Debugging) Strg + F2 Abbrechen (Terminate) des Debugging Strg + Entf Nachfolgendes Wort löschen Strg + Backspace Vorheriges Wort löschen Strg + Shift + Entf Den Rest der Zeile ab der aktuellen Position löschen Strg + F Suchen und Ersetzen (im Editor) Strg + K Suche nächsten Treffer mit markiertem Text (im Editor) Strg + Shift + K Suche vorherigen Treffer mit markiertem Text (im Editor) Xms Strg + H Search-Dialog zum Durchsuchen von Dateien, Projekten etc. öffnen Initiale Arbeitsspeicherzuteilung für die Anwendung (Standard 64 MB) Xmx Strg + Shift + G Suche Referenzen auf markiertes Objekt im Workspace Maximale Arbeitsspeicherzuteilung für die Anwendung (bei Eclipse standardmäßig 256 MB) XX:PermSize Arbeitsspeicher für den Classloader (Standard 64 MB), Erhöhung, wenn die Anwendung einen „permanent generation memory error“ meldet OutOfMemoryErrors Aufrufparameter für die Anpassung der Speicherzuteilung einer Java-Anwendung Beispiel: eclipse.exe -vmargs –Xms512m -Xmx512m -XX:PermSize=128m ORDIX News 1/2009 43 Open Source Tipps und Tricks aus der Unix-Welt Mit “screen” zur Schirmherrschaft Dieser Artikel richtet sich an Unix-Systemadministratoren, die die Arbeit mit der Shell effektiver gestalten möchten. Wer Zeuge oder Teilnehmer eines Telefongesprächs zwischen zwei Systemadministratoren ist, die gleichzeitig auf einem Unix-System eingeloggt sind, der fühlt sich nicht selten in die längst vergangen geglaubte Zeit der Akustikkoppler zurückversetzt. Befehle und Terminalausgaben werden mit beeindruckend kleiner Baudrate und einer erstaunlich hohen Zahl an Übertragungsfehlern hin- und hergesendet und der DuplexModus führt im schlimmsten Fall zum Verbindungsabbruch. In diesem Artikel stellen wir Ihnen die freie Software „screen“ vor, welche uns neben vielen weiteren sehr nützlichen Funktionalitäten die Möglichkeit gibt, diese Telefonate deutlich effektiver zu gestalten. Was ist „screen“? Mehrere Sitzungen in einem Fenster Das Programm screen ist ein Terminal-Multiplexer, der es dem Anwender ermöglicht, in einer Terminal-Sitzung (z. B. „putty“-Fenster) eine oder mehrere virtuelle Terminal-Sitzungen zu starten. Diese virtuellen Sitzungen können anschließend u. a. mit beliebigen weiteren Benutzern parallel genutzt werden. Um eine virtuelle Sitzung zu starten ruft der Anwender lediglich das Kommando screen auf. Nun befindet er sich in einem ersten virtuellen Terminal. Jedes dieser Terminals erhält eine Nummer beginnend mit 0 und optional einen sprechenderen Namen. Zusätzlich lassen sich die Sitzungen auch jederzeit unterbrechen und zu einem späteren Zeitpunkt wieder aufnehmen. Aber dazu später mehr. Beim screen handelt es sich um GNU-Software der Free Software Foundation. Das Tool kann kostenlos genutzt werden. Auf LinuxSys­temen ist es häufig bereits standardmäßig installiert. Auf allen anderen Unix-Derivaten kann es problemlos nachinstalliert werden. 44 ORDIX News 1/2009 Screen-Kommandos lassen sich innerhalb einer solchen Sitzung mit der Tastenkombination STRG-a aufrufen (im weiteren Verlauf mit C-a gekennzeichnet). Mit C-a c (d. h. STRG-a und dann c drücken) lassen sich nun beliebig viele weitere Terminals erstellen. Mit C-a n lässt sich anschließend zwischen den Terminals hin- und herschalten. Zur besseren Übersicht lassen sich die verschiedenen Terminals mit der Kombination C-a A auch mit einem sprechenden Namen versehen. Open Source Sitzungen unterbrechen und fortsetzen C-a C-a C-a C-a C-a C-a C-a C-a C-a Der vielleicht größte Nutzen des screen wird jedoch deutlich, wenn der Benutzer bewusst oder unabsichtlich das Terminalfenster schließt oder die Netzwerkverbindung zum Server abbricht. Normalerweise wird die Sitzung in einem solchen Fall abgebrochen und alle noch von ihr gestarteten Programme sind beendet. Dies ist z. B. bei einem noch nicht beendeten Kopiervorgang oder einer nicht gespeicherten Editiersitzung mit dem vi sehr ärgerlich. Ein screen-Terminal hingegen bleibt solange aktiv, bis es explizit geschlossen wird. Um eine alte screen-Sitzung nach abgebrochener Ver­bindung und erneutem Login wieder aufzunehmen, reicht das Kommando screen –r. Das Terminal befindet sich nun wieder im gleichen Zustand wie zum Zeitpunkt vor dem Verbindungsabbruch. Eventuell vorher gestartete Programme sind zwischenzeitlich weitergelaufen bzw. weiterhin aktiv. Mit der Kombination C-a d ist es zudem auch möglich, eine screen-Sitzung bewusst zu verlassen, um sie später wieder aufzunehmen. Der Aufruf screen –ls listet die derzeit existierenden screen-Sitzungen eines Benutzers auf. Mit der Kombination C-a x ist es möglich, eine aktuell laufende screen-Sitzung zu sperren, so dass sie nur mit Passworteingabe wieder aufgenommen werden kann. Mehrbenutzermodus Eine weitere Stärke des screen ist der Mehrbenutzermodus. Arbeiten zwei Benutzer unter der gleichen Kennung auf dem System (z. B. root), so kann sich einer der Benutzer mittels screen –x zu einer laufenden screen-Sitzung hinzuschalten. Die Administratoren sind anschließend in der Lage, parallel an dieser Sitzung zu arbeiten. Normalerweise wird dies hauptsächlich dazu genutzt, um einem anderen Administrator sein eigenes Terminal zu zeigen – er kann jedoch auch jederzeit selbst Kommandos eingeben. Es ist natürlich auch möglich, einem anderen Unix-Benutzer Zugriff auf die eigene screenSitzung zu erlauben. Zu diesem Zweck wird mittels C-a : in den Kommando-Modus gewechselt (ähnlich dem Last-Line-Modus des vi) und mit folgenden Kommandos der Zugang z. B. für den Benutzer user01 freigeschaltet: multiuser on acladd user01 Der Benutzer user01 kann sich nun mit dem Kommando screen –c root/ zur screen- c k n p " d r x H Neues Terminal erzeugen (create) Terminal schließen (kill) Zum nächsten Terminal wechseln (next) Zum vorherigen Terminal wechseln (previous) Liste der Terminals zur Auswahl anzeigen Terminal verlassen, ohne es zu beenden (detach) Sitzung wieder aufnehmen (recover) Sitzung sperren Logging starten/stoppen Abb. 1: Wichtige Tastenkürzel des screen. Link ►► [1] Screen-Projekthomepage: http://www.gnu.org/software/screen/ Sitzung des Benutzers root verbinden. Für diese Funktionalität muss jedoch das s-Bit für screen gesetzt sein, was nicht immer standardmäßig der Fall ist. Screen konfigurieren screen beinhaltet eine Reihe von Konfigurationsparametern, die wahlweise im laufenden Betrieb im Last-Line-Modus mit C-a : interaktiv eingegeben oder in der Konfigurationsdatei $HOME/.screenrc eingetragen werden können. Die Manpage screen(1) zeigt eine beeindruckend lange Liste aller Parameter und deren Auswirkungen. Weitere Funktionalitäten Nun haben wir zwar die wichtigsten, aber bei weitem nicht alle Features des screen vorgestellt. Weitere Funktionen sind u. a.: • • • • Logging von Terminal-Output mit C-a H (analog script) Terminalausgabenüberwachung mit C-a M Interaktive Programme analog nohup starten Geteilte Terminalfenster (zwei Terminals in einem Fenster anzeigen) Fazit screen ist ein sehr nützliches Werkzeug, das dem Unix-Anwender, der häufig auf der Shell arbeitet, das Leben an sehr vielen Stellen erheblich erleichtern kann. Probieren Sie es aus! Christof Amelunxen ([email protected]). ORDIX News 1/2009 45 Aktuell Rückblick DOAG Konferenz und Schulungstag 2008 Das ORDIX Six-Pack überzeugt Seit 20 Jahren ist die Deutsche Oracle Anwenderkonferenz die Know-how-Plattform der deutschsprachigen Oracle Community. Mit neuem Namen und neuem Konzept startete die „DOAG Konferenz + Ausstellung 2008“ im Dezember in Nürnberg nun erstmalig 3-tägig durch. Auch ORDIX schickte wieder einige Oracle-Spezialisten ins Rennen. einfach. gut. informiert. einfach. gut. geschult. ORDIX stellte in 5 hochkarätigen Vorträgen und auf der begleitenden DOAG Ausstellung seine Leistungen im Oracle-Umfeld vor. Direkt im Anschluss an die Konferenz bot die DOAG am 4. Dezember 2008 den DOAG Schulungstag an. In diesem Rahmen präsentierte Andreas Kother das Seminar „Hochverfügbarkeit mit Physical Data Guard“ als Kompaktkurs. In diesem Tagesseminar ging es um die Hochverfügbarkeit von Daten. Diese wird heute zunehmend wichtiger, während die Forderung nach 7x24 Stunden Verfügbarkeit steigt. Seit der Version 7.3 bietet Oracle die physikalische Standby-Datenbank an, die mit Oracle 9 zu Data Guard weiterentwickelt wurde. • • • • • Compression - Anwendungsmöglichkeiten und Praxiseinsatz Referent: Klaus Reimers SQL Performance auf RAC - Piraten des Interconnects Referent: Martin Hoermann Oracle Audit Vault - das zentrale Data Warehouse für Audit Daten Referent: Kathleen Hock PL/SQL Web-Services mit Oracle 11g Referent: Markus Fiegler Der RAC „Overhead“ - Möglichkeiten und Grenzen Referent: Guido Saxler Dabei fand der Vortrag „PL/SQL Werbservices mit Oracle 11g“ so großen Anklang, dass die Besucher sogar im Stehen zuhörten und Fiegler seinen Vortrag ein zweites Mal präsentieren durfte. 46 ORDIX News 1/2009 einfach. gut. kommuniziert. Neben den Möglichkeiten, sich per Vortragsoder Schulungstagsteilnahme über die neuesten Oracle Features zu informieren, bot auch das Rahmenprogramm die Chance auf kommunikatives Fachsimpeln. Am DOAG Gala Abend sorgten eine Jazz- und eine Rockband für eine angenehme Atmosphäre, um neue Kontakte zu knüpfen und die Oracle Themen weiter zu diskutieren. Aktuell Weitere Informationen und Vortragsunterlagen Bandbreite an Oracle Seminaren im ORDIX Trainingsshop unter http://training.ordix.de. Wer sich für weiterführende Inhalte zu den Vortrags- oder den Schulungsthemen interessiert, für den lohnt sich ein Blick auf unsere Internetseiten unter http://www.ordix.de und die Gerne können Sie uns auch direkt ansprechen und die Vortragsunterlagen anfordern: Stefanie Heither ([email protected]). ORDIX Engagement bei DOAG Regionalgruppe Rhein-Main Im Mai 2008 haben die ORDIX Datenbankspezialisten Andreas Kother und Klaus Günther die Leitung der DOAG Regionalgruppe Osnabrück/Bielefeld/Münster übernommen Hinzu kommt nun die Leitung der Regionalgruppe Rhein-Main durch Kathleen Hock, die sich die Funktion zukünftig mit Thomas Tretter teilen wird Ein starkes Duo Die Leitung einer Regionalgruppe beinhaltet die Planung, Organisation und Durchführung sowie die Vor- und Nachbereitung der Regionaltreffen. Die Auswahl der Referenten und der Veranstaltungsorte erfordern ein ausgedehntes Kontaktnetzwerk und zusätzlichen zeitlichen Aufwand, da die Leitungsaufgaben zumeist neben dem eigentlichen Berufsalltag erledigt werden. Um das bestehende Netzwerk etwas aufzurüsten und das Wissensspektrum zu erweitern, wird Kathleen Hock, Oracle Consultant der ORDIX AG, den vormals alleinigen Regionalleiter Thomas Tretter unterstützen. Gemeinsam werden sie fortan das Ziel verfolgen, den Teilnehmern Oracle-Know-how auf hohem Qualitätsniveau zu vermitteln und einen optimalen Mix aus qualifizierten Referenten und spannenden Themen anzubieten. Kathleen Hock zu ihrer neuen Funktion „Ich selbst habe bereits Vorträge beim Regionaltreffen Rhein-Main sowie auf der DOAG Konferenz 2008 gehalten. Bei diesen Veran- Kathleen Hock, die sich seit Februar 2009 die Leitung der DOAG Regionalgruppe Rhein-Main mit Thomas Tretter teilt staltungen lernte ich das DOAG Umfeld und das DOAG Team intensiver kennen und schätzen, so dass ich mich heute gern weiter engagieren möchte. Mir geht es vor allem darum, zusammen mit Herrn Tretter wichtige Oracle Themen bei den Anwendern zu adressieren und zu platzieren, um so zu einem konstruktiven Informationsaustausch beizutragen.“ Stefanie Heither ([email protected]). ORDIX News 1/2009 47 IT-Management & Consulting Ganzheitliches IT-Management löst IT-Aufgaben über und unter der Oberfläche! Meist geht es in IT-Landschaften in erster Linie darum, technische Probleme zu lösen. Doch die technischen Probleme sind oft nur die Spitze des Eisbergs – häufig ist ein Blick unter die Oberfläche nötig. Wir unterstützen Sie dabei mit Beratung, Schulung, Coaching und coniatos™ Checks zu den Themen: • IT-Strategie Entwicklung und Umsetzung • IT-Management Aufgaben und Frameworks (COBIT, ITIL, PRINCE2) • Krisenmanagement in IT-Projekten • Effizientes Projektmanagement • Entwicklung erfolgreicher Teams • Zielorientierte Durchführung von Meetings Coniatos hilft Ihnen, Ihre IT ganzheitlich zu optimieren: auf der fachlichen Ebene bei IT-Architektur und Technik, auf der Prozessebene z. B. im Projektmanagement und auf der sozialen Ebene z. B. bei der Verbesserung der Kommunikation und des Konfliktmanagements. coniatos AG Kreuzberger Ring 13 65205 Wiesbaden Tel: 0611 77840-00 E-Mail: [email protected] Internet: www.coniatos.de