www.ordix.de 04 ORDIX news 2008 € 2,20 Das IT-Magazin der ORDIX AG SOA-Governance Reihe SOA (Teil II): Braucht SOA eine neue Regierung? Datenbank-Backup mit RMAN Die Zeit ist reif für eine neue Art der IT-Managementberatung Bericht über ein Backup-Projekt bei einer großen deutschen Bank S. 24 Neue Funktionen in DRBD 8.0 OCFS und DRDB: Keine Angst vor Split-Brain!S. 48 Interview mit Lars Eisenblatt, coniatos AG MS SQL Server 2008 New Features S. 34 S. 40 Datenhistorie mit Change Data Capture S. 51 IUG-Veranstaltungen 2009 • 50. IUG-Workshop • Technischer Workshop • 3 IUG-Seminare • Mitgliederversammlung Warum lohnt es sich IUG-Mitglied zu werden? ► Sie bekommen direkten Kontakt mit den Hauptverantwortlichen Mitarbeitern aus der Branche ► Workshops und Stammtische kostenlos für drei Mitarbeiter pro Mitgliedsfirma ► Steigerung Ihres Bekanntheitsgrades und Erweiterung Ihrer Zielgruppe ► Seminare und Veranstaltungen zum Sonderpreis ► 15 % Rabatt auf Informix-Schulungen von IBM und anderen Schulungsanbietern ► Gemeinsam Problemlösungen finden Zusammen sind wir stärker und können mehr erreichen. Experten-Vorträge Kontakt- und Netzwerkbildung Hohe Besucherzahlen Wir würden Sie gerne in unserer Gemeinschaft begrüßen. Melden Sie sich bitte bei: [email protected]. www.iug.de Editorial Rettungspakete Paderborn, Dezember 2008 Dieses Mal hat es nichts mit Weihnachten zu tun: Das Schnüren von Rettungspaketen ist wieder in Mode. Gerhard Schröder hat 1999 zum ersten Mal ein Rettungspaket geschnürt (damals sollte der Holzmann Bauriese ein Darlehen der KfW über 150 Millionen erhalten). Kurzfristig hat das auch für erhöhte Popularitätswerte gesorgt, was sicher von Schröder und der SPD auch bezweckt war. Jetzt kommen die Nachahmer: Im Portfolio sind das Bankenpaket (Eltern Peer Steinbrück und Angela Merkel) und eventuell die Opelrolle (Eltern Frank Steinmeier und Angela Merkel), über die just an dem Tag, an dem ich das hier schreibe, verhandelt wird. Frau Merkel, wie immer einen Tick zu spät, versucht aber gerade, bei der General Motors ..., pardon, Opel Rettungsaktion durch einen genialen Trick („lege meinen Termin einfach vor den von Steinmeier“) auf die Überholspur zu kommen. Aber wozu? Nur um eine marode amerikanische Wirtschaft und die dort üblichen Praktiken zu retten. Die Fehler, die gemacht wurden, oder die katastrophale (Wirtschafts-)Politik der Bush-Administration macht man dadurch leider nicht ungeschehen. Im Gegenteil: Durch eine Opel (oder Ford) „Rettung“ wird mit hoher Wahrscheinlichkeit nur Geld in die völlig maroden US-Mutterkonzerne gepulvert, das innerhalb weniger Wochen wirkungslos verpufft sein wird. Da erscheint doch der Vorschlag von Nikolaus Bollmann*), 46, Gelsenkirchen, drei Kinder, geschieden und von mehreren Banken als nicht kreditwürdig eingestuft (so wie sich die Banken momentan untereinander auch einstufen) wesentlich sinnvoller: Man verteile die 480 Milliarden € an ca. 20 Millionen Bundesbürger. Das sind dann rund 24.000 € pro Bundesbürger. Und zwar unter der Maßgabe (Bedingung des Rettungspaketes), sich dafür einen Opel Astra (Ford Fiesta, VW Polo ...) für 18.000 € zu kaufen, auf den man ja derzeit mindestens 3.000 € Nachlass erhält. Bei 20 Millionen Neufahrzeugen ist die deutsche Autoindustrie mindestens für 6 ½ Jahre gerettet und die Opelrolle überflüssig. Mit dem restlichen Geld (9.000 €) wird durch Darlehen an Banken (3.000 €) bedürftigen Banken Bargeld zur Verfügung gestellt und anderen Branchen ein individuelles Rettungspaket geschnürt. Nutznießer ist in jedem Fall der Staat, dem dadurch immense Steuereinnahmen zur Verfügung stehen und der sich deshalb auch den Top-Katalysator für die Krise in der Automobilindustrie spart: Das Schenken der KFZ Steuer für 2009. Die macht im Übrigen bei einem Fahrzeug der o. g. Klasse ungeheure 80 - 100 € aus. Bei diesem unglaublichen Anreiz habe ich sofort überlegt, 6 Autos zu kaufen, weil ich dann über die Nachlässe noch ein siebtes geschenkt bekomme und für die Steuerersparnis jedes einmal volltanken kann. Leider kann man Kurt Tucholsky nicht in die Beratermannschaft der Regierung aufnehmen (statt Herrn Tietmeyer ). Tucholsky hat schon 1930(!) Weitblick gezeigt („Wenn die Börsenkurse fallen“ veröffentlicht in „Die Weltbühne“). Wem Tucholsky nicht als Weihnachtslektüre reicht, dem empfehle ich jetzt die Artikel dieser ORDIX News: Auch hier viele Anregungen für Politiker (Keine Angst vor Split-Brain, Neues zu DRBD, Mit Kennzahlen zum Projekterfolg, Braucht SOA eine neue Regierung? (SOA vielleicht nicht, aber ...)). Und daneben noch viele andere nützliche Dinge zum Thema Datenbanken (MySQL, Oracle, DB2 und MS SQL Server), Betriebssystemen und Java Best Practice. Bevor ich es vergesse, natürlich erfüllt Herr Bollmann auch die 500.000 € Sperrklausel für den Bezug des Rettungspaketes (mit seinen 4.120 € Bruttogehalt auch über 10 Jahre hinweg kein Problem). In diesem Sinne ein vergnügtes Weihnachtsfest und schauen wir mal, welche Branchen im Superwahljahr 2009 von Super-Merkel und Kollegen gerettet werden. Wolfgang Kögler PS: Vielen Dank an meinen Aufsichtsrat Herrn Raum für den Tucholsky Tipp. Sicher mit Abstand das Beste, was hier steht und auch im Vergleich zu dem, was in den letzten Monaten von unseren Politikern zum Besten gegeben wurde. *) Name völlig frei erfunden ORDIX News 4/2008 3 Inhalt Aktuell Standards 23����Larry Ratlos: Dateisystem­erweiterung in Solaris 10 03����Editorial 55����Einladung zum IT-Symposium Risikomanagement mit Oracle am 17.02.2009 04����Inhalt 28����Seminarübersicht: Januar bis August 2009 45����Impressum Betriebssysteme 48����OCFS und DRDB (Teil I): Keine Angst vor Split-Brain! Neue und hilfreiche Funktionen von DRBD, Version 8.0: Die elegante Open-Source-Lösung hilft, kostengünstig Shared Storage zur Verfügung zu stellen. Open Source 20����Codename Indiana: OpenSolaris - Kleider machen Leute Überblick über OpenSolaris und damit die potentiellen Weiterentwicklungen des Betriebssystems Solaris. 43����System-Logging unter Linux und Unix – syslog-ng (Teil II): Zentrale Speicherung von Logfiles Vorstellung der Vorteile und Risiken der zentralen Speicherung von Logfiles sowie deren Verschlüsselung mit Stunnel. Projektmanagement 5������IT-Projektcontrolling (Teil II): Mit Kennzahlen zum Projekterfolg Überblick über Kennzahlen und Kennzahlensysteme im Bereich IT-Projektcontrolling. IT-Strategie 4 Java/JEE 14����Java Best Practice (Teil III): Java-Projekte bauen mit ANT ANT ist ein Build Tool in und für Java, vergleichbar mit MAKE unter Unix. Anhand der Aufgaben eines Projekts werden Aufbau und einzelne Elemente von ANT beschrieben. Datenbanken 10����MySQL Falcon (Teil II): PerformanceVergleich Falcon vs. InnoDB Lasttests mit Super Smack zeigen Unterschiede bei der Performance der beiden bekann­testen transaktionsfähigen Storage Engines auf. 17����Oracle Objekttypen von A - Z (Teil VIII): Queue – Advanced Queuing Im 8. Teil fahren wir mit „Q“ wie Queue - mit Fokus auf Advanced Queuing - fort. 24����Projektbericht: Datenbank-Backup mit RMAN in komplexen Umgebungen Bericht über die Entwicklung und Implementierung eines Backup-Verfahrens mit Oracle RMAN bei einer großen deutschen Bank. 30����Oracle EM Grid Control (Teil V): Die Wartungsfunktion imp/exp Überblick über Assistenten und Optionen beim Import und Export von Daten aus einer bzw. in eine Oracle Datenbank. 38����Oracle Database 11g Release 1 (Teil V) Neue Data Pump Funktionen in Oracle 11g 34����Reihe SOA (Teil II): SOA-Governance Braucht SOA eine neue Regierung? Wesentliche Merkmale einer SOA-Governance werden skizziert. Dabei werden u. a. Begriffe wie ServiceLifecycle-Management, Service-Portfoliomanagement und Service-Designprozess vorgestellt. 46����DB2 HADR: Automatic Failover mit TSA Die in DB2 Version 9.5 integrierte Tivoli System Automation ermöglicht den automatischen Failover bei HADR. 40����Die Zeit ist reif für eine neue Art der IT-Managementberatung Interview mit Lars Eisenblatt, Mitbegründer und Vorstand der coniatos AG. 51����MS SQL Server 2008 New Features (Teil I): Blick in die Datenvergangenheit mit CDC Mit Change Data Capture werden Änderun­ gen an Tabelleninhalten nachverfolgt. ORDIX News 4/2008 Projektmanagement IT-Projektcontrolling (Teil II): Mit Kennzahlen zum Projekterfolg Während wir uns im ersten Teil [1] mit den Grundlagen des Projektcontrollings beschäftigt haben, erörtern wir im vorliegenden Artikel Kennzahlen und Kennzahlensys­teme. Dabei gehen wir auf die Frage ein, wie mit Hilfe von Controlling-Methoden aus Zahlen Dieser Artikel richtet sich an IT-Manager, IT-Controller und Projektmanager. aussagekräftige Informationen gewonnen werden. Hürden im Projektcontrolling Im ersten Teil dieser Reihe wurde bereits deutlich, dass es beim Controlling nicht um kontrollieren, sondern um regeln geht. Dabei wurden auch die Ziele und Aufgaben des strategischen Controlling, des Multiprojektcontrolling und des Einzelprojektcontrolling beleuchtet. Im Rahmen des IT-Projektcontrolling stehen folgende Fragen im Vordergrund: • • • • • • Wie misst man den Fertigstellungsgrad? Wieviel Aufwand ist sinnvollerweise für die IST-Datenerhebung und die Auswertung zu betreiben? Herrscht Verständlichkeit, Transparenz und Akzeptanz für die gewählten Kennzahlen? Wie werden Kennzahlen in (Status-)Berichten genutzt? Wie fließen nicht messbare Größen ein? Was sind sinnvolle Kennzahlen? Dabei wird der Projektleiter meist durch einen Projektcontroller auf der Abteilungs- oder Bereichsebene im Unternehmen unterstützt. Was sind eigentlich Kennzahlen? Eine Kennzahl ist ein Indikator, der einen bestimmten Sachverhalt beschreibt. Üblicherweise eine absolute Zahl, ein Prozentwert oder ein Symbol wie z. B. der Ampelstatus in einem Projektstatusbericht. Dabei werden direkte und indirekte bzw. abgeleitete Kennzahlen unterschieden. Kennzahlen sind die Messstellen eines Projekts und unterstützen das Controlling bei der Steuerung. Beispiele für direkte Kennzahlen sind: • • • Budgetstand Anzahl Mitarbeiter Anzahl Change Requests Beispiele für abgeleitete Kennzahlen, also Ver­­hältniszahlen, die als Prozentwert dargestellt werden, sind: • • • Budgetquote (Istwert/Planwert) Fachlicher Fertigstellungsgrad (Anzahl fertiggestellter Arbeitspakete/geplante Arbeitspakete) Zeitlicher Fertigstellungsgrad (abgelaufene Zeit/geplante Zeit) Darüber hinaus kennt man noch zeitbezoge­ ne Kennzahlen, z. B.: • • • Budgetreichweite (abhängig von den Terminen des Projekts) Anzahl Tests pro Woche Anzahl Change Requests pro Woche Aus Zahlen werden Steuerungssysteme Ein Kennzahlensystem ist eine konkrete, dem Steuerungsziel dienende Zusammenstellung von Kennzahlen. Abbildung 1 zeigt ein Beispiel für ein Kennzahlensystem. Was konkret in einem Projekt mit Kennzahlen gesteuert werden soll, hängt vom Projekttyp und von der Zieldefinition ab. Für kleinere Vorhaben reicht meist ein einfaches Kennzahlensystem mit maximal fünf ORDIX News 4/2008 5 Projektmanagement Kennzahlen, für größere Projekte werden komplexere Kennzahlensysteme benötigt. Pareto lässt grüßen Sofern sich direkte Kennzahlen exakt bestimmen lassen, stimmen auch die von ihnen abgeleiteten Kennzahlen. Aber nicht alle Kennzahlen lassen sich messen oder genau bestimmen. Die ersten 80 % erhält man mit vertretbarem Aufwand. Anschließend noch viel Aufwand in die letzten 20 % zu investieren, bringt kaum Zugewinn - ganz nach dem Pareto-Prinzip. Kennzahl-Gruppe Kennzahl Code/Abk. Budget Ausschöpfung BA Reichweite BR Anzahl Mitarbeiter MAZ Auslastungsgrad MAA Verfügbarkeit (Urlaub/Krankheit) MAV Bisherige Projektdauer (verbrauchte Zeit) PVZ Noch erforderliche Projektdauer (Zeit) PEZ Meilensteintermine M Anzahl Risiken RALL Noch offene Risiken ROF Ressourcen Termine Risiko-Management Fertigstellungsgrad Fachlicher Fertigstellungsgrad FFG Kostenmäßiger Fertigstellungsgrad KFG Zeitlicher Fertigstellungsgrad ZFG Verbrauch des Projektbudgets Soll 100 % aktuelle Abweichung Trend 60 % 40% Ist 20% Start Abb. 2: Trend im Projekt. 6 ORDIX News 4/2008 Viele Kennzahlen lassen sich messen, doch eine wichtige lässt sich meistens nur schätzen: der fachliche Fertigstellungsgrad. Wie ist der inhaltliche Projektfortschritt? Für die Ermittlung des fachlichen Fertigstellungsgrads gibt es folgende Lösungsansätze: • • Subjektive Schätzung des Verantwortli­ chen eines Arbeitspakets in Prozent Ampelmethode auf Arbeitspaketebene („noch nicht begonnen“, „in Arbeit“, „fertig“). Wobei eine Abstufung in fünf statt drei Schritten meist die Transparenz und Genauigkeit erhöht. Auf Projektebene werden diese Einzelermittlungen kummmuliert und gewichtet. Zusätzlich oder auch alternativ lässt sich der Fertigstellungsgrad durch weitere Methoden ermitteln. In der Praxis verbreitete Methoden sind: • • • • „Cost to Complete“: Istkosten/(Istkosten + geschätzte Restkosten) „Cost to Cost“: Istkosten/Plankosten Erreichung von Meilensteinen „hours to hours“: Zeit(Ist)/Zeit(geplant), berücksichtigt jedoch nicht die Effizienz im Umgang mit der Arbeitszeit Wie aus Zahlen Informationen werden Die Semantik einer Kennzahl ergibt sich aus dem Kontext. Der verantwortliche Projektcontroller muss wissen, wie er den Wert einer Kennzahl zu interpretieren hat. Daher sind Regeln und Definitionen für die Erhebung und Darstellung der Kennzahlen erforderlich. Abb. 1: Beispiel für ein Kennzahlensystem. 80 % Was ist messbar? Projektverlauf Durch die Auswertung der Kennzahlensys­ teme im Projekt erhält man zu jedem Berichtszeitpunkt die Information zum Status des Projekts. Mindestens genauso wichtig ist jedoch die Betrachtung des Trends. Hier spielt nicht nur die äußere Form des Berichtswesens eine wichtige Rolle, sondern auch die systematische Aufbereitung und Darstellung. Zum Berichtszeitpunkt verwendet man üblicherweise eine tabellarische Darstellung der aktuellen Kennzahlen wie im o. g. Beispiel. Für die prognostische Darstellung werden z. B. die Fertigstellungsgrade oder der Budget­ stand über die Zeit, wie in Abbildung 2 gezeigt, graphisch dargestellt. Eine Tabellenkalkulation, z. B. Excel liefert hier gute Dienste. Projektmanagement Earned Value Analysis Obwohl schon seit den sechziger Jahren verwendet - vornehmlich in militärischen Projekten und bei der NASA - erlebt die Earned Value Analysis (EVA) in den letzten Jahren eine gewisse Renaissance. Seit einiger Zeit ist dieses Controlling-Instrument auch im „Guide to the Project Management Body of Knowledge“ [2] fest verankert. Basis dieses Controlling-Werkzeugs ist die monetäre Bewertung des Fertigstellungsgrads (Earned Value). Die deutsche Übersetzung laut DIN 69903 ist der „Fertigstellungswert“. Oft findet man auch den Begriff des „Leistungswerts“. Mit anderen Worten: Wie viel Leistung habe ich für mein Geld bekommen? PC AC EV CPI SPI SV CV BAC EAC ETC VAC PAC TAC DAC Planned Cost Actual Cost Earned Value Cost Performance Index Schedule Performance Index Schedule Variance Cost Variance Budget at Completion Estimated Cost at Completion Estimate to Complete Variance of Completion Plan At Completion Time At Completion Delay At Completion Abb. 3: Abkürzungen aus der Earned Value Analysis (EVA). Mathematisch ausgedrückt ist der Earned Value die Multiplikation des Werts des gesamten (geplanten) Projektbudgets (BAC – Budget at Completion) mit dem Fertigstellungsgrad (FFG in Prozent) zum Berichtszeitpunkt. EV = BAC*FFG. Eine Übersicht über die in einer EVA verwendeten Kennzahlen zeigt Abbildung 3. Earned Value Analysis Cockpit Eingabewerte Berichtszeitpunkt EVA kann helfen Was ist überhaupt anders als bei der „klassischen“ Betrachtung von Budgetverlauf und Ist­kosten? Der entscheidende Unterschied ist die monetäre Bewertung des Projektfortschritts. Erst dadurch wird der Wert mit den Plan- und Istkosten direkt vergleichbar, da die­ se beiden auf Währungseinheiten beruhen. Die Earned Value Analysis hilft vor allem bei: • • • • Der Bewertung des Projektfortschritts Der Schafffung einer Basis für fundierte Berichte Der Erhaltung der Trenderkennung zum Projektverlauf (monetär und zeitlich) Der Schaffung von Vergleichbarkeit verschiedener Projekte und damit Lieferung von Hinweisen für das Multiprojektmana­ ge­ment Dazu stellt die Earned Value Analysis zum Berichtszeitpunkt folgende Kennzahlen gegenüber: • • • Plankosten (PC – Planned Cost) Istkosten (AC - Actual Cost) Fertigstellungswert (EV - Earned Value) Der Nutzen dieses Kennzahlensystems ist, dass sich allein durch Eingabe des Projektbudgets (BAC), dem Start-/Endetermin, des 1. April 2008 Projektstart Projektende 3. März 2008 31. August 2008 Fachlicher Fertigstellungsgrad AC (Istkosten) BAC (Projektbudget) (Planbasis) 17% 20.000 100.000 Abgeleitete/errechnete Earned Value Kennzahlen Gesamtstatus EV (Fertigstellungs­ wert) 17.000 zeitbezogene Kennzahlen PC (Plankosten zum Berichtszeitp.) 16.022 Budget-Kennzahlen und Indizes PAC (geplante Projektlaufzeit in Wochen) 25,9 EAC (erwarteter Budget­umfang zum Projektende) 117.647 TAC (benötigte Projektlaufzeit in Wochen) 24,4 VAC (erwartete Budget­ab­weichung zum Projektende) -17.647 DAC (ProjektVerzögerung in Wochen) 1,5 ETC (ggf. noch erfor­der­liches Budget) EAC-AC 97.647 VAC (erwartete Budget­abweichung ggü. Plan) -17,6% Performance-Kennzahlen SV (Planbweichung in EUR) 978 SPI (TerminPerformance) 1,06 CV (Kosten­ abweichung in EUR) -3.000 CPI (KostenPerformance) 0,85 Abb. 4: Earned Value Cockpit – EVA-Kennzahlen im Überblick. ORDIX News 4/2008 7 Projektmanagement Fertigsstellungsgrads und der Istkosten (AC) alle weiteren Kennzahlen des Projekts zeitlicher und monetärer Art ableiten lassen. Sie geben Aufschluss über den Fortschritt des Projekts (siehe Abbildung 4). Die EVA-Kennzahlen im Überblick Ausgangswert in diesem Beispiel ist zum einen das geplante Projektbudget (BAC) von 100.000 Euro und eine Projektdauer von 6 Monaten. Unter der Annahme, dass nach einem Monat, zum ersten Berichtszeitpunkt, 20.000 Euro ausgegeben wurden und ein 140000 120000 Euro 100000 Fertigstellungsgrad von 17 % erreicht wurde, ergeben sich dadurch alle weiteren Kennzahlen der EVA. Trägt man die Daten des jeweiligen Berichtszeitpunkts über eine zeitliche Periode hinweg in ein Diagramm ein, ergibt sich dadurch die in Abbildung 5 dargestellte „Fieberkurve“ des Projekts. In diesem Beispiel erkennt man deutlich, dass die Kurve für das zu erwartende Projektbudget schon zum Datum des ersten Berichtszeitpunkts über dem geplanten (100.000 Euro) liegt. Der Anstieg der Kurve weist darauf hin, dass zu schnell Geld ausgegeben wird. Dies sieht man auch daran, dass die Kurve für die Istkosten permanent über der Kurve der Plankosten und des Fertigstellungswerts liegt. Wobei letztere die Plankosten bereits früh schneidet und dauerhaft drunter bleibt. D. h. der Arbeitsfortschritt hinkt ständig hinterher. Neben dem o. g. Kostenverlauf existieren noch zwei andere Kennzahlen, die weiteren Aufschluss über den Verlauf des Projekts geben: 80000 60000 40000 AC EV PC EAC 20000 0 M1 M2 M3 M4 Projektdauer M5 • M6 Abb. 5: EVA-Verlauf „Fieberkurve“. • 1,50 1,40 1,30 1,20 1,10 1,00 0,90 0,80 0,70 SPI CPI 0,60 0,50 M1 M2 M3 M4 Projektdauer Abb. 6: SPI/CPI-Verlauf. 8 ORDIX News 4/2008 M5 M6 SPI, der Schedule Performance Index beschreibt, inwieweit das Projekt zeitlich im Plan ist. SPI = EV / PC. Man spricht hier auch von „Termin-Performance“. Auf dem SPI basiert dann auch die Ableitung der erwarteten Projektlaufzeit (TAC). • SPI > 1 Der Projektfortschritt ist schneller als geplant. • SPI < 1 Es gibt einen zeitlichen Verzug im Projekt. Der CPI (Cost Performance Index) beschreibt, inwieweit das Projekt aus Kostensicht im Plan ist. CPI = EV / AC. Man spricht hier auch von „Kosten-Performance“. • CPI > 1 Das Projekt verläuft kosten­günstiger als geplant. • CPI < 1 Das Projekt wird vermutlich teurer als geplant. Idealerweise liegen beide Indizes bei 1. Dadurch weiß ein Controller, dass die geplanten Mittel und Ressourcen auch benötigt werden. Im Hinblick auf das Multiprojektcontrolling ist das IT-Management auf diese Information angewiesen, wenn zusätzliche Mittel (CPI < 1) erforderlich sind oder freiwerdende Mittel (CPI > 1) bzw. Ressourcen (SPI > 1) zur Disposition stehen. Trägt man auch hier wiederum beide Werte über eine zeitliche Periode in ein Diagramm ein, ergibt sich für das o. g. Beispiel der in Abbildung 6 dargestellte SPI/CPI-Verlauf des Projekts. Projektmanagement Die blaue Kurve (SPI) beinhaltet die Information, dass das Projekt zunächst rasch voran geht. Dann verzögert es sich, SPI schneidet die 1 zwischen M2 und M3. Und letztlich, wenn auch knapp, bleibt es nicht im Terminrahmen. Die rote Kurve (CPI) sagt aus, dass das Projekt schon zu Beginn zu viele Kosten verschlingt. Dieser Trend setzt sich während des gesamten Projekts so fort. (CPI pendelt um 0,8), sodass es am Ende insgesamt teurer wird als geplant. Glossar Pareto- Das Pareto-Prinzip, auch „80-zu-20-Regel“, „80-20-Verteilung“ oder „ParetoPrinzip Effekt“ genannt, beschreibt das statistische Phänomen, wenn eine kleine Anzahl (20 %) von hohen Werten einer Wertemenge mehr zu deren Gesamtwert beiträgt, als die hohe Anzahl (80 %) der kleinen Werte dieser Menge. Davon lässt sich auch ableiten, dass sich viele Aufgaben mit einem Mitteleinsatz von ca. 20 % so erledigen lassen, dass 80 % aller Probleme gelöst werden. Links ►► [1] IT-Projektcontrolling (Teil I): Service statt Kontrolle: http://www.ordix.de/ ORDIXNews/3_2008/Projektmanagement/Einfuehrung_IT_Projektcontrolling.html Fazit ►► [2] „Guide to the Project Management Body of Knowledge“ (PMBOK), Werden Kennzahlenwerte professionell aufbereitet, z. B. nach anerkannten Methoden wie Earned Value Analysis, so entstehen Berichte für das Management, die auf einer nachvollziehbaren und damit verständlichen Systematik basieren. Projektcontrolling leidet oft zu Unrecht unter dem Vorurteil, bürokratischer Ballast zu sein. Dabei hilft der Projektcontroller durch pragmatische Anwendung von Kennzahlen und dem Einsatz von Controlling-Werk- Project Management Institutes (PMI), ISBN-13: 978-1930699724 ►► Seminarempfehlungen: ►► [3] IT-Projektmanagement: http://training.ordix.de/seminar.php?nr=223 ►► [4] IT-Controlling Grundlagen: http://training.ordix.de/seminar.php?nr=224 zeugen dem Projektleiter bei der Navigation, wie ein Lotse dem Kapitän eines Schiffes. Rainer Restat ([email protected]). Seminarempfehlung: IT-Projektcontrolling in der Praxis ►► Informationen und Online-Anmeldung im Internet: http://training.ordix.de/seminar.php?nr=787 Sie erhalten einen umfassenden und systematischen Überblick über Begriffe, Methoden und Arbeitstechniken für das operative Einzelprojekt-Controlling und lernen die verschiedenen Aufgaben kennen. Über die Grundlagen hinaus werden schrittweise Themen wie Kennzahlen, Steuerungs­maßnahmen, Schnittstellen zum Projektmanagement sowie der Umgang mit Controlling-Methoden vermittelt. Zielgruppe Projektmanager und angehende Projektleiter sowie erfahrene Entwickler, Systemspezialisten und IT-Führungskräfte. Voraussetzungen IT-Kenntnisse und erste praktische Erfahrungen in der Projektarbeit. Seminarinhalte • • • • • • Grundlagen: Spektrum des IT-Projektcontrollings, Einzel- und Multiprojektcontrolling, Portfolio-Management Herausforderungen und Ziele des operativen Einzelprojektcontrollings, Steuerungsmaßnahmen, Kennzahlen, Datenerfassung, Auswertung, Fertigstellungsgrade Methoden und deren Anwendung, Wirtschaftlichkeitsrechnungen, Nutzwertanalyse, Earned Value Analysis, Prognosen Integration des IT-Projektcontrollings in die Organisation des Unternehmens Dynamik der Projekte und Konsequenzen für das Controlling, Schnittstellen zum IT-Projektmanagement Fallbeispiele, Übungen Termine 29.06.- 01.07.2009 in Wiesbaden 21.09.- 23.09.2009 in Wiesbaden Seminar-ID: PM-05 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 4/2008 9 Datenbanken MySQL Falcon (Teil II): Transaktionspower: Performance-Vergleich Falcon vs. InnoDB Der Artikel richtet sich an MySQL-Anwender und -Administratoren. In Ausgabe 2/2008 [1] stellten wir Ihnen die neue Storage Engine Falcon vor. Nun möchten wir diesen neuen Tabellentyp genauer untersuchen und einen Vergleichstest mit InnoDB, dem heutigen „Marktführer“ unter den transaktionsfähigen MySQL-Engines, vornehmen. Wer von beiden bietet die bessere Performance? Wer, Wie, Was? Das Werkzeug: Super Smack Performance-Messungen bzw. Benchmarktests sind schwierige Aufgaben im Leben eines Datenbankadministrators. Vor der eigent­lichen Messung sind zunächst einige wichtige Fragen zu klären: Beginnen wir zunächst mit der letzten Frage. Auf dem Open Source Markt sind viele kleine Skripte und Programme verfügbar, mit denen Performance- und/oder Lasttests gegen My­SQL gefahren werden können. • • • • 10 ORDIX News 4/2008 Gibt es ein Datenmodell inklusive Daten, das für die Messung verwendet werden kann? Handelt es sich um reale Daten oder müssen Testdaten generiert werden (und wenn ja, wie)? Sollen mehrere Anwender simuliert werden (Lasttest-Szenario)? Gibt es ein geeignetes Tool, welches für die Mes­sung verwendet werden kann, bzw. wie kann ein Anwenderverhalten sinnvoll simuliert werden? Ein wirklich brauchbares Werkzeug ist das von Sacha Pachev entwickelte und von Jeremy Zawodny geförderte Super Smack [2]. Zwar wurde dieses Werkzeug seit längerem nicht weiterentwickelt (zumindest ist dem Autor nichts bekannt), allerdings hat dies keine negativen Auswirkungen auf die Anwendung. Die aktuelle Version 1.2 vom Stand September 2003 ist auch mit den neuesten MySQLVersionen voll kompatibel. Super Smack kann übrigens auch für Oracle und PostgreSQL verwendet werden. Datenbanken Negativ stößt lediglich die Tatsache auf, dass die Dokumentation zu Super Smack nicht sehr umfangreich ist. Der geneigte Anwender muss sich mit einem 83-zeiligen Tutorial begnügen. In Kombinationen mit den beiden mitgelieferten Beispielszenarien sollte aber jeder erfahrene MySQL-Datenbankadministrator in der Lage sein, sich seine eigene Teststellung aufzubauen. Darüber hinaus lohnt sich eventuell auch ein Blick in das Buch „High Performance MySQL“ [3] von Jeremy Zawodny, in dem das Tool ebenfalls beschrieben wird. Bedienungsanleitung Das Tool Super Smack bedient sich so genannter „smacks“, frei definierbarer Testszenarien, die gegen die Datenbank ausgeführt werden können. Im Wesentlichen bestehen diese „smacks“ aus Query Barrels, die wiederum aus einzelnen, frei wählbaren SQL-Statements zusammengesetzt sind. Ein Query Barrel sollte dabei einen typischen Nutzerzugriff simulieren. Die Teilkomponenten eines Barrel (also die einzelnen SQL-Statements) können unterschiedlich gewichtet werden. Hierzu kann einfach die Anzahl der Ausführungen der Teilkomponenten festgelegt werden. Abbildung 1 zeigt Auszüge aus einem Benchmark-Szenario. Rot hervorgehoben sind die Teilkomponenten des Barrel – in diesem Fall ein SELECT- und ein DELETE-Statement – sowie die Gewichtung der Teilkomponenten im Barrel. Da für eine sinnvolle Messung auch Testdaten benötigt werden, liefert Super Smack ein weiteres Tool gleich mit: GEN-DATA. Mit Hilfe dieses Werkzeuges können im Bedarfsfall schnell Testdaten generiert und in die Datenbank geladen werden. Testszenario Für unseren Vergleichstest wählen wir ein recht einfaches Datenmodell, welches lediglich aus einer einzigen Tabelle besteht (siehe Abbildung 2). Neben der Tabelle wurde ein Primärschlüssel (und damit ein unique Index) auf die Spalte mitarbeiternr gelegt. Die Tabelle repräsentiert Mitarbeiterstammdaten einer fiktiven Firma. Durch eine Protokollierung des Anwenderverhaltens - z. B. über den Parameter bin-log [4] – wird das aktuelle Nutzerverhalten direkt über die Datenbank aufgezeichnet. Für unseren Testfall wurde das Nutzungsmuster aus Abbildung 3 ermittelt. //define a query query "select_by_number" { query "select * from fmitarbeiter where mitarbeiternr = '$word'"; // $word will be substitute with the read from the 'word' dictionary type "select"; // query stats will be grouped by type has_result_set "y"; // the query is expected to return a result set parsed "y"; // the query string should be first processed by super-smack to do // dictionary substitution } ... //define a query query "delete_by_number" { query "delete from fmitarbeiter where mitarbeiternr = '$word'"; // $word will be substitute with the read from the 'word' dictionary type "delete"; // query stats will be grouped by type has_result_set "y"; // the query is expected to return a result set parsed "y"; // the query string should be first processed by super-smack to do // dictionary substitution } // define database client type client "smacker1" { user "test"; // connect as this user pass ""; // use this password host "localhost"; // connect to this host db "test"; // switch to this database socket "/tmp/mysql.sock"; // this only applies to MySQL and is // ignored for PostgreSQL query_barrel "14 select_by_number 4 update_by_number 1 delete_by_number 1 insert"; // on each round, // run select_by_username query 2 times } ... Abb. 1: SMACK: Auszüge aus einem Benchmark-Szenario. CREATE TABLE 'mitarbeiter' ( 'mitarbeiternr' int(11) DEFAULT NULL, 'nachname' varchar(40) DEFAULT NULL, 'vorname' varchar(40) DEFAULT NULL, 'gehalt' int(11) DEFAULT NULL, 'beruf' varchar(40) DEFAULT NULL, 'mail' varchar(40) DEFAULT NULL, 'eintrittsdatum' int(11) DEFAULT NULL, 'abteilungsnr' int(11) DEFAULT NULL, KEY 'i_pk' (`mitarbeiternr`) ) ENGINE=InnoDB DEFAULT CHARSET=latin Abb. 2: Das Datenmodell des Performance-Tests. 70 % 20 % SELECT UPDATE 5% INSERT 5% DELETE Abb. 3: Nutzungsmuster inklusive der dahinterstehenden SQL-Befehle. ORDIX News 4/2008 11 Datenbanken shell> super-smack szenario.smack 5 100 Query Barrel Report for client smacker1 connect: max=48ms min=6ms avg= 26ms from 5 clients Query_type num_queries max_time min_time q_per_s delete 500 0 0 321.70 insert 500 8 0 321.70 select 7000 0 0 4503.84 update 2000 0 0 1286.81 Abb. 4: Performance-Testergebnis: Gemessen wurden die einzelnen Teilkomponenten des Barrel, wenn 5 Clients das Query Barrel jeweils 100x ausführen. Teststellung Falcon Parameter InnoDB Parameter -–falcon_min_record_memory=500M -–falcon_max_record_memory=500M -–falcon_page_cache_size=500M -–key-buffer-size=500M -–innodb-buffer-pool-size=500M -–innodb-log-file-size25M -–innodb-thread-concurrency=8 Abb. 5: Parameter zur Einstellung der spezifischen Cache-Bereiche. 8000 6000 5000 Falcon InnoDB Falcon InnoDB Falcon InnoDB Falcon 1000 InnoDB 2000 Falcon 4000 InnoDB Statements / Sek. 7000 3000 0 1 10 25 50 100 Anzahl Clients Abb. 6: Auswertung SELECT: Anzahl der möglichen SELECT-Statements pro Sekunde in Abhängigkeit von der jeweiligen Storage Engine. Links ►► [1] ORDIX News Artikel „MySQL Falcon“ Teil I: http://www.ordix.de/ORDIXNews/2_2008/Datenbanken/mysql_falcon.html ►► [2] MySQL Super Smack: http://jeremy.zawodny.com/mysql/super-smack ►► [3] Literaturtipp: „High Performance MySQL - Optimierung, Datensicherung, Replikation & Lastverteilung“ von Jeremy Zawodny & Derek J. Balling: http://www.oreilly.de/catalog/hpmysqlger/toc.html ►► [4] ORDIX News Artikel “Nimm zwei - Replikation unter MySQL”: http://www.ordix.de/ORDIXNews/3_2005/mysql_replikation.html ►► [5] MySQL Performance Blog: http://www.mysqlperformanceblog.com/ 2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/ 12 ORDIX News 4/2008 Die ermittelten SQL-Statements gehen mit ihrer Gewichtung direkt in das Query Barrel ein und gewährleisten damit eine aussagekräftige Teststellung (siehe Abbildung 4). Für unseren Performance-Vergleich werden wir unterschiedliche Lasttestszenarien unterstellen (Anzahl paralleler Anwender). Die SELECTStatements werden parallel von jeweils 1, 10, 25, 50 und 100 Clients ausgeführt. Bei den DML-Statements begnügen wir uns aufgrund der längeren Ausführungszeit mit 1, 5, 10, 15, 25 und 50 Clients. Zur Durchführung unserer kleinen Messreihe bedienen wir uns der aktuellen MySQL-Ver­sion 6.0.6-alpha. Beide Storage Engines werden mit vergleichbaren Speicherbereichen ausgestattet und gestartet (siehe Abbildung 5). Alle weiteren Parameter werden auf den MySQL-Defaultwerten belassen. Als Datenbasis werden mit Hilfe von GEN-DATA vor Testbeginn 500.000 Datensätze generiert und in die jewei­ ligen Testtabellen geladen. Um eine saubere Analyse der Storage Engines in den Teilberei­ chen der SELECT-, UPDATE-, INSERT- und DELETE-Statements zu erhalten, erfolgte die Messung dieser Statements initial separat. Abschließend wurde das gewichtete und kombinierte Testszenario gegen die Datenbank ausgeführt. Alle Teststellungen wurden mehrfach (10x) gegen die Datenbank ausgeführt und die Mess­ergebnisse über die Testreihe gemittelt. Die einzelnen Statements (mit Ausnahme der INSERT-Statements) enthalten jeweils eine WHERE-Klausel, die auf eine indizierte Spalte (Primärschlüssel mitarbeiternr) zugreift. Bei dem eingesetzten Rechner handelt es sich um einen handelsüblichen Desktop PC mit einer 2 GHz Intel CPU und 2 GB RAM. Als Betriebssystem wurde ein OpenSuSe 10.1 eingesetzt. Falcon versus InnoDB Bei den indexbasierten SELECT-Statements ist zu erkennen, dass die Engine Falcon einen deutlich höheren Durchsatz an Statements pro Sekunde abarbeiten kann (ca. +50 % gegen­ über InnoDB). Erstaunlich ist die Tatsache, dass beide Engines mit einer zunehmenden Anzahl von parallel arbeitenden Clients nicht skalieren (siehe Abbildung 6). Der limitierende Faktor dürfte in diesem Fall eindeutig in der CPU des verwendeten Systems liegen. Für einen höheren Durchsatz stehen hier einfach keine weiteren Ressourcen zur Verfügung. Datenbanken Falcon InnoDB Falcon InnoDB Falcon InnoDB Falcon InnoDB Falcon InnoDB 500 Falcon 1000 InnoDB Statements / Sek. 1500 0 1 10 25 50 100 Anzahl Clients Abb. 7: Auswertung UPDATE: Anzahl der möglichen UPDATE-Statements pro Sekunde in Abhängigkeit von der jeweiligen Storage Engine. 9000 8000 7000 6000 Falcon InnoDB Falcon InnoDB Falcon InnoDB Falcon 2000 InnoDB 3000 Falcon 4000 InnoDB 5000 Falcon Bei den Teilergebnissen lag Falcon in den meis­ten Bereichen vorne. Beim kombinierten Szenario gab es ebenfalls keine Überraschungen. Falcon bietet im Schnitt gegenüber InnoDB einen Performance-Vorteil von 50 - 60 % (sie­ he Abbildung 8). Wenig überraschend ist, dass durch die wachsende Zahl der Clients der Durchsatz nicht wirklich steigt, da das Testszenario zu 70 % aus SELECT-Anweisungen besteht. Gerade in diesem Bereich konnten ja bereits zuvor keine Zuwächse durch parallele Client-Anfragen generiert werden. 2000 InnoDB Im Vergleich zu InnoDB schneidet Falcon im Parallelbetrieb deutlich besser ab. Dies dürfte an dem in Falcon neu implementierten MVCC-Konzept liegen, das auch im Vorfeld als Performance Feature mehrfach angekündigt wurde. 2500 Statements / Sek. Das Verhalten bei den DML-Statements weicht von diesem konstanten Ergebnis ab. Hier ist ein deutlicher Anstieg des Durchsatzes bei einer steigenden Anzahl von Clients zu verzeichnen (siehe Abbildung 7). Erstaunlich ist das Verhalten von Falcon im SingleUser Betrieb. Die Durchsatzrate ist für diesen Fall extrem hoch und wird selbst durch eine hohe Anzahl paralleler Sessions nicht wieder erreicht. Falcon bestätigt diese Eigenart über alle in diesem Benchmarking getesteten DMLStatements (INSERT, UPDATE, DELETE). 1000 0 1 Fazit In dem von uns unterstellten Szenario kann Falcon ohne Weiteres mit InnoDB mithalten. In Teilbereichen bietet es sogar die bessere Performance. Ob dieses Verhalten konsequent auch für andere Szenarien und Datenmodelle gilt, muss im Einzelfall geprüft werden. Zu vielfältig sind die unterschiedlichen Anwendungsfälle und Konfigurationsmöglich­keiten von MySQL und seinen Storage Engines. Bei einem im Internet veröffentlichten Benchmarktest [5] wurden so z. B. andere Ergebnisse für das SELECT-Verhalten der beiden hier betrachteten Storage Engines ge­messen. Allerdings wurden in diesem Benchmarking auch andere Rahmenbedingun­gen gesetzt. Vielleicht haben Sie ja nun ebenfalls Lust bekommen, ein kleines Benchmarking gegen Ihre MySQL-Datenbanken durchzuführen, um zu überprüfen, ob Sie die für Ihre Zwecke optimale Storage Engine einsetzen. Wir unterstützen Sie gerne dabei! 5 10 15 25 50 Anzahl Clients Abb. 8: Auswertung Testszenario: Auch beim kombinierten Test gibt es keine Überraschungen. Falcon ist in diesem(!) Szenario InnoDB deutlich überlegen. Glossar Storage Engine MySQL unterstützt verschiedene Speicher-Engines. Die Engines kümmern sich um den Zugriff und die physikalische Verwaltung eines MySQL-Datenbankservers. Am bekanntesten sind die Engines MyISAM und InnoDB. Query Barrel Eine Sammlung von einzelnen SQL-Statements die aus Datenbanksicht von einem einzigen Client ausgeführt werden. Durch ein Barrel soll ein typischer Anwender simuliert werden. MVCC Multi Version Concurrency Control. Ein Konzept zur optimierten Verarbeitung von parallel laufenden DML-Statements. Benchmark Beim Benchmarking handel es sich um eine vergleichende Analyse mit einem festgelegten Referenzwert. Ziel ist die Ermittlung (Messung) und Optimierung der Leistung eines IT-Systems. Lasttest Ein Lasttest dient der Ermittlung der Leistungsgrenze eines Sys­ tems. Zu diesem Zweck wird in aller Regel eine extrem hohe (Nutzer-)Last simuliert. Neben der Ermittlung der Leistungsgrenze erfolgen Lasttests, um Fehler in Systemen aufzudecken. Matthias Jung ([email protected]). ORDIX News 4/2008 13 Java/JEE Java Best Practice (Teil III): Java-Projekte bauen mit ANT Dieser Artikel richtet sich an Java-Entwickler und Projekt­ leiter, die den Einsatz eines Build Tools in Erwägung ziehen. Build Tools automatisieren den Weg vom Quellcode zum auslieferbaren Programm. Für Java ist ANT das Werkezug der Wahl. In diesem Artikel gehen wir auf die Installation, den Aufbau der Projektdatei und die Modularisierung von ANT ein. Darüber hinaus zeigen wir, wie man ANT auf der Konsole ausführt und wie das Zusammenspiel mit anderen Entwicklungsumgebungen – hier am Beispiel Eclipse – funktioniert. Java Best Practice ANT ANT ist ein auf der Programmiersprache Java basierendes Build Tool, vergleichbar mit MAKE unter Unix. Das Tool gibt es seit 2000. Es wurde ursprünglich von James Duncan Davidson entwickelt und steht unter der Apache License. ANT ist ein Akronym und steht für „Another Neat Tool“, was sich in etwa mit „noch ein hübsches Werkzeug“ übersetzen lässt. Gleichzeitig soll mit dem englischen Wort für „Ameise“ zum Ausdruck gebracht werden, dass kleine Dinge in der Lage sind, Großes zu vollbringen. Installation Die aktuelle Version der Software ist 1.7.1 und kann auf der Homepage des Projekts [1] heruntergeladen werden. Nach dem Entpacken der Zip-Datei muss die Umgebungsvariable ANT_HOME auf das Installationsverzeichnis von ANT gesetzt und das darin enthaltene /bin-Verzeichnis in den Pfad mit aufgenommen werden. Optional kann die Variable JAVA_HOME auf das Installationsverzeichnis von Java gesetzt werden. Anschließend kann auf der Kommandozeile mit dem Befehl ant -version die korrekte Installation überprüft werden. Aufbau einer Projekt-Datei Die Ausführung von ANT wird durch eine XML-Datei mit dem Namen build.xml ge- 14 ORDIX News 4/2008 steuert. Diese wird als Projektdatei bezeichnet. Das Root-Element heißt demzufolge auch project. Innerhalb des Projektes kann die Arbeit in mehrere Aufgaben strukturiert werden. Eingeleitet werden diese durch das Element target. ANT bringt einen Werkzeugkasten mit. Dieser enthält Tasks für elementare Operationen, wie kompilieren, kopieren, löschen etc. Dieser Werkzeugkasten kann erweitert werden: Für die Enterprise-Entwicklung werden oftmals Tasks für das Deployment mit der Application Server Software ausgeliefert. Im Folgenden behandeln wir die wichtigsten Aufgaben, die in einem Java-Projekt anfallen. Als Vorlage dient die XML-Datei aus Abbildung 1. Ein kompletter Überblick über alle Tasks von ANT befindet sich in der Anleitung, die Sie online auf der Internetseite des Projekts finden und die sich zusätzlich im Installationsverzeichnis auf der lokalen Platte befindet. Globale Variablen In jeder Datei können mit Hilfe des Elements property globale Variablen definiert werden, die in allen Targets benutzt werden können (siehe Abbildung 1, Zeile 10). Nützlich sind sie vor allem für die Definition von Pfadangaben. So kann die Property mit den Namen src den Ort der Java-Quelldateien festlegen. Auf die Definition kann dann über ${src} zugegriffen werden. Java/JEE Löschen Bevor Java-Programme kompiliert werden, müssen die alten Build-Verzeichnisse aufgeräumt bzw. gelöscht werden. Dies lässt sich mit dem clean-Target in Abbildung 1 ab Zeile 17 bewerkstelligen, das mittels deleteTasks das angegebene Verzeichnis löscht. Kompilieren Im Target mit dem Namen compile wird der Task javac benutzt, um alle Sourcen aus dem src-Verzeichnis in Bytecode zu wandeln und im build-Ordner abzulegen (siehe Abbildung 1, Zeile 21). Voraussetzung ist ein installiertes JDK und die Definition der Variablen JAVA_HOME. Optionale Attribute für dieses Element sind unter anderem der Class­path, in dem sich zusätzliche Bibliotheken befinden, die für die Übersetzung benötigt werden. Alle zu kompilierenden Quelldateien werden in einem include-Element angegeben. Dabei kann auch mit Wildcards gearbeitet werden. Eine Alternative ist die Benutzung eines Filesets, wobei ein Verzeichnis angegeben wird, in dem sich alle relevanten Dateien befinden. Als Filter können hier mittels include bzw. exclude die zu verwendenden Files eingeschränkt werden. Verpacken Nach dem Kompilieren kann alles in einem Java-Archiv (JAR-File) zusammengepackt werden. Dies übernimmt das hier genannte Target jar in Abbildung 1, ab Zeile 29. Neben dem Archivnamen meeting.jar wird in Filesets die Liste der zu packenden Dateien angegeben. (1) <project name="Meetings" default="deploy" (2) basedir="."> (3) <description> (4) Dieses Build-File kompiliert die Java-Sourcen, erstellt (5) die Deploy Descriptoren,packt das JAR-File zusammen und (6) deployt das ganze auf dem JBoss-Server. (7) </description> (8) (9) <!-- Setze globale Properties fuer dieses Build-File --> (10) <property name="src" location="src"/> (11) <property name="build" location="bin"/> (12) <property name="j2eedir" location="C:/jboss(13) 4.0.5GA/server/default/lib"/> (14) <property name="deploydir" location="C:/jboss(15) 4.0.5GA/server/default/deploy"/> (16) (17) <target name="clean" depends=""> (18) <delete dir=“${build}“/> (19) </target> (20) (21) <target name="compile" description="Compiliere die Sourcen"> (22) (23) <javac srcdir="${src}" destdir="${build}" (24) classpath="${j2eedir}/jboss-j2ee.jar"> (25) <include name="**/*.java" /> (26) </javac> (27) </target> (28) (29) <target name="jar" depends="compile" (30) description="Baut das JAR-File"> (31) <jar destfile="meetings.jar"> (32) <fileset dir="${build}"> (33) <include (34) name="de/ordix/meetings/entities/*.class"/> (35) <include (36) name="de/ordix/meetings/sessions/*.class"/> (37) <include name="META-INF/*"/> (38) </fileset> (39) </jar> (40) </target> (41) (42) <target name="deploy" depends="jar" (43) description="Deployt das JAR-File im JBoss"> (44) <copy file="meetings.jar" todir="${deploydir}"/> (45) </target> (46) (47)</project> Entsprechend gibt es Tasks für die Erzeugung von Web- und Enterprise-Archiven (WAR- bzw. EAR-Files). Dort ist es dann auch möglich, die von der JEE-Spezifikation geforderten Verwaltungsverzeichnisse für die Deployment Descriptoren META-INF und WEB-INF anzulegen und zu befüllen. mit Include- bzw. Exclude-Listen angegeben werden. Verteilen Ausführung auf der Konsole Nach erfolgreichem Zusammenpacken wird das Archiv - oder auch mehrere - auf dem Application Server „deployed“, was im einfachsten Fall einem Kopiervorgang gleichkommt (siehe Abbildung 1, Zeile 42). Dafür existiert der Task copy. Auch hier können einzelne Dateien oder aber ganze Filesets Ist die Projektdatei erstellt, kann ANT an die Arbeit gehen. Befindet man sich in einem Verzeichnis, in dem eine build.xml liegt, so reicht ein simples ant auf der Kommandozeile, um die Arbeit mit dem Default Target zu beginnen. Einzelne Targets hingegen lassen sich mittels ant targetname explizit starten. Abb. 1: Beispiel für eine build.xml-Datei. ORDIX News 4/2008 15 Java/JEE Auch Listen mehrerer Targets sind möglich. Um alle Optionen des Tools auf einen Blick zu bekommen, wird das Kommando ant-help verwendet. ANT modularisieren Wenn sich die Java-Projekte häufen und jedes von ihnen eine eigene build.xml besitzt, von denen man gegebenenfalls nur jeweils einzelne Targets ausführen möchte, so besteht die Möglichkeit, ein Buildfile ohne eigene Logik zu schreiben, von dem aus die jeweiligen Ziele der einzelnen Dateien aufgeru- (1) <target name="targetName1"> (2) <ant antfile="${basedir}/projekt2/build.xml" (3) inheritAll="false" target="targetName2"> (5) </ant> (6) </target> Abb. 2: Aufruf eines externen Targets. Glossar Java EE/JEE Java Enterprise Edition. Erweiterung von Java für Server-Anwendungen. 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. IDE Integrated Development Environment. Eine IDE ist eine graphische Oberfläche für eine komfortable Software-Entwicklung. Z. B. Eclipse ist eine Java-IDE. Links ►► [1] ANT Dokumentationen und kostenloser Download http://ant.apache.org/ ►► [2] Eclipse Webseite: http://www.eclipse.org/ ►► [4] ORDIX News Artikel „Build Management mit Maven“: http://www.ordix.de /ORDIXNews/4_2007/Java_J2EE_JEE/maven_build_management.html 16 Java-Objekte in der Identitätskrise Eclipse Feinjustage Java-Projekte bauen mit ANT Exception Handling ORDIX News 4/2008 Auf diese Weise können komplexe Teile in separaten Build-Dateien ausgelagert und gegebenenfalls wiederverwendet werden. Großer Vorteil des zentralen Skripts ist, dass alle für das Projekt essentiell wichtigen Aufgaben in einer Datei zusammengefasst vorliegen, unabhängig von den tief in den Verzeichnishierarchien versteckten Build-Dateien. Zusammenspiel mit Eclipse Neben der klassischen Variante, ANT auf der Kommandozeile zu starten, existieren für eine Reihe von Entwicklungsumgebungen Plugins, um das Werkzeug komfortabel von dort aus zu starten. Dies soll hier exemplarisch an der weit verbreiteten IDE Eclipse [2] demonstriert werden. Eclipse bietet die Möglichkeit, über das Menü Windows Show view ANT ein zusätzliches Fenster zu öffnen. Dort können build.xmlDateien per Drag&Drop importiert oder aber über das Kontextmenü „Add Buildfiles…“ ausgewählt und hinzugefügt werden. Jede BuildDatei in der angezeigten Baumstruktur lässt sich auf-/zuklappen, um so die vorhandenen Targets übersichtlich darzustellen. Durch einen Doppelklick auf das jeweilige Target wird dieses sofort ausgeführt. Ein Klick auf die Build-Datei selbst startet das als Default eingestellte Target. Alle bei Ablauf produzierten Ausgaben erscheinen in der Consolen-View von Eclipse, die gegebenenfalls extra eingeschaltet werden muss. Fazit ►► [3] Maven Webseite: http://maven.apache.org/ Teil I: Teil II: Teil III: Teil IV: ... fen werden. Das Code-Beispiel in Abbildung 2 zeigt einen Ausschnitt aus einem solchen zentralen Build-Skript. Mit Hilfe des Tasks ant wird das Target targetName2 aus der Projektdatei, die im Attibut antfile angegeben ist, ausgeführt. Java Best Practice Mit ANT steht dem Entwickler ein mächtiges Build Tool zur Verfügung, das etabliert ist und als Quasi-Standard in der Java-Entwicklung eine große Anhängerschaft besitzt. Es ist erweiterbar und in vielen Entwicklungsumge­ bun­gen integriert. Einmal erstellte Build-Dateien können durch geringe Anpassungen in fast jedem Folgeprojekt wiederverwendet werden. Dennoch lohnt sich ein Blick auf das als „Nachfolger“ gehandelte Werkzeug Maven [3], das auch von Apache stammt [4]. Andre Dirr ([email protected]). Datenbanken Reihe Oracle Objekttypen von A - Z (Teil VIII): Queue – Advanced Queuing Im achten Teil der Reihe Objekttypen fahren wir mit dem Buchstaben „Q“ wie Queue fort. Augenmerk legen wir hier auf das Advanced Queuing. Eine vollständige Beschreibung aller Möglichkeiten würde den Rahmen dieses Artikels sprengen. Deshalb wird hier lediglich das Prinzip der Implementierung vorgestellt. Oracle Advanced Queuing Advanced Queuing (AQ) ist ein MessagingSystem in Oracle Datenbanken. Es ermöglicht den Datenaustausch zwischen verschiedenen Applikationen. Die Vorteile der Datenbankunterstützung zeichnen sich durch Hochverfügbarkeit, Sicherheit, Flexibilität und der Möglichkeit zur Datenrettung aus. Nachrichten werden in einer so genannten Warteschlange (= Queue) abgelegt. Die Datenbasis dieser Warteschlange ist eine Tabelle, in der jede Zeile eine Nachricht repräsentiert. Queue-Tabellen können mit verschiedenen Datentypen und somit Dateninhalten angelegt und dadurch an den Nachrichtenaustausch von Applikationen angepasst werden. Zu jeder Queue-Tabelle wird automatisch eine Exception Queue angelegt. Treten bei Weiterleitungen von Nachrichten Probleme auf oder ist die benutzerdefinierte Gültigkeitsdauer der Nachrichten überschritten, werden diese in die Exception Queue verschoben. Arten von Queues • • Dieser Artikel wendet sich an Datenbankadministratoren und Entwickler, die einen Überblick über die Objekttypen von Oracle bekommen möchten. Broadcast: Der Sender hat keine Kenntnis über den Empfänger. Point-to-Multipoint: Der Sender bestimmt die Empfänger der Nachricht. Datenbankumgebung einstellen Um Advanced Queuing in der Datenbank zu nutzen, muss mindestens ein Queue-MonitorProzess aktiv sein. Dieser Queue-Monitor-Prozess prüft beispielsweise nach, ob Nachrichten bereits an alle Empfänger gesendet worden sind und ob und wie lange diese nach vollständiger Bearbeitung aus der Queue entfernt werden (= rentention time). Hierzu sollte der Initialisierungsparameter AQ_TM_PROCESSES auf einen Wert > 0 eingestellt werden (bis Oracle 10g). Bei einem Wert von beispielsweise 10, werden mindes­ tens ein und maximal zehn Prozesse gestartet. Die Anzahl der aktiven Prozesse richtet sich nach dem Arbeitsaufkommen zum Abarbeiten der Queues. ALTER SYSTEM SET AQ_TM_PROCESSES=1 SCOPE=BOTH; Abb. 1: Initialisierungsparameter AQ_TM_PROCESSES. Es gibt zwei Arten von Queues: • Singleconsumer Queues (Point-to-Point) Es gibt genau einen Sender und genau einen Empfänger. • Multiconsumer Queues Eine Nachricht kann von mehreren Empfängern gelesen werden. CREATE TYPE my_aq_type AS OBJECT( no NUMBER, title VARCHAR2(30), text VARCHAR2(200)); Abb. 2: Estellen eines Payload-Objekts. ORDIX News 4/2008 17 Datenbanken DBMS_AQADM.CREATE_QUEUE_TABLE( queue_table => 'MY_AQ_TABLE', queue_payload_type => 'MY_AQ_TYPE' ); Abb. 3: Erstellen einer Queue-Tabelle. DBMS_AQADM.CREATE_QUEUE( queue_name => 'MY_AQ_QUEUE', queue_table => 'MY_AQ_TABLE' ); Abb. 4: Erstellen einer Queue. DBMS_AQADM.START_QUEUE( queue_name => 'MY_AQ_QUEUE' ); Abb. 5: Starten einer Queue. DECLARE enqueue_options dbms_aq.enqueue_options_t; dequeue_options dbms_aq.dequeue_options_t; message_properties dbms_aq.message_properties_t; message_id RAW(16); my_message my_aq_type; BEGIN my_message := my_aq_type ( 1, 'First run', 'Date: '||TO_CHAR(SYSDATE, 'DD.MM.YYYY') ); Berechtigungen Die Implementierung von Advanced Queuing setzt bestimmte Berechtigungen voraus. In der Regel wird ein AQ-Administrator mit den benötigten Rechten angelegt. Dieser Administrator dient gleichzeitig als Eigentümer aller erstellten AQ-Objekte. Weiterhin können AQ-Nutzer angelegt oder bestehende mit den benötigten Rechten ausgestattet werden. Um das Vergeben der Rechte an andere AQNutzer zu erleichtern, ist es sinnvoll, eigene Rollen für die Nutzung bzw. Verwaltung der AQ-Architektur anzulegen. Oracle bietet bereits zwei vorgefertigte Rollen zum Advanced Queuing an: • • AQ_ADMINISTRATOR_ROLE AQ_USER_ROLE Implementierung Um Nachrichten über Advanced Queuing austauschen zu können, sind folgende Schritte notwendig: • • • • Erstellung eines Nachrichtentyps Erstellung einer Queue-Tabelle Erstellung einer Queue Starten der Queue dbms_aq.enqueue( queue_name => 'MY_AQ_QUEUE', enqueue_options => enqueue_options, message_properties => message_properties, payload => my_message, msgid => message_id); Eine Queue-Tabelle wird mit Hilfe des Packages DBMS_AQADM angelegt. Standardmäßig sind alle Queues Singleconsumer, sprich: genau ein Empfänger kann eine Nachricht verarbeiten. Der Empfänger braucht sich hierbei nicht auszuweisen. dbms_aq.dequeue( queue_name => 'MY_AQ_QUEUE', dequeue_options => dequeue_options, message_properties => message_properties, payload => my_message, msgid => message_id); Über den Parameter MULTIPLE_CONSUMERS der Prozedur CREATE_QUEUE_TABLE kann eine Multiconsumer Queue angelegt werden. COMMIT; dbms_output.put_line('Number: '||my_message.no); dbms_output.put_line('Title: '||my_message.title); dbms_output.put_line('Text: '||my_message.text); END; Abb. 6: Beispiel von Enqueue und Dequeue einer Singleconsumer Queue. 18 Die Änderung des Parameters kann auch im laufenden Betrieb vorgenommen werden (siehe Abbildung 1). ORDIX News 4/2008 Hier können die Empfänger implizit als so genannte Teilnehmer (= Subscriber) ausgewiesen, oder explizit beim dem Versenden einer Nachricht als Empfänger (= Recipient) angegeben werden. In diesem Fall können einige Subscriber die Nachricht nicht erhalten. Jede Nachricht trägt Nutzdaten (= Payload) mit sich. Diese Nutzdaten können sowohl Basisdatentypen wie NUMBER und VARCHAR2 Datenbanken als auch Objekttypen sein. In Abbildung 2 wird für die Nutzlast ein Objekttyp verwendet. Mit Hilfe dieses Objekttyps wird eine QueueTabelle erstellt. Hierzu wird die Prozedur CREATE_QUEUE_TABLE aus dem Package DBMS_AQADM mit den nötigen Parametern aufgerufen. Der Parameter QUEUE_TABLE gibt den Namen der zu erstellenden QueueTabelle an. QUEUE_PAYLOAD_TYPE erwartet die Angabe eines Typs für die Nutzdaten, in dem Fall MY_AQ_TYPE (siehe Abbildung 3). Wurde die Queue-Tabelle erstellt, kann nun eine Queue erzeugt werden. Der Prozedur CREATE_QUEUE werden die Parameter QUEUE_NAME und QUEUE_TABLE übergeben (siehe Abbildung 4). Um die Queue nutzen zu können, wird sie mit Hilfe der Prozedur START_QUEUE in Betrieb genommen. Hier reicht die Angabe der zu startenden Queue im Parameter QUEUE_ NAME (siehe Abbildung 5). Sind alle Schritte erfolgreich verlaufen, kann die Queue nun genutzt werden. Das Beispiel in Abbildung 6 zeigt eine einfache Verwendung von Nachrichten Einreihung (= Enqueue) und die Entnahme von Nachrichten (= Dequeue). Für Enqueue und Dequeue wird kein implizites COMMIT gesetzt. Dies muss explizit in der Programmierung beachtet werden. SELECT FROM WHERE OBJECT_NAME -----------------------------MY_AQ_TYPE MY_AQ_TABLE AQ$_MY_AQ_TABLE_T AQ$_MY_AQ_TABLE_I AQ$_MY_AQ_TABLE_E AQ$_MY_AQ_TABLE_F AQ$MY_AQ_TABLE MY_AQ_QUEUE Fazit Oracle Advanced Queuing ist ein mächtiges Werkzeug für den Umgang mit Queues. Bei komplexen Projekten oder sei es allein nur für die Kommunikation zwischen zwei Applikationen, gewinnt Advanced Queuing immer mehr an Bedeutung. Hier kann die gesamte Bandbreite der Funktionalität von Advanced Queuing in Betracht gezogen werden. Die von Oracle zur Verfügung gestellte Java-Bibliothek zum Advanced Queuing gibt zusätzliche Freiheit zur unabhängigen Applikationsentwicklung. OBJECT_TYPE ------------------TYPE TABLE INDEX INDEX QUEUE VIEW VIEW QUEUE Abb. 7: Selektion von erstellten AQ-Objekten. Glossar Advanced Queuing (AQ) AQ ist ein Messaging-Mechanismus in einer Datenbank. Enqueue Einstellen von Nachrichten in eine Queue. Dequeue Entnahme einer Nachricht aus einer Queue. Links ►► ►► ►► [1] Oracle Dokumentation „Oracle Streams Advanced Queuing“: http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/integrat.htm#sthref3346 [2] ORDIX News Artikel: „Oracle Advanced Queuing und Java“: http://www.ordix.de/ORDIXNews/4_2007/Datenbanken/oracle_adv_queuing_java.html [3] ORDIX News Artikel: „Information Sharing mit Oracle Streams“: http://www.ordix.de/ORDIXNews/2_2006/Datenbanken/oracle_streams.html Seminarempfehlung: Oracle Streams Advanced Queuing Datenbankobjekte Eine einfache Selektion (siehe Abbildung 7) auf den Data-Dictionary View ALL_OBJECTS, gibt einen Überblick der erstellten Datenbankobjekte. object_name, object_type all_objects object_name LIKE '%MY_AQ%'; ►► Informationen/Online-Anmeldung: http://training.ordix.de/seminar.php?nr=574 In diesem Seminar werden Sie mit der Funktionsweise von Advanced Queuing (AQ) vertraut gemacht, welches der Kommunikation beispielsweise zwischen verschiedenen Applikationen dient. Dabei werden die zu verschickenden Meldungen permanent in der Datenbank gespeichert. Sie erlernen die Theorie und Praxis der Konfiguration und Administration sowie der Einsatzmöglichkeiten des AQ. Seminarinhalte • • • • • • • • Überblick Architektur Einsatzmöglichkeiten Konfiguration/Initialisierung Administration Programmierung/Interfaces Sicherheit und Zugriffskontrolle Fehlerbehandlung Termine 02.03.- 04.03.2009 in Wiesbaden 22.06.- 24.06.2009 in Wiesbaden 14.09.- 16.09.2009 in Wiesbaden 23.11. - 25.11.2009 in Wiesbaden • • • • • • • Export/Import Performance und Skalierung Internet-Zugriff Data Dictionary Views Oracle JMS and Oracle Streams AQ Messaging Gateway Vertiefung der Theorie durch praktische Übungen und Beispiele Seminar-ID: DB-ORA-37 Dauer: 3 Tage Preis pro Teilnehmer: 1.290,00 € (zzgl. MwSt.) Karsten Fiedler ([email protected]). ORDIX News 4/2008 19 Open Source Codename Indiana: OpenSolaris - Kleider machen Leute Der Artikel richtet sich an UnixSystemadministratoren, die sich speziell mit Solaris beschäftigen, aber auch an Personen, die sich für alternative DesktopSysteme interessieren. 20 ORDIX News 4/2008 Wer frühzeitig wissen möchte, wie sich das aktuelle Betriebssystem Solaris weiterentwickeln wird, der sollte sich einmal im OpenSolaris-Umfeld umsehen. In dieser quell­ offenen Variante des professionellen Betriebssystems von Sun Microsystems fließen aktuelle Entwicklungen ein, die später – vielleicht – den Weg ins Rechenzentrum finden werden. Open Source Test OpenSolaris ist der offene Zweig von Solaris, der sowohl für Entwickler als auch für DesktopAnwender zugeschnitten ist. Hier werden technische Neuerungen ausprobiert, die dann bei Marktreife in das nächste Solaris-Release einfließen. In diesem Artikel werden wir uns das OpenSolaris Release 2008.05 („Indiana“) näher ansehen und hierbei besonders die neuen technischen Errungenschaften beleuchten. Das Betriebssystem lässt sich damit ohne Installation und somit recht gefahrlos erkunden. Nach dem Booten muss nur die Tastaturbelegung und Sprachauswahl getroffen werden. Anschließend wird (beim graphischen Login) der X-Server gestartet und man kann loslegen. Die Anmeldung erfolgt automatisch als User jack, eine direkte Root-Anmeldung ist nicht möglich. Download Installation Die aktuelle Version 2008.05 von OpenSolaris ist nur für Intel-Plattformen zu haben. Es bietet aber vollständigen Zugang zu den bereits etablierten Funktionen von Solaris 10, wie Zonen, ZFS, DTrace, SMF etc. Unter [1] kann man sich gewissermaßen das Starterkit herunterladen. Es besteht schlichtweg aus einem ISO-Abbild, das eine Live-CD enthält. Die Installation verläuft sehr übersichtlich. Zuerst bestimmt man die Plattenbereiche, die für Solaris zur Verfügung stehen sollen. Dann wählt man Zeitzone, Sprachumgebung, RootPasswort und Initialbenutzer aus. Der Umfang der Erstinstallation ist durch das Medium CD deutlich geringer als bei Solaris. Open Source Weitere notwendige Software sowie Updates und Patches können aus dem Internet mit dem neuen IPS (Image Packaging System) nachinstalliert werden. Darauf gehen wir später noch näher ein. Der erste Eindruck Das neu installierte System macht einen frischen, modernen Eindruck (siehe Abbildung 1). Trotz des verhältnismäßig geringen Installationsumfangs - letztendlich ist das Dateisystem dann doch mit gut 2,3 GB belegt werden viele Applikationen mitgeliefert, die speziell für den Desktop-Anwender interessant sind (GIMP, Spiele, Multimedia-, Mailund Chat-Clients etc). Sun möchte dadurch die Attraktivität und damit die Popularität und Akzeptanz seines Betriebssystems steigern und Solaris als konkurrenzfähiges DesktopSystem präsentieren – zumindest Letzteres ist durchaus gelungen! Wir möchten in diesem Artikel hierauf aber nicht weiter eingehen, sondern uns mehr mit den Solaris-spezifischen Merkmalen und deren Neuigkeiten auseinandersetzen. Innere Werte Die Einbindung in ein bestehendes Netzwerk findet automatisch statt. Hierzu dient eine neue Instanz des Dienstes „physical network interface“ (svc:/network/physical:nwam, sie­he Abbildung 2). Dieser startet den nwamd (network auto-magic daemon) und den DHCPClient. Diese Vorgehensweise gilt übrigens auch für die Live-CD. Auffallend ist zunächst die Umsetzung des Superusers als eine Rolle (im Sinne von RBAC). Eine Konsequenz ist, dass man sich nicht direkt als root am System anmelden kann. Daher muss bei der Installation ein weiterer Benutzer angelegt werden. Wie sich herausstellt, wird dieser initiale Benutzer von der Installationsroutine mit weitreichenden Sonderrechten ausgestattet. Durch die Zuweisung des unter Solaris vordefinierten Profils „Primary Administrator“ und der Rolle root (siehe /etc/user_attr) ist er in der Lage, das System vollständig über die Kommandozeile zu administrieren! Dazu muss er entweder eine Profil-Shell starten oder dem gewünschten Kommando das Schlüsselwort pfexec voranstellen, um es dann im Kontext der zugeordneten Berechtigungen auszuführen. Alternativ kann man auch ganz klassisch per su in die Administratorrolle schlüpfen. Abb. 1: Indiana „live“. rn@sol11u5:~$ svcs -p network/physical STATE STIME FMRI disabled 20:44:15 svc:/network/physical:default online 20:44:28 svc:/network/physical:nwam 20:44:28 23 nwamd 20:44:47 102 dhcpagent Abb. 2: Standardmäßig wird per DHCP der Weg ins Netzwerk gefunden. rn@sol11u5:~$ pfexec pkg set-authority \ -O http://pkg.sunfreeware.com:9000 Sunfreeware rn@sol11u5:~$ pkg authority AUTHORITY URL opensolaris.org (preferred) http://pkg.opensolaris.org:80/ SunFreeware http://pkg.sunfreeware.com:9000/ Abb. 3: Zugriff auf externe Paketserver. # pkg refresh # pkg image-update Abb. 4: Systemaktualisierung in zwei Schritten. IPS Mit dem neuen Installationsverfahren können (SVR4)-Pakete bequem und einfach über das Internet installiert werden. Hierzu gibt es ein graphisches bzw. ein kommando-orientiertes Werkzeug. Über so genannte „Authorities“ wer- ORDIX News 4/2008 21 Open Source ­ en (vertrauenswürdige) Paketserver gehandd habt. Um z. B. direkt vom bekannten Server Sunfreeware.com installieren zu können, muss der entsprechende Rechner konfiguriert werden (siehe Abbildung 3). Ebenso lässt sich auf einfache Weise ein komplettes System aktualisieren (siehe Abbildung 4). Schwachpunkte sind hier allerdings die mäßige Performance und eine bei anderen Systemen sonst übliche, root@sol11u5:~# zoneadm -z z1 install Image: Preparing at /export/zones/z1/root ... done. Catalog: Retrieving from http://pkg.opensolaris.org:80/ ... done. Installing: (output follows) DOWNLOAD PKGS FILES XFER (MB) Completed 52/52 7830/7830 209.30/209.30 PHASE Install Phase Note: Postinstall: Postinstall: Postinstall: Done: ACTIONS 12880/12880 Man pages can be obtained by installing SUNWman Copying SMF seed repository ... done. Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=681 Working around http://defect.opensolaris.org/bz/show_bug.cgi?id=741 Installation completed in 580,155 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process Abb. 5: Zoneninstallation per Netzwerk-Repository. hier aber leider fehlende Speicherplatzüberprüfung vor Installationsbeginn. Über IPS werden wir sicherlich noch einmal ausführlich berichten, wenn sich abzeichnet, dass sich das System etabliert. Zonen Beim Thema Zonen [3] stehen einige Grundsatzentscheidungen zur Diskussion, so dass hier noch nicht feststeht, wie es weitergeht. Z. B. wird als Standard-Branding einer Zone der Typ ipkg vorgegeben, deren Installation per IPS vorgenommen wird. Daher ist es erforderlich, während der Installation mit dem Internet verbunden zu sein (siehe Abbildung 5). Da die Zonen nicht mehr wie früher über die Globale Zone mit Software versorgt werden, treten Konzepte wie sparse- bzw. root-Zone in den Hintergrund. Die Installation der Zone ist damit unabhängiger von der globalen Zone. Sonstiges Hinter den Kulissen wird auch an den Feinheiten des Systems gearbeitet. Dazu gehört der weitere Ausbau der Dtrace-Provider sowie des Privilegienkonzepts und des RessourcenManagements. Glossar IPS Image Packaging System. Neues Paketverwaltungssystem, das unter anderem erlaubt, Software direkt über das Internet zu installieren. Live-CD Bootfähige CD, von der aus ohne sonstige Installation ein Betriebssystem gefahren werden kann. RBAC Role Based Access Control. RBAC ist ein Verfahren, womit definiert wird, welche Befehle mit zusätzlichen Rechten (z. B. Privilegien oder unter bestimmter Benutzerkennung) ausgeführt werden dürfen. Profil Zusammenfassung von administrativen Kompetenzen, die dann einer Rolle oder einem Benutzer zugewiesen werden kann. Rolle (RBAC) Pseudo-Identität, die mit Sonderrechten und -fähigkeiten im RBAC-Sinne ausgestattet ist. Profil-Shell Spezielle Shell, in der die Sonderrechte einer Rolle berücksichtigt werden. Slice Bezeichnet im Solaris-Jargon eine Partition einer Festplatte. Branding Beim Anlegen von Solaris-Zonen kann zwischen verschiedenen Typen („Brands“) gewählt werden. Links ►► ►► ►► ►► ►► [1] Download der aktuellen OpenSolaris Distribution: http://www.opensolaris.com [2] Alles zum Thema OpenSolaris: http://opensolaris.org [3] Zonen unter OpenSolaris 2008.05 uvm.: http://blogs.sun.com/dp [4] Interview mit Ian Murdock: http://www.itjungle.com/tug/tug080207-story01.html [5] Seminarempfehlung: „Solaris 10 für erfahrene Systemadministratoren“: http://training.ordix.de/seminar.php?nr=478 ZFS ist zum Standard-Dateisystem geworden. Das heißt auch, dass das root-Filesystem vom Typ ZFS ist. Swap-Bereiche werden weiterhin direkt auf einem Slice abgelegt. Eine Annäherung in Richtung Linux ist neben der offensichtlichen Desktop-Gestaltung und der Applikationsauswahl auch im Detail zu finden: so ist für root als Login-Shell die Bash voreingestellt und das Home-Verzeichnis ist nun (endlich!) /root. Fazit In Solaris 11 wird es wohl nicht so viele Innovationen geben, wie es noch bei Solaris 10 der Fall war. Aber vielleicht ist es ja auch erst einmal an der Zeit, die letzten technischen Neuerungen auszubauen und zu stabilisieren. Insgesamt ist ein deutlicher „Ruck“ in Richtung Linux spürbar. Das liegt sicherlich nicht zuletzt am Mitwirken von Ian Murdock, dem Mitbegründer von Debian [4]. Für weiterführende Infos empfehlen wir Ihnen unser Seminar „Solaris 10 für erfahrene Systemadministratoren“ [5]. Roger Niemeyer ([email protected]). 22 ORDIX News 4/2008 Aktuell Larry Ratlos: Problem bei Dateisystem­erweiterung in Solaris 10 Larry möchte auf einem Solaris 10 Datenbankserver ein ufs-Dateisystem vergrößern, auf dem sich vorwiegend Datenbankdateien befinden. Das bestehende Dateisystem mit 984 Gigabyte befindet sich auf einem Metadevice des Solaris Volume Manager. Es soll nun um zusätzliche 400 Gigabyte erweitert werden. Die Vergrößerung des Volumes funktioniert ohne Probleme. Als er aber das Dateisystem vergrößern will, bekommt Larry folgende Fehlermeldung: root@larry1 # growfs -M /oracle/data /dev/md/rdsk/d220 mkfs: bad value for nbpi: must be at least 1048576 for multi-terabyte, nbpi reset to default 1048576 Können Sie Larry helfen? Larry ist ratlos. Bisher konnte er das Dateisystem immer problemlos vergrößern. Aber warum schlägt es heute fehl? Wenn Sie die Erklärung kennen, schicken Sie sie bis zum 20.01.2009 an [email protected]. Für diejenigen unserer Leser, denen Perl mit ihren gerade einmal 21 Jahren Existenz noch zu jung ist und auch als Ehrenrettung für eine oft zu Unrecht vernachlässigte Unix-Skriptsprache, stellen wir hier jedoch eine Lösung mit der Programmiersprache awk vor, welche selbst mit ihren 31 Jahren noch lange nicht zum alten Eisen gehört: #!/bin/sh DBNAME="LOGTEST01" awk ' # Startzeile gefunden? /^[ \t]*'"$DBNAME"'[ \t\n=]/{ # Solange noch offene Klammern (bo) uebrig sind # oder die erste Klammer (fstb) noch nicht gefunden # wurde, Schleife durchlaufen while(bo>0||!fstb){ Lösung der Aufgabe aus 3/2008 # Wenn offene Klammer gefunden fstb=1 if(index($0,"(")){fstb=1} Im letzten Rätsel ging es darum, auf 20 Datenbank-Servern per Skript den Eintrag für die Testdatenbank „LOGTEST01“ aus der tnsnames.ora zu entfernen. Larry hat viele sehr gute Lösungsvorschläge der Leser erhalten, die bemerkenswerterweise alle eine Gemeinsamkeit hatten: es wurde die Programmiersprache Perl eingesetzt! # Addiere Differenz oeffnende/schliessende Klammern # zur Anzahl geoeffneter Klammern bo+=(gsub("[(]","")-gsub("[)]","")) Perl eignet sich in der Tat hervorragend für diese Aufgabe und daher konnte Larry diese Entscheidung sehr gut verstehen. # Naechste Zeile einlesen, wenn nicht EOF erreicht if(!getline){exit} } } # Alle Zeilen ausgeben, die vorher nicht uebersprungen wurden // ' $ORACLE_HOME/network/admin/tnsnames.ora > /tmp/tnsnames.ora.$$ mv /tmp/tnsnames.ora.$$ $ORACLE_HOME/network/admin/tnsnames.ora ORDIX News 4/2008 23 Datenbanken Projektbericht zum Einsatz von Oracle RMAN Datenbank-Backup mit RMAN in komplexen Umgebungen Der Artikel richtet sich an Entscheider, die ein DatenbankBackup-Verfahren auswählen sowie an Datenbankadministratoren, die komplexe Datenbank-Umgebungen sichern müssen. Die ORDIX AG hat im Rahmen eines Projektes für eine große deutsche Bank ein Verfahren für das Backup von Oracle Datenbanken mit dem Oracle Recovery Manager (RMAN) entwickelt und implementiert. Im Folgenden geben wir einen Überblick über das Projekt. Zielsetzung Ziel des Projektes war es, ein bestehendes, kom­ plexes Sicherungsverfahren durch eine einfache, effiziente und leicht administrierbare Lösung zu ersetzen. Ausgangssituation Serverlandschaft Beim Kunden befanden sich ca. 120 Oracle Datenbanken im Einsatz, die sich alle am selben Standort befanden. Dabei handelte es sich um Produktions-, Integrations- und Entwicklungsdatenbanken. Benutzt wurden die Releases 8.1.7.x (10 Datenbanken), 9.2.0.x (90 Datenbanken) und 10.1.0.x bzw. 10.2.0.x (20 Datenbanken). Als Betriebssystem wurde Sun Sparc Solaris 5.9 (64-bit) eingesetzt. Die Datenbanken liefen teilweise im Oracle RAC 9i und im Sun Cluster 3.1. Ausgangssituation Backup Das bisherige Backup erfolgte mit Oracle RMAN auf eine EMC Clarion als Backup Storage unter Nutzung eines zentralen Skripts, das folgende, schwerwiegende Nachteile aufwies: • • • • • • • Unübersichtlichkeit (über 3300 Zeilen Code) Hohe Komplexität Schwere Verständlichkeit Schlechte Wartbarkeit Schwierige Fehlersuche Viele Aufrufparameter Schlechte Dokumentation Weiterhin erfolgte das Backup ohne Katalogdatenbank. Dadurch fehlte eine zentrale Informa- 24 ORDIX News 4/2008 tionsquelle und eine redundante Haltung der RMAN-Metadaten. Die größten zu sichernden Datenbanken beweg­ ten sich im Terabyte-Bereich. Level-0-Backups dieser Datenbanken liefen teilweise über 12 Stunden. Für ein Restore/Recovery war mit einer 1,5- bis 2-fachen Dauer zu rechnen. Service Level Agreements (SLA) für diese Datenbanken existierten nicht. Sicherheitsrisiken Die RMAN-Policy-Einstellung lautete Recovery Window 7 Days; Sicherungen wurden also 7 Tage auf dem Backup Storage gehalten. Level0-Backups erfolgten einmal wöchentlich, Level1-Backups täglich. Außerdem wurden mehrmals täglich die archivierten Redo-Logdateien der im Archivelog-Modus laufenden Datenbanken gesichert. Vor der Erstellung eines Level-0-Backups wurden vorhandene Backups immer gelöscht, da sonst der Platz auf dem Backup-Server nicht ausgereicht hätte. Dies stellte ein erhebliches Sicherheitsrisiko dar, weil kein Backup mehr vorhanden war, wenn das aktuelle Level-0-Backup auf einen Fehler lief. Ein weiteres Sicherheitsrisiko bestand darin, dass die implementierte Lösung eine Exklusivität der Backups vorsah. Dies bedeutete, dass je Datenbankserver immer nur ein Backup-Job laufen durfte. Wenn ein Backup gestartet wurde und bereits ein anderer Backup-Prozess auf dem Datenbankserver lief, wartete das zentrale Skript 5 Minuten und versuchte dann, das Backup erneut zu starten. Lief immer noch ein anderer BackupJob, brach das Skript endgültig ab. Dadurch kam Datenbanken es vor, dass für Datenbanken keine Backups vorhanden waren. Recovery Manager RMAN Einsatz einer Katalogdatenbank Im Rahmen der Neustrukturierung wurde als zentrales Repository eine Katalogdatenbank aufgesetzt (siehe Abbildung 1). Dazu wurde die Oracle Software mit dem seinerzeit aktuellsten Patch Level (Release 10.2.0.2.0 ) installiert. Dies war nötig, da die Katalogdatenbank grundsätzlich in der zu sichernden Datenbanklandschaft die höchste Release-Nummer haben sollte. Der Oracle Doku­ mentation kann stets im jeweiligen Recovery Manager Reference Guide eine entsprechende Kompatibilitätsmatrix entnommen werden. Für diese Datenbank wurden initial 10 GB Plattenplatz vorgesehen und der Archivelog-Modus aktiviert. Außerdem wurde der RMAN-Katalog erzeugt. Selbstverständlich muss auch die Katalogdatenbank gesichert werden. Dafür gibt es zwei Ansätze: • • Sicherung mit RMAN ohne weitere Katalogdatenbank Aufbau einer weiteren Katalogdatenbank und gegenseitiges Backup der beiden Daten­ banken. Im Projekt wurde die erste Möglichkeit gewählt. Um die Sicherheit zu erhöhen, wurde die Katalogdatenbank so konfiguriert, dass ihre archivierten Redo-Logdateien in zwei Archivierungsziele in voneinander unabhängigen Storage-Systemen geschrieben werden. Veränderung der Retention Policy Um die beschriebenen Sicherheitsrisiken zu minimieren, wurde die Aufbewahrungszeit der Backups nicht mehr an eine Tageszahl (Recovery Window 7 Days) sondern an die Anzahl an Backups (retention policy to redundancy 3) gebunden. Damit werden nun 3 Level-0-Siche­ rungen sowie alle seit der ältesten vollständigen Sicherung angefallenen und gesicherten ar­chi­vierten Redo-Logdateien und Level-1-Si­ cherungen auf dem Backup Storage vor­gehalten. Für diese Policy reichte der verfügbare Plattenplatz allerdings nicht aus. Deshalb wurde auf Basis von Hochrechnungen weiterer Festplattenspeicher bereitgestellt. Veränderte Steuerung Die Neustrukturierung brachte auch einen Verzicht auf die bisherige, zentrale Steuerung der Backups mit sich. Stattdessen erfolgt der Start nun lokal über die Crontab des jeweiligen Da- DB Repository Ziel-Datenbank DB Abb. 1: Funktionsprinzip einer Katalogdatenbank als Repository in Verbindung mit dem Recovery Manager und einer Zieldatenbank. tenbankservers. Dabei werden von ORDIX entwickelte, versionsabhängige Skripte eingesetzt, die klein, verständlich und gut wartbar sind. Diese sichern eine Datenbank auch, falls die Katalogdatenbank nicht verfügbar sein sollte und verhindern, dass für eine Datenbank gleichzeitig mehrere Backup-Jobs laufen. Dieser Ansatz erforderte eine zentrale Planung der Datenbanksicherungen, da der Durchsatz des Backup Storage sowie die Bandbreite des Backup-Netzwerkes berücksichtigt werden mussten und deren möglichst gleichmäßige Auslastung erreicht werden sollte. Um die in den Crontabs der Datenbankserver zu den geschedulten Backups enthaltenen Informationen zentral verfügbar zu haben, wurde in der Katalogdatenbank ein zusätzliches Reporting-Schema angelegt, in dem diese Daten redundant gehalten und regelmäßig automatisch aktualisiert werden. Bei dieser Lösung muss jetzt aber die Katalogdatenbank lizensiert werden, was vorher nicht der Fall war. Eine zentrale Steuerung der Backups wäre grundsätzlich auch über Oracle Enterprise Manager (EM) Grid Control möglich. Dieser wird beim Kunden jedoch nicht eingesetzt. Implementierung Für die Implementierung standen zwei BackupTypen zur Wahl: inkrementell differentiell und inkrementell kummulativ. Bei inkrementell differentiellen Backups gibt es aufgrund der relativ kleinen Backup-Volumen bei Level-1-Sicherungen verhältnismäßig kurze Laufzeiten für die Backupvorgänge. Die Recovery-Zeit ist dagegen entsprechend länger, da mehr inkrementell diffe- ORDIX News 4/2008 25 Datenbanken rentielle Backups für ein Recovery angewendet werden müssen. Da Recovery-Zeiten im Projekt teilweise als kritisch eingestuft wurden, entschied man sich für die Implementierung inkrementell kummu­lativer Sicherungen. Diese haben zwar grundsätzlich höhere Volumen als inkrementell dif­fe­rentielle Backups, was die Laufzeit der Si­che­rungs­vor­ gänge erhöht. Jedoch bieten sie den Vorteil, dass die für ein Recovery erforderliche Zeit relativ kurz ist, weil vergleichsweise wenige Backups angewendet werden müssen. Der Unterschied in den Laufzeiten der Sicherungsvorgänge ergibt sich dadurch, dass bei inkrementell differentiellen Backups nur die Datenbankblöcke gesichert werden, die seit der letzten Level-1-Sicherung verändert wurden, während eine inkrementell kummulative Sicherung alle Blöcke erfasst, die seit der letzten vollständigen Sicherung (Level 0) verändert wurden. Einfaches Deployment Das Deployment wurde so konzipiert, dass es in wenigen, einfachen Arbeitsschritten erfolgen kann. Dazu wurden parametrisierte Skripte für jedes eingesetzte Datenbank-Release zentral abgelegt. Vorarbeiten für das Deployment Um auf den Backup-Speicher sichern zu können, benötigt der User oracle die entsprechende Schreibberechtigung. Des Weiteren mussten im Backup Storage die Mountpoints für die jeweiligen Datenbankserver eingerichtet und auf den Datenbankservern gemountet werden. Für die Kommunikation der Datenbankserver mit der Katalogdatenbank war zudem der Listener für die Katalogdatenbank zu konfigurieren und auf jedem Datenbankserver ein Eintrag für die Katalogdatenbank in der tnsnames.ora vorzunehmen. Durchführung des Deployment Das eigentliche Deployment besteht dann nur noch in der Registrierung der zu sichernden Daten­bank (register database) im RMANKa­talog sowie darin, alle für das Backup und Restore/Recovery benötigten Skripte durch Aufruf nur eines einzigen der zentral abgelegten Skripte zu erzeugen. Durch diesen Aufruf werden unter anderem auch Verzeichnisse für die jeweilige Datenbank im Backup Storage angelegt sowie ein Skript zur automatischen Befüllung des Reporting-Schemas in der Katalogdatenbank mit den Backup Schedules erzeugt. 26 ORDIX News 4/2008 Nacharbeiten zum Deployment Damit die Sicherungen der Datenbanken sowie die automatisierte Befüllung des ReportingSchemas in der Katalogdatenbank auch laufen können, sind abschließend noch folgende Arbeitsschritte erforderlich: • • Konfiguration des RMAN durch Ausführung eines der beim Deployment erzeugten Skripte (nicht bei Release 8i möglich). Scheduling der Backups sowie der automatischen Befüllung des Reporting-Schemas in der Katalogdatenbank in der Crontab des jeweiligen Datenbankservers. Neue Funktionalitäten Oracle bietet seit Release 10g die neue Funktion „Block Change Tracking“. Aktiviert man diese, liest RMAN bei einem Sicherungsvorgang nicht mehr sämtliche Oracle Blöcke der Datenbankdateien, um festzustellen, welche Blöcke geändert wurden und somit in das Backup aufzunehmen sind. Stattdessen schreibt die Datenbank Informationen über geänderte Blöcke in ein so genanntes „Block Change Tracking File“, das bei der Sicherung ausgelesen wird. Bei Nutzung dieser Funktion lässt sich für größere Datenbanken ein messbarer Performance-Gewinn in Form kürzerer Backup-Zeiten erzielen. Da während der Projektlaufzeit noch keine ausreichenden Erfahrungen mit „Block Change Tracking“ vorlagen, wurde dieses zunächst nicht benutzt. Inzwischen wird es beim Kunden aber erfolgreich eingesetzt. Herausforderungen Wie so oft in Projekten, gab es auch hier technische Herausforderungen: Die im Rahmen jeder Sicherung automatisch durchgeführte Resynchronisation des RMAN-Kataloges mit der Kontrolldatei der jeweiligen Datenbank benötigte mehrere Stunden, wenn die Kontrolldatei eine Größe im zweistelligen MB-Bereich hatte. Dieses Verhalten führte zu extremen, inakzeptablen Performance-Einbußen der Katalogdatenbank bzw. des Servers, auf dem diese betrieben wurde. Wie der Oracle Support nach langwierigen und umfangreichen, von ORDIX massiv vorangetrie­ benen Analysen schließlich feststellte, waren die vom RMAN intern durchgeführten Prozedur­auf­ rufe des Packages DBMS_BACKUP_RESTORE nicht optimal programmiert und somit für die einbrechende Performace verantwortlich. Einen Patch für dieses Problem konnte Oracle bis heute nicht liefern. Als Workaround wurde in den Backup-Skripten der regelbasierte Optimizer aktiviert /*+ rule */. Außerdem sind zur PerformanceVerbesserung die Kontrolldateien der betroffenen Datenbanken mit kleineren Größen neu angelegt worden. Datenbanken Bugs und andere Fehler Nach der Registrierung einer Datenbank im RMAN-Katalog kann es bei der anschließenden automatischen Resynchronisation des Kataloges mit der Kontrolldatei der Datenbank aufgrund des Bugs 3657899 zu dem Fehler ORA-01400 (cannot insert NULL into (%s)) kommen, wenn die Datenbank von Release 9i auf Release 10g migriert wurde. Dieses Problem kann durch die Neuanlage der Kontrolldatei beseitigt werden. Da dieses nicht immer ohne weiteres möglich ist, bietet Oracle in seiner Metalink-Note 283357.1 [1] als Workaround ein Reset des entsprechenden Teils der Kontrolldatei an, welches bei geöffneter Datenbank, also ohne Downtime, durchgeführt werden kann. Dazu ist in SQL*Plus der Befehl execute dbms_backup_restore. resetCfileSection(21); abzusetzen. Anschließend muss der zuvor mit dem Fehler abgebrochene Resynchronisierungsvorgang manuell gestartet werden. Schließlich kann es bei der Resynchronisa­tion noch zu einem Segmentation Fault kommen. Dieser lässt sich beseitigen, indem man den Wert der Umgebungsvariable NLS_LANG auf dem entsprechenden Datenbankserver auf den Wert setzt, den diese auf dem Server hat, auf dem die Katalogdatenbank betrieben wird. Glossar Oracle RAC Oracle Real Application Cluster; Verbund von Applikation und Services, die in einem Cluster betrieben werden. RAC wurde mit Release 9i eingeführt und stellt eine Weiterentwicklung des Oracle Parallel Server dar. Cluster Eine Gruppe von vernetzten Rechnern, die von außen in vielen Fällen als ein Rechner gesehen werden kann. Ziel des „Clustering“ besteht in der Regel in der Erhöhung der Rechengeschwindigkeit und/oder der Verfügbarkeit gegenüber einem einzelnen Rechner. Level-0-Backup Entspricht einem vollständigen Backup und ist Bestandteil einer inkrementellen Backup-Strategie. Level-1-Backup Nur geänderte und neue Daten werden gesichert. Level 1 Backups sind ebenfalls Bestandteil einer inkrementellen Backup-Strategie. Listener Oracle Prozess, der für die Herstellung von Verbindungen zur Instanz zuständig ist. Tnsnames.ora Oracle Konfigurationsdatei für Verbindungen zu Instanzen. Links ►► [1] http://metalink.oracle.com ►► Metalink-Note 283357.1 – Resync Catalog fails with Ora-1400 ►► Metalink-Note 305809.1 – RMAN Whitepapers and Technical Documents on Oracle Technet (OTN) ►► [2] Oracle Recovery Manager Dokumentation zu den Releases 8i, 9i und 10g: http://otn.oracle.com Restore und Recovery Auch für Restore und Recovery hat ORDIX entsprechende Skripte bereitgestellt. Diese erfordern aus Sicherheitsgründen jedoch bei Anwendung immer ein Eingreifen des Datenbankadministrators. Die im Fehlerfall zu treffenden Maßnahmen können sehr unterschiedlich sein und sollten daher nicht automatisiert ablaufen. Ausblick Die durch ORDIX geschaffene Lösung soll in Zukunft wie folgt ausgebaut werden: • • • • Erweiterung des Reporting-Schemas in der Katalogdatenbank um Informationen über er­folgreich durchgeführte und fehlgeschlage­ ne Backups sowie automatische Befüllung desselben Automatisiertes Protokollieren der RMANFehlermeldungen sowie der Backup-Laufzeiten und -Volumen im Reporting-Schema Erstellen einer graphischen Benutzeroberfläche zur übersichtlichen Darstellung der Informationen Entwicklung eines Abrechnungssystems auf Basis der im Reporting-Schema vorgehalte­ nen Daten Aufwand Der Aufwand für Entwicklung, Test und Implementierung der hier vorgestellten Lösung belief sich auf ca. 35 Personentage. Fazit Mit dem von ORDIX entwickelten Verfahren lassen sich Datenbanksicherungen selbst in gro­ ßen und komplexen Umgebungen leicht durchführen. Durch eine zentrale Datenhaltung im zusätzlichen Reporting-Schema sind Informationen über die Backups der gesamten Datenbanklandschaft einfach und schnell verfügbar. Der bei diesem Projekt von ORDIX verfolgte Ansatz, die Komplexität einer Aufgabenstellung durch ein Herunterbrechen auf die Ebene der Datenbank deutlich zu reduzieren, ließe sich sicher auch in anderen Umgebungen anwenden. Profitieren Sie von unserer Erfahrung und steigern auch Sie die Performance und Zuverlässigkeit Ihrer Backups. Fordern Sie uns! Klaus Reimers ([email protected]). ORDIX News 4/2008 27 Seminartermine - heraustrennbare Übersicht - 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 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 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 Wiesbaden 550,00 890,00 1890,00 890,00 1290,00 1890,00 1890,00 1990,00 1990,00 1990,00 1990,00 1990,00 1990,00 1990,00 1290,00 1590,00 1590,00 1290,00 1290,00 1290,00 1790,00 1990,00 1990,00 1290,00 590,00 1590,00 1890,00 1990,00 1290,00 1190,00 1890,00 790,00 1690,00 1190,00 1690,00 1690,00 1690,00 1190,00 1190,00 890,00 1190,00 1190,00 1690,00 1690,00 1690,00 590,00 1290,00 1590,00 1590,00 1590,00 1190,00 1190,00 1690,00 1290,00 1190,00 1190,00 1390,00 1190,00 1690,00 1690,00 1690,00 1190,00 1290,00 1490,00 1990,00 1990,00 1990,00 1990,00 1290,00 890,00 1990,00 590,00 1190,00 1190,00 890,00 1990,00 1290,00 1290,00 *) Preise pro Seminar pro Teilnehmer in Euro. Alle Preise gelten zzgl. ges. MwSt. **) Inhousepreise auf Anfrage. Für Informationen und Fragen zu individuell zugeschnittenen Seminaren, Ausbildungsreihen oder Inhouse-Schulungen stehen wir jederzeit gerne zur Verfügung. Auf Wunsch senden wir Ihnen auch unser komplettes Seminarprogramm zu. 28 ORDIX News 4/2008 KW 17 KW 16 KW 15 KW 14 April KW 13 KW 12 KW 11 KW 10 März KW 9 KW 8 KW 7 KW 6 Februar KW 5 KW 4 KW 3 Januar KW 2 Preis in EURO*)**) http://training.ordix.de Online-Anmeldung und stets aktuelle Seminarinhalte und Termine! KW 33 KW 32 KW 31 Aug. KW 30 KW 29 KW 28 KW 27 Juli KW 26 KW 25 KW 24 KW 23 Juni KW 22 KW 21 KW 20 KW 19 KW 18 Mai Januar - August 2009 Preis in EURO*)**) 550,00 890,00 1890,00 890,00 1290,00 1890,00 1890,00 1990,00 1990,00 1990,00 1990,00 1990,00 1990,00 1990,00 1290,00 1590,00 1590,00 1290,00 1290,00 1290,00 1790,00 1990,00 1990,00 1290,00 590,00 1590,00 1890,00 1990,00 1290,00 1190,00 1890,00 790,00 1690,00 1190,00 1690,00 1690,00 1690,00 1190,00 1190,00 890,00 1190,00 1190,00 1690,00 1690,00 1690,00 590,00 1290,00 1590,00 1590,00 1590,00 1190,00 1190,00 1690,00 1290,00 1190,00 1190,00 1390,00 1190,00 1690,00 1690,00 1690,00 1190,00 1290,00 1490,00 1990,00 1990,00 1990,00 1990,00 1290,00 890,00 1990,00 590,00 1190,00 1190,00 890,00 1990,00 1290,00 1290,00 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 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 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 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: bzw. E-Mail: Online-Anmeldung: 0180 1 ORDIX 0 0180 1 67349 0 [email protected] http://training.ordix.de ORDIX News 4/2008 29 Datenbanken Oracle Enterprise Manager Grid Control (Teil V): Die Wartungsfunktion imp/exp in Grid Control Dieser Artikel wendet sich an Datenbankadministratoren, die mehrere Oracle Datenbanken über eine zentrale Schnittstelle warten wollen. Nachdem der Teil 4 dieser Reihe [1] sich eingehend mit den Möglichkeiten der Admi­ nis­tration unter Verwendung des Oracle Enterprise Managers Grid Control auseinandergesetzt hat, sollen in dieser Ausgabe die Funktionen zur Wartung von Oracle Datenbanken im Enterprise Manager beleuchtet werden. Den Schwerpunkt legen wir hierbei auf die Funktionen zum Im- und Export von Daten. Übersicht Um zur Wartungsseite für Oracle Datenbanken im EM Grid Control zu gelangen, muss zunächst unter „Ziele Datenbanken“ die gewünschte Zieldatenbank ausgewählt werden. Nachdem man so auf die Übersichtsseite (im EM als Standardverzeichnis bezeichnet) des Zielsystems gelangt ist, findet sich neben den Reitern „Standardverzeichnis“, „Performance“ und „Administration“ auch die „Wartung“. Die Wartungsseite des EM Grid Control (siehe Abbildung 1) gliedert sich auf den ersten Blick in die drei Bereiche • • • High Availability Verschieben von Daten Software-Deployments Alle drei Bereiche haben jeweils eine Reihe von Unterpunkten. High Availability 30 ORDIX News 4/2008 Kunden steuern die Backups fast ausschließlich über die zentralen Backup Tools, wie TSM, Networker, Data Protector etc. Die­se Vorgehensweise halten wir in größeren Umgebungen auch für absolut richtig. Lediglich in kleineren Umgebungen, in denen ohne zentrales Werkzeug gearbeitet wird, kann über das Aufsetzen eines Backup über EM Grid Control nachgedacht werden. Software Deployment Die Funktionen für Software Deployment unterstützen den Administrator beim Vergleich von Konfigurationen verschiedener Zielsys­ teme und beim Einspielen von DatenbankPatches. Alle hier angebotenen Funktionen finden sich allerdings auch unter dem übergeordneten Menüpunkt „Deployments“ wieder. Dieser Menüpunkt wird Thema eines eigenen Artikels dieser Serie sein. Aus diesem Grund werden wir an dieser Stelle den Bereich „Software Deployment“ nicht weiter betrachten. Hinter High Availability verbergen sich im Wesentlichen Funktionen zum Erzeugen und Einspielen eines Backup per RMAN und Oracle Secure Backup, aber auch ein Assistent zur Einrichtung und Verwaltung von Standby-Datenbanken mit Data Guard. Verschieben von Daten Diese Funktionalitäten werden in der Praxis über Grid Control nicht häufig genutzt. Unsere Die unter diesem Punkt vorhandenen Optionen ermöglichen das Importieren und Exportieren Da der Themenbereich „Verschieben von Daten“ den Schwerpunkt dieses Artikels bildet, werden wir im Folgenden detailliert auf die unterschiedlichen Optionen eingehen. Datenbanken von Daten aus der bzw. in die ausgewählte Zieldatenbank. Dabei können unterschiedliche Techniken wie SQL*Loader, Data Pump, Import/Export, Transportable Tablespaces, Oracle Streams, oder das Klonen von ganzen Datenbanken mittels RMAN zum Einsatz kommen. Versionsabhängigkeit Da nicht alle diese Techniken auf jedem Zielsystem verfügbar sind, kann die Anzahl der an dieser Stelle angebotenen Optionen bzw. deren Funktionsumfang mit dem Versionsstand der angesprochenen Zieldatenbank schwanken. So wurde zum Beispiel Data Pump erst mit Oracle 10g eingeführt. Die Funktion „aus Datenbank importieren“, die Daten mittels Data Pump über einen Datenbank-Link zwischen zwei Systemen kopiert, kann auf einer Zieldatenbank der Version 9i nicht funktionieren und wird daher im EM Grid Control bei einer Datenbank in der Verion 9 auch nicht angeboten. In den folgenden Beschreibungen gehen wir daher von einer Zieldatenbank in der Version 10g oder höher aus. Export in Dateien Abb. 1: Die Wartungsseite des EM Grid Control mit den drei Bereichen „High Availability“, „Verschieben von Daten“ und „Software-Deployments“. Die Funktion „In Exportdateien exportieren“ ermöglicht es, die Daten einer Datenbank in Dateien zu schreiben, um diese zu archivieren oder in einer anderen Datenbank weiterzuverwenden. Dies geschieht mit Hilfe von Data Pump. Wie bei einem manuellen Aufruf von Data Pump kann auch hier zwischen den Exportmodi full, schema, table und tablespace gewählt werden. Der Modus transportable steht an dieser Stelle nicht zur Auswahl, da die Erzeugung von transportablen Tablespaces im EM in einen eigenen Menüpunkt auf der Wartungsseite ausgelagert wurde. Je nachdem, welchen Modus man ausgewählt hat, können in weiteren Schritten die zu exportierenden Objekte gewählt werden, die maximale Anzahl von Threads für den ExportJob sowie gegebenenfalls der Pfad für die Logdatei gesetzt werden. Nachdem das Zielverzeichnis für den Export bestimmt wurde, kann der soeben erstellte Export-Job entweder sofort gestartet oder als Job für einen späteren Zeitpunkt geplant werden. Import aus Dateien Der Link „Aus Exportdateien importieren“ führt zu der zum eben beschriebenen Export Abb. 2: Import-Jobs können sofort oder per dbms_scheduler zu einem späteren Zeitpunkt ausgeführt werden. ORDIX News 4/2008 31 Datenbanken passenden Importfunktion. Auch hier kann im ersten Schritt der Umfang des Imports bestimmt werden. Zur Auswahl stehen die Modi „ganze Dateien“, „Schemas“, „Tabellen“ und „Tablespace“. Nachdem der Nutzer sich für einen Modus entschieden und die zu lesende Exportdatei angegeben hat, wird diese zunächst gelesen und analysiert. hinzugefügt werden und in welchen Tablespace sie geschrieben werden sollen. Wie beim Export kann auch der erstellte ImportJob entweder sofort oder später per Job ausgeführt werden. Anschließend besteht in Abhängigkeit vom zuvor gewählten Importmodus die Möglichkeit, auszuwählen, welche Objekte aus der angegebenen Datei importiert werden sollen. Im Modus „Schema“ kann der Anwender wählen, ob er die gewünschten Schemata direkt in die Datenbank importieren möchte, oder ob die Objekte eines zu importierenden Schemas in ein bereits bestehendes Schema der Datenbank eingefügt werden sollen. Beim direkten Import muss darauf geachtet werden, dass in der Datenbank bisher kein gleichnamiges Schema vorhanden ist, da ansonsten eine Fehlermeldung erfolgt. Der Unterschied zwischen den beiden Funktionen „Import aus Dateien“ und „Import aus einer Datenbank“ besteht darin, dass die Daten beim Import aus einer Datenbank nicht in einer Datei zwischen zwei Systemen transferiert werden, sondern über einen DatenbankLink direkt aus der Quelldatenbank gelesen werden. Hierzu kann ein bestehender Datenbank-Link verwendet oder direkt aus dem Auswahlprozess heraus ein neuer Link erstellt werden. Als Technologie für den Transfer kommt auch hier Data Pump zum Einsatz. Daher sind die Auswahlmöglichkeiten für den Anwender prinzipiell die gleichen wie bei dem bereits beschriebenen Import aus Dateien (sie­he Abbildung 2). Ähnlich verhält es sich im Modus „Tabellen“. Auch hier kann man entscheiden, welchem Zielschema in der Datenbank die Tabellen Import per Datenbank-Link SQL*Loader Neben dem Import über die eigenen Exportformate von Oracle darf an dieser Stelle natürlich auch nicht eine Importmöglichkeit z. B. für csv-Dateien fehlen. Diese verbirgt sich hinter dem Link „Daten aus Benutzerdateien laden“. Der erste Schritt beim csv-Import besteht darin, zu wählen, ob die Daten mit Hilfe einer bestehenden Kontrolldatei geladen werden sollen oder ob die benötigte Kontrolldatei vom EM erzeugt werden soll. Entscheidet man sich für eine bestehende Datei, so ist als nächstes der Pfad dorthin anzugeben und zu bestimmen, ob die Datendatei durch die Kontrolldatei bestimmt oder explizit angegeben werden soll. Überlässt man die Erstellung der Kontrolldatei dem EM, so muss zunächst der Pfad zur Datendatei angegeben werden. Diese kann entweder auf dem Datenbankserver oder auf dem Rechner des Anwenders, von dem aus Grid Control bedient wird, liegen. Ziel des Imports kann sowohl eine bestehende als auch eine per Assistent neu zu erstellende Tabelle sein. Abb. 3: Erstellung einer Kontrolldatei für dem Import von csv-Dateien mit Hilfe des EM Grid Control. 32 ORDIX News 4/2008 Für die Erstellung der Kontrolldatei zeigt der EM eine Beschreibung der Zieltabelle und eine Vorschau auf die befüllte Tabelle. Nun kann der Anwender unter anderem festlegen, welche Spalten der Tabelle zu befüllen sind, Datenbanken durch welches Zeichen die Daten in der csvDatei getrennt sind und ob Spalten mit einem Default-Wert gefüllt werden sollen, falls in der Datei kein passender Datensatz vorhanden ist. Durch einen Klick auf „Dateiformatattribute anwenden“ kann jederzeit überprüft werden, wie sich die vorgenommenen Änderungen auf den Ladevorgang auswirken, da mit jedem Klick die Vorschau auf die befüllte Zieltabelle aktualisiert wird (siehe Abbildung 3). Als Lademethoden stehen „conventional path“, „direct path“ und „parallel direct path“ zur Verfügung. Die Einschränkungen der beiden letztgenannten Methoden werden auf der Seite erklärt, so dass der Anwender sich gezielt entscheiden kann. Abschließend können Optionen, wie das Überspringen von anfänglichen Zeilen oder ein Jobabbruch nach einer bestimmten Anzahl von Fehlern, festgelegt werden. Turbo für große Objekte Für den Fall, dass nicht nur einzelne Datenbankobjekte, sondern ganze Tablespaces oder gar komplette Datenbanken repliziert werden sollen, bietet der EM zwei Alternativen zu den bereits beschriebenen Methoden, die bei großen Datenmengen deutliche Zeitgewinne versprechen: • • Transportable Tablespaces Soll ein einzelner Tablespace kopiert werden, ermöglicht Grid Control dies über die Verwendung von transportablen Tablespaces. Dazu wird der betroffene Tablespace zunächst in den schreibgeschützten Modus versetzt. Anschließend werden die Metadaten des Tablespaces aus dem Data Dictionary in eine Datei geschrieben und die Datendateien des Tablespaces per Data Pump mit der Option „transportable tablespace“ kopiert. Danach kann der originale Tablespace wieder für Schreibvorgänge geöffnet werden. Klone erstellen Klone ganzer Datenbanken mittels RMAN können mit dem Assistenten „Datenbank clonen“ erstellt werden. Dieser führt automatisiert folgende Schritte aus: 1. Kopieren der Datenbankdateien mittels RMAN 2. Übertragen der Dateien auf das Zielsystem 3. Wiederherstellen des Klons mittels gespeicherter Archivelogs 4. Öffnen des Klons mit der Option Resetlogs Glossar Oracle EM Grid Control Oracle Enterprise Manager Grid Control. Nachfolger des Oracle Management Server mit erweitertem Funktionsumfang. Ermöglicht über Plug-In auch das Monitoring und die Administration von Produkten anderer Hersteller. Oracle Streams Funktionalitäten, mit denen Daten zwischen Datenbanken verteilt werden können. RMAN Recovery Das Werkzeug von Oracle zur Sicherung und Wiederherstellung von Manager Datenbanken (Backup, Restore, Recovery und Konvertierung). Transportable Tablespace Ein Verfahren, um sehr einfach und schnell Tablespaces von einer Oracle Datenbank in eine andere zu übertragen. Links ►► [1] Oracle EM Grid Control (Teil IV): Datenbankadministration mit Grid Control: http://www.ordix.de/ORDIXNews/3_2008/Datenbanken/DB_Administration_ Grid_Control.html ►► [2] Oracle Enterprise Manager Grid Control (Teil III): SQL Tuning mit Grid Control: http://www.ordix.de/ORDIXNews/2_2008/Datenbanken/wib_grid_t3.html ►► [3] Oracle Enterprise Manager Grid Control (Teil II): Installation und Konfiguration: http://www.ordix.de/ORDIXNews/4_2007/Datenbanken/Grid_Control_teil2.html ►► [4] ORDIX News Artikel „Überblick über Oracle Grid Control“: http://www.ordix.de/ORDIXNews/2_2007/Datenbanken/oracle_grid_control.html ►► [5] Seminarempfehlung „Oracle Grid Control“: http://training.ordix.de/seminar.php?nr=552 ►► [6] Informationen zum EM Grid Control von Oracle: http://www.oracle.com/enterprise_manager/index.html ►► [7] Dokumentation zum EM Grid Control: http://www.oracle.com/technology/documentation/oem.html Streams Auch die Replikation von Daten zwischen zwei Systemen mittels Streams Replication und Advanced Queuing wird von EM Grid Control unterstützt. Dieses Thema wird hier aber aufgrund seines Umfangs nicht weiter behandelt. Fazit Der Enterprise Manager Grid Control bietet eine Menge von Optionen für den Import und Export von Daten aus einer bzw. in eine Oracle Datenbank. Die Assistenten für diese Funktionalitäten wirken übersichtlich und durchdacht. Sie vereinfachen dem Adminis­ trator die Arbeit im Vergleich zur Kommandozeile an vielen Stellen. Roman Peters ([email protected]). ORDIX News 4/2008 33 IT-Strategie Reihe SOA (Teil II): SOA-Governance Braucht SOA eine neue Regierung? Dieser Artikel richtet sich an Entscheider, SoftwareArchitekten und Entwickler, die sich mit SOA vertraut machen wollen. Stellen Sie sich ein Fußballspiel ohne einen Schiedsrichter vor. Meinen Sie, es könnte funktionieren? Genau wie ein Fußballspiel ohne einen Schiedsrichter im Chaos enden würde, ist auch eine serviceorientierte Architektur (SOA) ohne SOA-Governance zum Scheitern verurteilt. Demzufolge ist eine Governance für SOA von entscheidender Bedeutung. Nachdem im Teil 1 dieser Reihe [1] die Grundlagen von SOA beleuchtet wurden, beschäftigt sich dieser Artikel mit der serviceorientierten Organisation. Wozu SOA-Governance? Wird eine SOA in einem Unternehmen ohne eine zentrale Steuerungseinheit eingeführt, so können sehr schnell redundante Implementierungen von Services mit geringer Wiederverwendung entstehen. Damit SOA in der Praxis nicht im Chaos endet, sollten schon am Anfang eines SOA-Vorhabens unter anderem folgende Fragen be- 34 ORDIX News 4/2008 antwortet und entsprechende Maßnahmen ergriffen werden: • • • Wie stelle ich einen neuen Service zur Verfügung? Wie können andere diesen Service finden? Welche Services gibt es im Unternehmen? Werden diese Fragen vernachlässigt, so ist das SOA-Projekt von vornherein zum Scheitern verurteilt. IT-Strategie Motivation Da in heutigen Unternehmen die IT meist vertikal, entsprechend der Geschäftsbereiche, organisiert ist, wird die Verantwortung der Unternehmensanwendungen ebenfalls vertikal an den Geschäftsbereichen ausgerichtet (siehe Abbildung 1). Warum sind Änderungen am Gesamtprozess sehr teuer? Applikation 1 Applikation 2 Applikation 3 1. Geschäftsprozess wird geändert GUI Prozess Die Grundidee der SOA, die am Geschäftsprozess ausgerichteten Services über verschiedene Bereiche hinweg mehrfach zu verwenden, steht somit konträr zur klassischen Verantwortung von IT-Anwendungen (siehe Abbildung 2). An dieser Stelle stellt sich die Frage, welche Interessen ein Geschäftsbereich an der Bereitstellung von Services hat, die durch andere Bereiche genutzt werden können? Diese Frage lässt sich mit ausschließlichem Fokus auf einen Geschäftsbereich nicht beantworten. Da SOA insbesondere dann Mehrwert schafft, wenn bereichsübergreifende Unternehmens­ interessen verfolgt werden, ist ein zentrales Management der Services im Unternehmen unabdingbar. Funktionen (Dienste) Daten 2. Funktionalität wird doppelt implementiert 3. Daten werden (mehrmals) ausgetauscht Abb. 1: Säulen einer gewachsenen IT-Landschaft. GUI Prozess Was ist SOA-Governance? Mit dem Begriff SOA-Governance ist, vereinfacht gesagt, ein Steuerungsmechanismus gemeint, mit dem Rollen und Zuständigkeiten zur Regulierung und Kontrolle einer SOA festgelegt werden. Demzufolge kann SOA auch als ein Managementkonzept bezeichnet werden. Vergleicht man SOA-Governance mit der klassischen IT-Governance, so kann man sagen, dass SOA-Governance eine Spezialform bzw. eine Weiterentwicklung der IT-Governance darstellt. Deshalb verfolgt SOA-Governance dieselben Ziele wie eine IT-Governance - mit der Erweiterung um serviceorientierte Aspek­te. Abbildung 3 zeigt die Einordnung von SOA-Governance in eine unternehmensweite Governance-Hierarchie. Die wesentlichen Aufgaben einer SOA-Gover­ nance sind: • • • Service-Lifecycle-Management Service-Portfoliomanagement Service-Designprozess und Standards Funktionen (Dienste) Daten System A System B System C Abb. 2: SOA als Balken in der IT-Landschaft. Service-Lifecycle-Management Vergleicht man den Lebenszyklus einer herkömmlichen Anwendung mit einem ServiceLifecycle, so stellt man einen wesentlichen Unterschied fest: Im klassischen Fall handelt es sich in der Regel um eine Anwendung mit nur einem so genannten Software-Lebenszyklus. Bei einer SOA werden Services mit einer geringen Größe und Granularität zu einer Anwendung zusammengeschlossen. Dabei verfügen die Services dann auch jeweils über einen eigenen Software-Lebenszyklus (siehe Abbildungen 4 und 5). ORDIX News 4/2008 35 IT-Strategie Da die einzelnen Services in der Regel von mehreren Servicekonsumenten aufgerufen wer­den, wird oft die Anforderung nach einer Versionierung und dem parallelen Betrieb von mehreren Serviceversionen gestellt. Auch die­ se Anforderung stellt einen Unterschied zum Lebenszyklus klassischer Anwendungen dar, wo in der Regel immer nur eine Version der Anwendung im Betrieb ist. Service-Portfoliomanagement Mit Service-Portfoliomanagement ist eine struk­turierte Verwaltung der Meta-Informatio­ Corporate Governance Technologie-Governance nen (Servicebeschreibung) der einzelnen Services in einer so genannten Service-Registry/ Repository gemeint. Dabei werden auch die Abhängigkeiten der Services untereinander gepflegt. Das Ziel ist hierbei eine zentrale Erfassung und Veröffentlichung von Services, damit die­ se anschließend von Service-Konsumenten gefunden und genutzt werden können. Service-Designprozess und Standards Eine weitere, wesentliche Aufgabe von SOAGovernance ist das Festlegen von Designprozessen und -standards für Services. Nur mit einem eindeutig definierten Designprozess für Services kann ein reibungsloser Verlauf bei der Entwicklung ermöglicht werden. Zusätzlich müssen bereits in den ersten Phasen bei der Einführung von SOA so genannte Service-Designstandards und Technologiestandards eingeführt werden. IT-Governance SOA-Governance Rollen in einer SOA Da SOA in einem Unternehmen nicht nur definiert sondern auch aktiv gelebt werden muss, müssen zwingend einige neue Rollen definiert werden. Eine Rolle ist dabei nicht mit einer Stelle gleichzusetzen. Die Ausgestaltung eines Rollenmodells ist in der Regel sehr unternehmensspezifisch. Die in einem Unternehmen bereits vorhandenen Rollen sollten dabei unbedingt berücksichtigt werden. Abb. 3: Governance-Hierarchie. Application-Lifecycle Service-Lifecycle Zu einem SOA-Rollenmodell gehören unter anderen folgende Rollen: • • • • • SOA-Governance Application Service 1 Service 2 Abb. 4: Unterschied zwischen dem Lebenszyklus klassischer Anwendungen und dem von Services. 36 ORDIX News 4/2008 Domänenverantwortlicher SOA-Architekt Geschäftsprozess-Designer Service-Modellierer Service-Entwickler Der Domänenverantworliche (Domain Owner) ist verantwortlich für eine oder mehrere Geschäftsdomänen. Unter einer Geschäftsdomäne ist hierbei eine logische Zusammenfassung fachlicher Services und Daten zu verstehen, die in einer engen Beziehung zueinander stehen. Das Besondere an dieser Rolle ist, dass diese einen großen Einfluss auf die strategische Weiterentwicklung der Domänen und eine enge Verbindung zu den Geschäftsebenen hat. IT-Strategie Bedarf Betrieb e D Die Aufgabe eines Geschäftsprozess-De­ signers besteht hauptsächlich in der konkreten modelltechnischen Umsetzung der von den SOA-Architekten vorgegebenen Geschäftsprozesse. Dabei werden die Prozesse durch eine geeignete Komposition atomarer Services realisiert. Schließlich ist der Service-Modellierer für die ausführliche Dokumentation der Dienstschnittstelle verantwortlich. Werden die Services z. B. mit Web-Services realisiert, so erstellt der Service-Modellierer die WSDL-Beschreibung (Web Services Description Languages). Anschließend wird der so modellierte Service durch den Service-Entwickler implementiert. Abb. 5: Service-Lifecycle-Management. Glossar SOAGovernance Als SOA-Governance (auch Service Governance genannt) werden die Aktivitäten, Entscheidungen, Rollen und Verantwortlichkeiten zur Regulierung und Kontrolle einer serviceorientierten Architektur (SOA) bezeichnet. Konflikte sollen dabei nicht vermieden werden, sondern durch standardisierte und akzeptierte Prozesse ausgetragen werden. Toolchain Toolchain bezeichnet eine Kette von Software-Werkzeugen, bei denen das Ergebnis (Output) von einem Werkzeug als Quelle (Input) für ein weiteres Werkzeug verwendet wird. Somit kann eine lückenlose Entwicklung von Software von der Design- bis zur Implementierungsphase ermöglicht werden. Domain Mit einer Domain (Domäne) ist die Kapselung von logisch zusammengehörenden Services in einer diskreten Einheit gemeint, die eine Schnittstelle zum Zugriff von Außen anbietet. Corporate Governance Mit diesem Begriff sind Methoden, Strukturen und Instrumente zur Leitung und Überwachung von Organisationen gemeint. Resümee Zusammenfassend kann gesagt werden, dass SOA-Governance eine grundlegende Voraussetzung zu einer langfristig erfolgreichen SOA darstellt. Dabei dürfen Herausforderungen auf der organisatorischen Ebene nicht unterschätzt werden. Durch die Verlagerung und Änderung von Verantwortlichkeiten in einem Unternehmen kann sehr schnell Konfliktpotenzial entstehen. Test Grundsätzlich kann gesagt werden, dass die Rolle des SOA-Architekten eine Schlüsselposition bei der Entwicklung neuer Services für eine SOA darstellt. En e ym plo nt SOA Governance Design Der technische SOA-Architekt dagegen hat primär einen technologischen Schwerpunkt. Zusätzlich modelliert der technische Architekt zusammen mit dem Geschäftsprozessdesigner die Geschäftsprozesse auf der technischen Ebene unter Berücksichtigung der Vorgaben des fachlichen SOA-Architekten. n e & tio ys ifika A Idenal nt Außerbetriebnahme g lun ick tw Die Rolle eines SOA-Architekten wird in der Regel in technische und fachliche Aspekte aufgeteilt. Der so genannte fachliche SOAArchitekt führt in der Regel die Anforderungsanalyse durch und hat eher einen fachlichen Fokus. IT-Governance IT-Governance liegt in der Verantwortung des Managements und ist ein wesentlicher Bestandteil der Unternehmensführung. IT-Governance stellt Methoden, Strukturen und Instrumente bereit, mit denen gewährleistet wird, dass die IT die Unternehmensstrategie und -ziele unterstützt. Eine erfolgreiche SOA-Governance muss alle Artefakte des SOA-Lebenszyklus nicht nur umfassen, sondern diese im wahrsten Sinne des Wortes regieren. Links ►► [1] ORDIX News Artikel „Was ist SOA?“: http://www.ordix.de/ORDIXNews/3_2008/IT-Strategie/Ueberblick_SOA.html ►► [2] Seminarempfehlung „Java Web Services“: http://training.ordix.de/seminar.php?nr=266 Markus Fiegler ([email protected]). ORDIX News 4/2008 37 Datenbanken Oracle Database 11g Release 1 (Teil V): Neuerungen Data Pump in Oracle 11g Der Artikel richtet sich an Datenbankadministratoren und -entwickler, die Daten in die Datenbank exportieren bzw. importieren wollen. In Oracle 10g wurde Data Pump als Nachfolger für die Tools Export/Import eingeführt. Mit Oracle 11g wurden neue Funktionen im Bereich Data Pump hinzugefügt, auf die im Folgenden näher eingegangen wird. Komprimierung von Dump File Sets Die von Data Pump erzeugten Datenfiles (Dumpfiles) können nun auch komprimiert werden. Dafür wird beim Export-Kommando expdp ein Parameter COMPRESSION angegeben. Dadurch kann man bestimmen, was man komprimieren möchte. Es gibt drei Möglichkeiten: 1. Nur die Metadaten (DDL-Statements) 2. Die Dateninhalte 3. Alle Export-Daten (Metadaten + Daten) Ein Dumpfile ohne Komprimierung zu erzeugen, ist natürlich auch weiterhin möglich und nach wie vor die Standardeinstellung. Die Art der Komprimierung ist mit dem gzip-Algorithmus vergleichbar. Dadurch ist die Stärke der erreichten Komprimierung, wie bei anderen Komprimierungsalgorithmen auch, stark von den Dateninhalten und Datentypen abhängig. Die Komprimierungsalgorithmen gehen bei der Komprimierung so vor, dass Zeichenfolgen, die mehrfach vorkommen, ersetzt werden. Somit werden Daten, in denen gleiche Zeichenfolgen enthalten sind, stärker komprimiert, als Daten, in denen das nicht der Fall ist. Um Data Pump Files komprimieren zu können, wird eine Lizenzierung der Option Advanced Compression benötigt. Data Pump Encryption Auch wenn die von Data Pump erzeugten Dumpfiles nur von Data Pump verarbeitet werden können, sind sie noch lange nicht sicher. In 38 ORDIX News 4/2008 Oracle 10g war es bereits möglich, verschlüsselte Spalten auch als solche zu exportieren bzw. zu importieren. Damit die Daten nun auch vollständig gesichert im Dateisystem abgelegt werden, können nun die kompletten Dumpfiles verschlüsselt werden. Dabei lässt sich die Verschlüsselung wahlweise nur für den Dateninhalt, nur für die Metadaten oder für das gesamte Dumpfile aktivieren. Die Verschlüsselung kann entweder durch ein Passwort, über ein Datenbank-Wallet (Advanced Security Option) oder beides in Kombination erfolgen. Durch die eingesetzte Verschlüsselung oder auch durch die Kompression kann eine höhere CPU-Last auftreten. Auf CPU-schwachen Sys­ temen können sich dadurch längere Exportzeiten ergeben. Data Pump Data Remapping Mit Hilfe von Data Remap ist man nun in der Lage, Daten während des Ex- oder Imports zu verändern. Interessant ist, dass z. B. Produktionsdaten, die für eine Testumgebung genutzt werden, anonym bleiben müssen. Dies kann über den Parameter REMAP_DATA bei expdp oder impdp erreicht werden. Um Remap nutzen zu können, müssen bestimmte Voraussetzungen erfüllt werden. Als erstes benötigt man eine PL/SQL-Funktion für die Spalte, die gemappt werden soll. Dieser wird der aktuelle Wert der Spalte übergeben, als Rückgabe erhält man einen neuen Wert. Damit das ohne Probleme funktionieren kann, müssen sowohl Eingabe- als auch Ausgabewerte der zu anonymisierenden Spalte vom Datenbanken gleichen Datentyp sein. Abbildung 1 zeigt ein Beispiel für die Anonymisierung von Daten. Gegeben ist eine Tabelle mit drei Spalten. Die erste Spalte enthält den Namen, die zweite eine Kreditkartennummer und die dritte einen Betrag, über den die Kreditkarteninhaber verfügen können. Nun wird ein Package erstellt, in dem eine Funktion enthalten ist. Dieser Funktion wird die Kreditkartennummer aus unserer Tabelle übergeben. Innerhalb der Funktion wird das Paket dbms_random genutzt, um aus der übergebenen Kreditkartennummer eine neue Zufallszahl zu generieren, die als neue Kreditkartennummer fungiert. Damit der Spalte Kreditkartennummer auch die Funktion zugeordnet werden kann, wird die in Abbildung 2 dargestellte Syntax benötigt. Name Kreditkartennr Betrag Müller 12345678 2000 Meier 99997777 5000 Schulze 56567878 3000 v_nummer:=12345678 Funktion aendere_Kreitkartennummer v_neu:=dbms_random.random(v_nummer); return v_neu; v_neu:=16162727 Name Kreditkartennr Betrag Müller 16162727 2000 Meier 90908080 5000 Schulze 43218765 3000 Somit wird beim Export der Daten in unserer Tabelle pro Datensatz eine neue Kreditkarten­ nummer generiert. Abb. 1: Anonymisierung von Daten. Export/Import von AQ-Tabellen mit Data Pump remap_data=<schema>.<tabelle>.<spalte>:<schema>.<package>.<function> Eine Queue-Tabelle ist eine Warteschlange, in der Nachrichten vom System abgelegt werden. Jede Zeile dieser Tabelle repräsentiert eine Nachricht. Queue-Tabellen werden dazu genutzt, um Nachrichten zwischen Applikatio­ nen auszutauschen. Mit Oracle 11g wird der Export einzelner Queue-Tabellen vollständig unterstützt. Dies hat den Vorteil, dass nur noch die Queue-Tabelle als exportierendes Objekt angegeben werden muss. Alle zugehörigen Objekte wie Indexe, Tabellen usw. werden nun automatisch mit ex- oder importiert. Um Queues zu exportieren und zu importieren, war es in Oracle 10g noch notwendig, ein Full Database Backup durchzuführen. Eine Übertragung nur einer ausgewählten Queue-Tabelle und somit ausgewählter Queues war nicht möglich bzw. wurde von Oracle nicht unterstützt. Folgende Export-Modi werden nun unterstützt: • • REPLACE: Eine vorhandene Queue-Tabelle wird gelöscht und durch die importierte ersetzt. SKIP: Eine vorhandene Queue-Tabelle wird nicht importiert. Truncate und Append werden dabei als Export-Modi nicht unterstützt. Abb. 2: Syntax für die Zuordnung der Funktion zur Spalte Kreditkartennummer. Glossar Data Pump Werkzeug zum Extrahieren und Importieren von Strukturen und Daten einer Oracle Datenbank ab der Version Oracle Database 10g. Queue-Tabelle Eine Warteschlange, in der Nachrichten vom Datenbanksystem abgelegt werden. Link ►► [1] Oracle 11g Dokumentation: http://www.oracle.com/pls/db111/homepage Fazit Durch die Neuerungen in 11g wurden die Möglichkeiten zum Im- und Export mit Data Pump weiter ausgebaut. Die Sicherheit im Umgang mit Daten wurde verbessert. Auch wurde durch die neuen Funktionen der Arbeitsaufwand verringert, da nun einige Aktionen automatisch mit ausgeführt werden. Alles in allem sind dies Neuerungen, die sicher schnell von „Oraclern“ angenommen werden. David Bottländer ([email protected]). ORDIX News 4/2008 39 Open Source System-Logging unter Linux und Unix – syslog-ng (Teil II): Zentrale Speicherung von Logfiles ... aber bitte verschlüsselt! Im ersten Teil dieser Reihe sind wir auf die grundlegende Konfiguration von syslog-ng eingegangen. Dieser Artikel knüpft an dieser Stelle an und erläutert unter anderem die Vorteile und Risiken der zentralen Speicherung von Logfiles. Hierdurch wird es z. B. möglich, Auswertungen über die Vorkommnisse auf allen Hosts durchzuführen und Dieser Artikel richtet sich an Systemadministratoren, die ihre Log-Meldungen zentral speichern und verschlüsselt übertragen wollen. gegebenenfalls Schwachstellen leichter zu erkennen, um sie dann auszumerzen. Da die Meldungen aber standardmäßig unverschlüsselt über das Netzwerk übertragen werden, sollte zumindest über die Möglichkeiten einer Verschlüsselung der unter Umständen sensiblen Daten nachgedacht werden. Eine Frage des Protokolls Syslog-ng bietet im Gegensatz zum alten Syslog die Möglichkeit, die Daten auch mittels TCP über das Netzwerk zu übertragen. Bevor man sich also über die Verschlüsselung der Daten Gedanken macht, ist es notwendig, die Frage nach dem richtigen Protokoll zu klären. TCP arbeitet verbindungsorientiert und garantiert, dass die Pakete in der richtigen Reihenfolge ankommen. Dies prädestiniert es für den Einsatz als Übertragungsprotokoll für LogMeldungen. Es sollte jedoch nicht unterschlagen werden, dass nicht wie bei UDP ein Port für Syslog reserviert ist. Die Firma BalaBit, die syslog-ng entwickelt hat, schlägt in ihrer Dokumentation wie schon bei UDP die Nutzung von Port 514 vor. Dieser ist aber eigentlich für rsh bzw. rcp reserviert. Man sollte sich vorher sicher sein, dass man diese Dienste nicht mehr benötigt. Falls dies der Fall ist, ist TCP die erste Wahl. Die Zentrale Damit syslog-ng Meldungen empfangen kann, ist die Konfiguration des Daemons, so wie in ORDIX News 4/2008 43 Open Source Abbildung 1 gezeigt, auf der Serverseite notwendig. Wie im ersten Teil des Artikels [1] be­schrieben, muss ein Source-Objekt eingerichtet werden, über das die Meldungen empfangen werden können. source s_tcp { tcp(ip("192.168.1.20") port(514) max-connections(100)); }; Abb. 1: Konfiguration des Daemons (auf der Serverseite), um syslog-ng Meldungen zu empfangen. destination remote { tcp("192.168.1.20" port(514)); }; log { source(src); destination(remote); }; Auf dem Client muss eine Destination eingerichtet werden. Zusätzlich wird in einer LogAnweisung festgelegt, welche Meldungen an dieses neu eingerichtete Ziel geschickt werden sollen (siehe Abbildung 2). Client Server syslog-ng syslog-ng 5140 Stunnel gesicherte Verbindung über SSL 514 Abb. 3: Die Funktionsweise von Stunnel. client = yes cert = /etc/stunnel/syslog-ng-client.pem CAfile = /etc/stunnel/syslog-ng-server.pem verify = 3 [514] accept = 127.0.0.1:5140 connect = 192.168.1.20:514 Abb. 4: Die Konfiguration von Stunnel auf dem Client. 44 Standardmäßig existiert eine Beschränkung auf zehn Verbindungen gleichzeitig. Um Meldungen von mehr als zehn Clients empfangen zu können, muss dieser Wert erhöht werden. Es sollte aber darauf geachtet werden, dass man ihn nicht zu hoch einstellt, da der Server sonst unter Umständen anfällig gegen DoSAttacken wird. Die empfangenen Meldungen müssen nun nur noch gespeichert werden z. B. in Dateien. Der Client Abb. 2: Auszug aus der Client-Konfiguration. 5140 Dieses Objekt muss festlegen, dass der Server auf dem Interface mit der IP-Adresse 192.168.1.20 und dem Port 514 Meldungen empfangen soll. Stunnel Diese beiden Zeilen führen dazu, dass alle Meldungen aus dem Source-Objekt src an das neu definierte Ziel remote geschickt werden. Dies wäre schon ein Beispiel für eine einfache Konfiguration, die dafür sorgen würde, dass der Client seine Meldungen an den Server schickt und dieser sie auch empfangen kann. SSL-Verschlüsselung mittels Stunnel In der Open Source Edition bietet syslog-ng keine eigene Möglichkeit, die Meldungen, die über das Netzwerk übertragen werden, zu verschlüsseln. An dieser Stelle kommt Stunnel ins Spiel. Stunnel ist ein universeller SSL-Wrapper, der es ermöglicht, beliebige TCP-Verbindungen mit­tels SSL zu verschlüsseln. Dafür ist es notwendig, auf dem Client und auf dem Server einen Stunnel-Daemon zu starten, der die Meldungen auf dem Client entgegennimmt und an den Server weiterleitet. cert = /etc/stunnel/syslog-ng-server.pem CAfile = /etc/stunnel/syslog-ng-client.pem verify = 3 [514] accept = 192.168.1.20:514 connect = 127.0.0.1:5140 Damit die in den Abbildungen 2 und 3 eingerichtete Verbindung durch Stunnel verschlüsselt werden kann, ist nur ein geringer Konfigurationsaufwand notwendig. Abb. 5: Die Konfiguration von Stunnel auf dem Server. Die Ports auf den Systemen werden in unserem Beispiel, wie in Abbildung 3 beschrieben, kon- ORDIX News 4/2008 Konfiguration des Daemons Open Source figuriert. Dort ist auch die generelle Funktionsweise von Stunnel erläutert. Der Client schickt die Meldungen nicht, wie oben beschrieben, direkt an den Server, sondern erst an einen lokalen Port, auf dem Stunnel lauscht. Stunnel nimmt die Meldungen an und schickt sie an das in der /etc/stunnel/stunnel.conf angegebene Ziel. Auf dem Ziel muss auch ein Stunnel-Daemon lauschen, der das passende Zertifikat besitzt, die Nachrichten entschlüsselt und sie dann an den syslog-ng weiterreicht. Die Konfiguration des Clients bzw. des Servers kann in den Abbildungen 4 und 5 nachvollzogen werden. Glossar DoS-Attacke DoS steht für Denial of Service. Das Ziel einer DoS-Attacke ist es, einen oder mehrere Dienste auf einem Server arbeitsunfähig zu machen. In der Regel wird dies durch die Überlastung des Dienstes erreicht. Stunnel Stunnel ist ein universeller SSL-Wrapper für TCP-Verbindungen (POP, IMAP, LDAP etc). Das bedeutet, Stunnel stellt SSL-verschlüsselte Verbindung für beliebige TCP-Protokolle bereit, wenn diese selbst SSL nicht oder nur fehlerhaft beherrschen. Das Programm ist kein komplettes Projekt, sondern versteht sich als Teil zu einer erfolgreichen SSL-Verschlüsselung. Deshalb wird immer auch eine SSL-Bibliothek wie z. B. OpenSSL benötigt. Link Fazit ►► [1] ORDIX News Artikel „System-Logging unter Linux und Unix“: Die zentrale Speicherung von Log-Meldungen bietet viele Vorteile und ist ohne wesentlich höheren Konfigurationsaufwand realisierbar. Wenn man jedoch einen zentralen SyslogServer plant, muss man sich auch über die Risiken im Klaren sein. Alle Daten, die unverschlüsselt über das Netzwerk übertragen werden, können brisante Informationen enthalten. Auch wenn sie verschlüsselt zum Server übertragen wurden, muss dieser so http://www.ordix.de/ORDIXNews/3_2008/Open_Source/Syslog_ng.html abgesichert sein, dass die Meldungen vor unbefugten Zugriffen geschützt sind. Dies sollte aber nicht nur bei einem zentralen SyslogServer der Grundsatz sein. Marius Dorlöchter ([email protected]). Impressum Herausgeber: ORDIX AG Aktiengesellschaft für Software­ent­wick­lung, Beratung, Schulung und Systemintegration, Paderborn Redaktion: Sascia Brinkmann V.i.S.d.P.: 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.600 Druck: Druckerei Reike GmbH, Paderborn Bildnachweis: flickr.com © Son of Groucho; flickr.com © joka2000; flickr.com©FedericoFoschini;flickr.com©GaetanLee; photocase.de © Timo Gaik; photocase.de © hardedge Autoren dieser Ausgabe: David Bottländer, Holger Demuth, Andre Dirr, Marius Dorlöchter, Lars Eisenblatt, Christian Fertsch, Karsten Fiedler, Markus Fiegler, Stefanie Heither, Andreas Jordan, Matthias Jung, Wolfgang Kögler, Roger Niemeyer, Roman Peters, Klaus Reimers, Rainer Restat 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://www.ordix.de. Schauen Sie mal rein! Der Kontakt zu unseren Lesern ist uns sehr wichtig. Für An­re­gungen, 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 [email protected]. ORDIX News 4/2008 45 Datenbanken DB2 HADR: Automatischer Failover mit TSA Der Artikel richtet sich an DB2-Administratoren, die durch den Einsatz von TSA den Failover bei HADR automatisieren wollen. DB2 beinhaltet das High Availability Disaster Recovery (HADR) schon seit der Version 8.2. Dabei wurde beim praktischen Einsatz immer bemängelt, dass es kein DB2-eigenes Verfahren für einen automatischen Failover von der primären Datenbank auf die Standby-Datenbank gab. Schon in den letzten Versionen bot IBM hierzu eine Verknüpfung mit dem IBM Tivoli System Automation (TSA) an. In der DB2 Version 9.5 ist TSA jetzt integriert und mit einem Konfigurationswerkzeug ausgestattet. Das Konzept von Tivoli System Automation Die meisten Cluster-Software Produkte arbei­ ten nach einem ähnlichen Prinzip. Tivoli System Automation bildet da keine Ausnahme. Auf jedem am Cluster beteiligten Rechner (Knoten) muss TSA installiert sein. In der Konfiguration wird vorgegeben, welche Knoten an dem Cluster beteiligt sind. Die von der TSA verwalte­ ten Ressourcen werden in so genannten Resource Groups zusammengefasst. Zusätzlich gibt es Skripte, mit denen die Ressourcen auf einem Knoten deaktiviert und auf einem anderen Knoten aktiviert werden können. Die TSA-Komponenten auf jedem Knoten prüfen regelmäßig über das Netzwerk, ob die anderen Knoten des Clusters noch vorhanden sind. Stellt ein Knoten dabei fest, dass der andere Knoten ausgefallen ist, führt er die Skripte zur Aktivierung der Resource Groups aus. Dabei übernimmt er die Ressourcen des anderen Knotens und bietet somit die Dienste des ausgefallenen Knotens an. Quorum Device Um zu verhindern, dass bei einem Netzwerk­ ausfall alle Knoten versuchen, die Ressourcen gleichzeitig zu starten, wird zusätzlich ein Quorum Device definiert. Dahinter verbirgt sich eine Netzwerkadresse, die, wenn das Netzwerk zur Verfügung steht, von allen Knoten „angepingt“ werden kann. Stellt TSA auf 46 ORDIX News 4/2008 einem Knoten fest, dass der andere Knoten und das Quorum Device nicht zu erreichen sind, werden keine Aktionen ausgeführt. TSA geht dann davon aus, dass der Knoten selbst ein Problem hat. Installation Unter den Betriebssystemen AIX und Linux bietet der DB2-Installer die zusätzliche Option „Installation SA MP Base Component“ an. Ist diese Option bei der Installation von DB2 aktiviert, wird neben DB2 auch TSA installiert und so konfiguriert, dass die Grundkomponenten von TSA aktiviert sind. Soll TSA nachträglich installiert bzw. deinstalliert werden, stehen dafür die beiden Skripte installSAM und uninstallSAM zur Verfügung. Sie sind auf dem Installationsmedium im Verzeichnis db2/<Platform>/tsamp zu finden. DB2 High Availability Instance Configuration Utility In der Version 9.1 war TSA zwar auch schon Bestandteil von DB2, musste aber mit den üblichen TSA-Kommandos konfiguriert werden. Einige Konfigurationseinstellungen mussten daher bei TSA und DB2 konfiguriert werden. Dies hat IBM ab der DB2 Version 9.5 mit dem DB2 High Availability Instance Configuration Datenbanken Utility sehr vereinfacht. Die komplette Konfiguration wird mit dem Skript db2haicu vorgenommen. Das textbasierte Werkzeug für die Konfiguration und Administration führt alle notwendigen Anpassungen an der Datenbank­ manager- und der Cluster-Konfiguration durch. Dabei müssen keine TSA- oder DB2-Kommandos verwendet werden. Vorbereitung Voraussetzung für den Einsatz von TSA ist eine funktionsfähige HADR-Umgebung und die Installation von TSA auf den beiden Datenbank-Servern. Die Primär- und die Standby-Datenbank müssen sich im Peer-Status befinden. Bevor das Tool db2haicu genutzt werden kann, muss es initialisiert werden. Dazu muss der Benutzer root auf beiden Datenbankservern das Kommando preprpnode aufrufen (siehe Abbildung 1). Dadurch wird eine TSA Domain angelegt. # preprpnode <Rechner1> <Rechner2> Abb. 1: Initialisieren von db2haicu. Do you want to validate and automate HADR failover for the HADR database SAMPLE? [1] 1. Yes 2. No 2 Abb. 2: Beenden von db2haicu auf dem Standby-System. Glossar TSA IBM Tivoli System Automation HADR High Availability Disaster Recovery Weiterhin ist es wichtig, dass der DB2-Verwaltungsserver angelegt und gestartet ist. Links Konfigurieren der Cluster-Umgebung mit db2haicu auf dem Standby-Rechner Die Konfiguration des Clusters mit dem Skript db2haicu ist auf beiden Rechnern des Clusters vorzunehmen. Der erste Schritt ist auf dem Rechner mit der Standby-Datenbank auszuführen: Hierzu ruft der Instanz-Owner das Script db2haicu auf. Der Reihe nach werden die Fragen zum Anlegen der Domain, dem Domain-Namen, der Anzahl der Knoten im Cluster, die Namen der Rechner im Cluster, IP-Adresse und Subnetz des Quorum Device und optional zur virtuel­ len IP-Adresse beantwortet. Danach ist das Skript auf dem Standby-Sys­ tem abzubrechen und auf dem Primärsystem fortzusetzen. Dies erfolgt durch Eingabe von 2 (No) auf die Frage, ob der automatisierte Failover für die Datenbank eingerichtet werden soll (siehe Abbildung 2). Konfigurieren der Cluster-Umgebung mit db2haicu auf dem Primärrechner Die Konfiguration wird fortgesetzt, indem der Instanz-Owner auf dem Primärrechner das Skript db2haicu startet. Im Dialog werden ►► [1] http://publib.boulder.ibm.com/tividd/td/IBMTivoliSystemAutomationforMultipla tforms2.2.html ►► [2] ORDIX News Artikel „High Availability Disaster Recovery“: http://www.ordix.de/ORDIXNews/2_2005/db2_hadr.html ►► [3] ORDIX News Artikel „Installation und Konfiguration von DB2 High Availability Disaster Recovery“: http://www.ordix.de/ORDIXNews/3_2005/db2_hadr_t2.html hier nur die Fragen nach dem Cluster-Mana­ ger beantwortet und danach das automatische Failover für die Datenbank eingerichtet. Damit ist die Konfiguration abgeschlossen. Die angelegten Ressourcen lassen sich mit dem Kommando lssam von der Kommandozeile anzeigen. Fazit Die Ergänzung von HADR durch TSA ermöglichte schon ab der Version 9.1 einen automatischen Failover. Mit dem DB2 High Availability Instance Configuration Utility ist es jetzt auch möglich, die Konfiguration auf einfache Art und Weise vorzunehmen, ohne sich tief mit TSA beschäftigen zu müssen. Holger Demuth ([email protected]). ORDIX News 4/2008 47 Betriebssysteme OCFS und DRDB (Teil I) - Neue Funktionen in DRBD 8.0: Keine Angst vor Split-Brain! Dieser Artikel richtet sich an Entscheider, Administratoren und Berater, die bereits Erfahrung mit DRBD gesammelt haben oder aber Alternativen zu teuren Lösungen wie SAN etc. suchen. Die elegante Open Source Lösung DRBD hilft, kostengünstig Shared Storage zur Verfügung zu stellen. In diesem Artikel stellen wir einige neue und nützliche Funktionen der aktuellen Version 8.0 vor. In vielen Netzwerkumgebungen stellt sich die Frage nach gemeinsam genutz­tem Storage. Implementiert man die Speicherhaltung lokal auf einem System, hat man bei einem Sys­ tem­ausfall das Problem, die Daten erst mühselig aus dem Backup auf ein anderes Sys­ tem zu übertragen. Nutzt man Lösungen wie SAN oder InfiniBand, muss man ziemlich tief in den Geldbeutel greifen. Die Open Source Lösung DRBD hilft, kostengünstig gemeinsam genutzten Speicher zur Verfügung zu stellen. In diesem Artikel stellen wir Ihnen einige neue und nützliche Funktionen der aktuellen Version 8.0 vor. In einer der kommenden Ausgaben wird dann die Funktion des „Dual Primary Mode“ in Verbindung mit Cluster-Dateisys­temen weiter vertieft. Abbildung 1 gibt einen Überblick darüber, was sich eigentlich hinter DRBD verbirgt. 48 ORDIX News 4/2008 DRBD – Quantensprung und der Weg in den Kernel Um DRBD nutzen zu können, werden ein Kernel-Modul und Verwaltungsbefehle benötigt. DRBD ist aktuell noch nicht im VanillaLinux-Kernel enthalten, aber einige Hersteller liefern ihre Distribution mit DRBD-Implementierung aus. Nutzt man ein SuSE Linux, ist DRBD schon enthalten, unter einem Red Hat Enterprise Server ist DRBD noch nicht enthalten. DRBD, ursprünglich als Diplomarbeit des Österreichers Philipp Reisner entwickelt, wird mittlerweile von seiner Firma LINBIT [1] weiterentwickelt. Auch eine kommerzielle Variante namens DRBD+ mit speziellen Funktionen ist verfügbar. Die DRBD-Entwickler baten vor kurzem um die Aufnahme in den offiziellen Linux-Kernel und wurden, sofern einige Ände- Betriebssysteme rungen am Programmierstil gemacht würden, auf später vertröstet. Etwas gewöhnungsbe­ dürftig ist auch die Versionsbezeichnung: Auf Version 0.7 folgte die Version 8.0, in der vor allem Administratoren der alten Versionen mit geänderten Einstellungen zu kämpfen haben, gleichzeitig aber auch mit sinnvollen neuen Funktionen belohnt werden. Usage – Wir wissen Bescheid Eines der ersten, auffälligen Funktionen der Version 8.0 ist der Eintrag usage-count yes (siehe Abbildung 2) in den globalen Einstellungen der Konfigurationsdatei von DRBD /etc/drbd.conf. Dieser Eintrag kann die Einstellungen yes, no oder ask annehmen. Legt man ein neues DRBD an, wird je nach Einstellung dieses Eintrags gefragt, ob Informationen über dieses Blockdevice bei LINBIT registriert werden sollen. Hiermit möchten die Entwickler die Anzahl der Benutzer, die DRBD nutzen, erfassen. Auf der Inter­ netseite des Projekts [2] kann man sich die Statistiken ansehen. Aktuell werden pro Tag über 100 DRBD-Installationen vorgenommen und registriert. Auch ist zu sehen, dass die Größe der DRBD-Devices zunimmt. Aktuell gibt es schon Größenordnungen zwischen 10 und 20 Terabyte. Unbekannt ist die Dunkelziffer der nicht registrierten Installationen. Was ist Distributed Replicated Block Device (DRBD)? Als Linux Kernel-Modul kombiniert mit einer Verwaltungssoftware auf Befehlszeilen­ ebene und einem Skript dient es dazu, ein Blockgerät auf einem produktiven (Primary) Server in Echtzeit auf einen anderen (Secondary) Server zu spiegeln. Dieses Verfahren wird verwendet, um Hochverfügbarkeit im Linux-Umfeld zu realisieren und somit eine gute Verfügbarkeit verschiedener Dienste zu erreichen. Dabei werden alle Schreibzugriffe über das Netzwerk an den zweiten Server übermittelt. Erst wenn der zweite Server den erfolgreichen Schreibvorgang an den ersten Server zurückgemeldet hat, meldet dieser der Applikation das Ende des Schreibvorgangs (vergleichbar mit einem RAID1, aber im Netzwerk). Falls der erste Server ausfällt, wird dieser als inaktiv gemeldet. Durch eine Cluster Software wie Heartbeat kann der zweite Server die Funktion des ersten Servers übernehmen und mit denselben Daten ohne Verzögerung weiterarbeiten. Abb. 1: Was ist DRBD? – Ein Überblick für Einsteiger. global { usage-count yes; } resource data1 { net { allow-two-primaries; cram-hmac-alg "sha1"; shared-secret "SuperStrengGeheim"; after-sb-0pri disconnect; } Auf „Nummer sicher“ DRBD nutzt nur eine einzige Leitung für die Replikation der Daten und die Datenkommunikation. In der Praxis wird hier eine private Leitung (Crossover-Kabel) zwischen den beiden Knoten genutzt. Da der Weg dieser Leitung oft über mehrere Switches und Router geht, besteht Gefahr durch ein Eindringen von Außen in das private DRBD-Netzwerk. Durch Emulieren des DRBD-Netzwerkprotokolls könnte nun der Datenverkehr zwischen den DRBD-Knoten gestört oder sogar verändert werden. Abhilfe schafft hier der neue Eintrag sharedsecret (siehe Abbildung 2), der bis zu 64 Zeichen lang sein kann. Hier kann eine Pass­ phrase eingestellt werden, mit der die übertragenen Pakete zwischen den DRBD-Knoten authentifiziert werden. Mit dem Schalter cram-hmac-alg kann der Hash-Algorithmus gewählt werden. Mögliche Werte sind z. B. md5, sha1, sha256, sha512, wp256, wp384, wp512. Will man nicht nur gegenseitige Authentifizierung, sondern auch eine Verschlüsselung der übertragenen Daten, muss dies } } } on suse1 { device disk address meta-disk on suse2 { device disk address meta-disk /dev/drbd0; /dev/xvdb2; 10.1.1.1:7788; /dev/xvdb1[0]; /dev/drbd0; /dev/xvdb2; 10.1.1.2:7788; /dev/xvdb1[0]; Befehle, Quellcode Abb. 2: Konfigurationsdatei /etc/drbd.conf mit neuen Einstellungen. weiterhin mit Linux-Bordmitteln, wie IPSEC oder OpenVPN, implementiert werden. Split-Brain – Schizophrenie des Clusters Eine der am meisten gefürchteten Situationen bei DRBD ist eine Split-Brain-Situation. Diese kommt zustande, wenn die private Leitung zwischen den beiden DRBD-Knoten unter- ORDIX News 4/2008 49 Betriebssysteme brochen ist, diese den jeweiligen Status des anderen nicht mehr erfragen und auch keine Daten mehr schreiben können. Nun besteht die Gefahr, plötzlich zwei primäre DRBD-Devices zu haben und diese entweder manuell oder per Cluster-Software zu mounten. Wenn jetzt die private Leitung wieder verfügbar ist, stellt sich die Frage, wie DRBD die Situation auflöst. Unter der Version 0.7 gab es die Funktion „Automatic split brain recovery“. Hierbei wurden automatisch alle Daten des jüngeren DRBD-Devices verworfen. Dieses disconnect Keine automatische Resynchronisation. Auf beiden Knoten die Verbindung zum DRBD-Blockdevice lösen. discard-younger-primary Die Änderungen des jüngeren Primären verwerfen. discard-older–primary Die Änderungen des älteren Primären verwerfen. discard-least-changes Von dem Primären synchronisieren, auf dem mehr Änderungen durchgeführt wurden. discard-node-Knotenname Auf einem bestimmten Knoten die Änderungen verwerfen. Abb. 3: Mögliche Werte für den Eintrag after-sb-0pri. Glossar Verhalten konnte auch nicht geändert werden. In der Version 8.0 kann jetzt ganz individuell entschieden werden, was nun passieren soll. Hierzu gibt es den neuen Eintrag aftersb-0pri (siehe Abbildung 2). Die möglichen Werte hierfür finden Sie in Abbildung 3. Dual Primary Mode Bei DRBD hatte man in den alten Versionen die Problematik, dass das DRBD-Device immer nur auf einem der beiden Knoten eingebunden werden konnte, nämlich auf der Primärseite. Auf dem Secondary schlug jeder Versuch fehl. Noch nicht einmal ein Read Only Mount war möglich. Gerade wenn man DRBD in Verbindung mit einem Active/Active-Cluster einsetzen will, ist dies ein Problem, da nicht auf beiden Clusterhälften auf die Dateisysteme zugegriffen werden kann. Dies ändert nun in der Version 8.0 der neue Eintrag allow-two-primaries in der Konfigurationsdatei (siehe Abbildung 2). Ist dieser Eintrag in der Konfigurationsdatei der beiden DRBD-Knoten enthalten, kann nun auf beiden Knoten die Ressource data1 mit dem Befehl drbdadm primary data1 zum Primary gemacht werden. Zu beachten ist hierbei, dass man nicht einfach irgendein beliebiges Dateisystem auf dem DRBD erstellt. Wichtig ist, dass dieses Dateisystem auch clusterfähig ist. Mögliche Dateisysteme wären hier OCFS2 oder GFS2. Vanilla Kernel Der offizielle Linux Kernel, der von Linus Torvalds gepflegt und koordiniert wird. Active/Active Cluster Ein Cluster, auf dem auf beiden Knoten gleichzeitig derselbe Dienst angeboten wird. OCFS2 Bei Oracle Cluster File System 2 (OCFS2) handelt es sich um ein Open-Source-Cluster-Dateisystem von der Firma Oracle für Linux, welches in einem Cluster mehrerer Rechner konkurrierenden Zugriff auf einen gemeinsamen Speicherplatz ermöglicht. GFS Das Global File System (GFS) ist ein Cluster-Dateisystem, das es Rechnern ermöglicht, gleichzeitig auf das Dateisystem eines Storage Area Network zuzugreifen und zugleich die Konsistenz der enthaltenen Daten gewährleistet. GFS ist Teil des Linux-Kernels und wird in dessen Rahmen entwickelt. Treibende Kraft dabei ist die Firma Red Hat. Links ►► [1] Firma hinter DRBD: www.linbit.com ►► [2] Webseite des Projektes: www.drbd.org Fazit In diesem Artikel haben wir einige der neuen Funktionen der Version 8.0 vorgestellt. Schaut man auf der Projekt-Webseite [2] oder in die aktuellen Manual Pages, wird man feststellen, dass sich in der Version 8.0 noch einiges mehr verändert hat. Die Aufnahme in den offiziellen Linux-Kernel lässt erwarten, dass sich DRBD vor allem auch über die Teichgrenzen hinweg weiter verbreiten wird. Für die Version 9 von DRBD ist die Unterstützung von mehr als zwei Knoten geplant. Auch der Blick auf die kommerzielle Version lohnt sich allemal, da hier noch einige zusätzliche Funktionen implementiert wurden, die vor allem für große Firmenumgebungen nützlich sind, wie z. B. das Backup auf einen dritten Knoten. In einer der nächsten ORDIX News berichten wir über die Nutzung von Cluster-Dateisystemen in Verbindung mit dem Dual Primary Mode. ►► [3] DRBD in SLES: http://www.novell.com/documentation/sles10/stor_evms/index. html?page=/documentation/sles10/stor_evms/data/drdb.html Christian Fertsch ([email protected]). 50 ORDIX News 4/2008 Datenbanken MS SQL Server 2008 New Features (Teil I): Der Blick in die Datenvergangenheit mit Change Data Capture Applikationen nutzen Datenbanken, um Informationen zu speichern, zum Beispiel zu den Fragestellungen „Wie lautet die Adresse des Kunden?“ oder „Welchen Wert hat ein Konfigurationsparameter?“ Gespeichert werden jedoch vielfach nur die aktuellen Daten. Datenänderungen können so nicht nachverfolgt werden. Historische Daten, wie z. B. „Wo hat der Kunde vorher gewohnt?“ stehen nicht mehr zur Verfügung. Dieser Artikel richtet sich an Administratoren von Microsoft SQL Servern sowie an Datenbankentwickler, die sich einen Überblick über die zusätzlichen Funktionalitäten der neuen Version verschaffen möchten. Solche Informationen liefert Change Data Capture - eine neue Funktion des MS SQL Server 2008. Voraussetzungen und Einsatzszenarien Wie viele andere neue Funktionen ist auch Change Data Capture (CDC) nur in der Enterprise Edition des SQL Servers enthalten. Zudem muss der SQL Server Agent aktiviert werden, da Aufträge eine zentrale Rolle spielen. Ein mögliches Szenario ist der in der Einleitung angesprochene Zugriff auf historische Daten. Aber auch die möglichst zeitnahe Synchronisation eines Data Warehouse kann mit CDC umgesetzt werden. Denkbar ist auch die Einführung eines nachgelagerten Prozesses bei Datenänderungen, ohne die eigentliche Applikation ändern zu müssen, wie z. B. die automatische Weiterleitung einer Adressänderung an ein anderes System. Bisher konnten diese Anforderungen meist nur mit Hilfe von Triggern umgesetzt werden. Allerdings werden Trigger synchron abgearbeitet; sie beeinträchtigen also die Performance unter Umständen erheblich. Datenänderungen stehen nicht nur während der Verarbeitung, sondern auch noch danach im Transaktionsprotokoll zur Verfügung. Damit ist eine asynchrone Verarbeitung möglich, bei der ein von der eigentlichen Da­ten­­än­derung unabhängiger Prozess das Trans­ ak­tionsprotokoll auswertet und die Än­de­rungs­ informationen in eigenen Tabellen ablegt. Die Änderungsverfolgung wird dabei für jede einzelne Tabelle ein- oder ausgeschaltet. Auch die Änderungsinformationen stehen in separaten Tabellen zur Verfügung, um den Zugriff auf diese Daten individuell steuern zu können. In Abbildung 1 wird das Verfahren dargestellt. Jede Datenänderung wird im Transaktionsprotokoll der Datenbank vermerkt. Ein Auftrag im SQL Server Agenten liest regelmäßig die neu in das Transaktionsprotokoll geschriebenen Einträge und bearbeitet diejenigen, die sich auf zu überwachende Tabellen beziehen. Das Konzept von CDC Die Einträge werden ausgewertet und die Datenänderung wird in die zugehörige Änderungstabelle eingetragen. Change Data Capture geht einen anderen Weg. Denn alle Informationen über erfolgte Da dieser Vorgang asynchron, also unabhängig von der eigentlichen Datenänderung ab- ORDIX News 4/2008 51 Datenbanken läuft, wirkt er sich nicht auf die Performance der Applikation aus. Lediglich durch das Einlesen und Verarbeiten des Transaktionsprotokolls entsteht eine geringe Last auf dem Server. Allerdings bedeutet diese asynchrone Verarbeitung auch, dass es eine gewisse Zeit dauert, bis die Datenänderungen in der Änderungstabelle abrufbar sind. Damit die Änderungstabelle nicht grenzenlos wächst, löscht ein zweiter Auftrag im SQL Server Agenten in regelmäßigen Abständen veraltete Einträge aus der Änderungstabelle. Standardmäßig werden nur Änderungen von drei Tagen gespeichert. Dies kann jedoch in der Tabelle msdb.dbo.cdc_jobs individuell konfiguriert werden. CDC einrichten Kommen wir nun zur Einrichtung von CDC. In Abbildung 2 ist eine kleine Beispieltabelle mit Beispieldaten angegeben, deren Veränderung aufgezeichnet werden soll. CDC muss zunächst für die Datenbank aktiviert werden. Dazu wird innerhalb der Datenbank der Befehl exec sp_cdc_enable_db; ausgeführt. In welchen Datenbanken CDC bereits aktiviert wurde, kann man der Spalte is_cdc_enabled in der Systemsicht sys.databases entnehmen. Anschließend DatenÄnderung Datenbank Datentabellen Transaktionsprotokoll Auftrag im SQL Server Agenten Änderungstabellen Abb. 1: Die Funktionsweise von CDC im Überblick. 52 ORDIX News 4/2008 ist für jede zu überwachende Tabelle einzeln die Prozedur sp_cdc_en­ able_table auszuführen. Der in Abbildung 3 dargestellte Befehl schaltet z. B. die Überwachung für die Tabelle dbo.kontakte ein. Die angegebene Rolle cdc_admin wird für den Zugriff auf die gesammelten Daten verwendet und automatisch angelegt, sollte sie noch nicht existieren. In welchen Tabellen CDC bereits aktiviert wurde, kann der Spalte is_tracked_by_cdc der Systemsicht sys.tables entnommen werden. Neue Datenbankobjekte Mit der Einrichtung von CDC wird in der Datenbank ein neues Schema cdc mit einer ganzen Reihe von Datenbankobjekten angelegt. Zudem werden zwei neue Jobs im SQL Server Agenten angelegt. Die wichtigsten Tabellen sind die Änderungstabellen, in denen die Datenänderungen protokolliert werden. Die Namen der Tabellen lauten cdc.<Schemaname>_<Tabellenname>_CT, also cdc.dbo_kontakte_CT in unserem Beispiel. Diese Tabellen enthalten zum einen Metadatenspalten mit Angaben zu den durchgeführten Operationen, zum anderen alle Spalten der überwachten Tabellen. Dabei identifiziert die Metadatenspalte __$start_lsn die LSN, die der Änderung zugewiesen wurde und __$seqval die Reihenfolge der Änderungen innerhalb einer Transaktion. In der Spalte __$operation wird der mit der Änderung verbundene Vorgang aufgezeichnet: 1 = Löschung, 2 = Einfügung, 3 = Aktualisierung (Anfangsabbild) und 4 = Aktualisierung (Endabbild). Die Spalte __$update_mask ist eine variable Bitmaske mit einem definierten Bit für jede aufgezeichnete Spalte. Bei Einträgen für Einfüge- und Löschvorgänge werden alle Bits in der Update-Maske gesetzt. Bei Einträgen für Aktualisierungsvorgänge sind dagegen nur jene Bits gesetzt, die den geänderten Spalten entsprechen. Die weiteren Spalten entsprechen den Spalten der überwachten Tabelle. Die Namen der beiden neuen Aufträge im SQL Server Agenten lauten cdc.<DB-Name>_ capture und cdc.<DB-Name>_cleanup, die Aufträge werden also für jede Datenbank separat angelegt und können daher auch separat konfiguriert werden. Datenbanken Daneben existieren einige Tabellen mit generellen Informationen zur Überwachung, so enthält z. B. cdc.change_tables Informationen über die mit CDC konfigurierten Tabellen und cdc.captured_columns eine Liste der überwachten Spalten. Änderungsdaten abfragen Die protokollierten Datenänderungen können direkt aus der Änderungstabelle ausgelesen und weiterverarbeitet werden. Abbildung 5 zeigt den Inhalt der Änderungstabelle nach der Durchführung der in Abbildung 4 angegebenen SQL-Anweisungen. Um die dort angegebenen Protokollfolgenummern in die zugehörigen Zeitpunkte umzurechnen, stehen einerseits die Tabelle cdc.lsn_time_mapping und andererseits die beiden darauf basierenden Funktionen sys.fn_cdc_map_time_to_lsn und sys. fn_cdc_map_lsn_to_time zur Verfügung. Zur Anzeige der Datenänderungen kann man darüber hinaus die Tabellenwertfunktion cdc.fn_cdc_get_all_changes_<Schema­ name>_<Tabellenname> nutzen, die als Parameter die untere und obere Grenze der Protokollfolgenummern sowie die Angabe, ob bei Update-Vorgängen nur die neuen oder auch die alten Daten angezeigt werden sollen, über­ nimmt. Was CDC nicht kann Generell werden nur die Datenänderungen selbst und nicht die ausgeführte SQL-Anweisung oder Informationen über den ausführenden Benutzer gespeichert. Somit ist diese Funktion nur begrenzt für Audit-Zwecke geeignet. create table kontakte ( id integer primary key , name varchar(50) , adresse varchar(500) ); go insert values , , go into kontakte (1,'Jordan','Taunusstraße') (2,'Meier' ,'Bergstraße' ) (3,'Müller','Schlossallee'); Abb. 2: Beispieltabelle mit Beispieldaten. exec sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'kontakte', @role_name = 'cdc_admin'; Abb. 3: CDC für die Tabelle „kontakte“ einschalten. insert into kontakte values (4,'Schulze','Meisenweg'); update kontakte set adresse = 'Birkenallee' where name = 'Jordan'; delete kontakte where name = 'Meier'; update kontakte set id = 33 where id = 3; Abb. 4: Beispielhafte Datenänderungen. Darüber hinaus sollte sich die Struktur der überwachten Tabelle nicht ändern, da die er- __$start_lsn name adresse 0x0000001C000000750003 NULL __$end_lsn __$seqval 0x0000001C000000750002 2 0x07 4 Schulze Meisenweg 0x0000001C0000007A0004 0x0000001C0000007A0004 0x0000001C0000007B0005 0x0000001C0000007E0004 0x0000001C0000007E0004 0x0000001C0000007A0002 0x0000001C0000007A0002 0x0000001C0000007B0002 0x0000001C0000007E0002 0x0000001C0000007E0002 0x04 0x04 0x07 0x07 0x07 1 1 2 3 33 Jordan Jordan Meier Müller Müller Taunusstraße Birkenallee Bergstraße Schlossallee Schlossallee NULL NULL NULL NULL NULL __$operation __$update_mask id 3 4 1 1 2 Abb. 5: Inhalt der Tabelle cdc.dbo_kontakte_CT nach Durchführung der Datenänderungen. ORDIX News 4/2008 53 Datenbanken zeugten CDC-Tabellen später nicht mehr angepasst werden können. Zusätzliche Spalten werden also nicht überwacht. Die einzige Möglichkeit ist die Deaktivierung und erneute Aktivierung von Change Data Capture für diese Tabelle, was allerdings zum Verlust der bisher gesammelten Daten führt. Glossar LSN Log Sequence Number (oder Protokollfolgenummer). Die LSN ist eine für jede Datenbanktransaktion eindeutig und aufsteigend vergebene Nummer. Fazit Change Data Capture kann in vielen Fällen bisher notwendige Trigger ablösen und so einen performanten Zugriff auf Datenänderungen bieten. Die Einrichtung und Konfiguration ist sehr einfach durchzuführen. Im Rahmen dieses Artikels wurden jedoch nur Teilaspekte von Change Data Capture behandelt. Sollten Sie zusätzliche Anforderungen an die Verfolgung von Änderungen haben, dann sprechen Sie uns an. Andreas Jordan ([email protected]). Change Data Capture des SQL Server 2008 im Expertencheck 1. Verfügbarkeit in den verschiedenen Editionen 2. Einrichtung 3. Konfiguration 4. Flexibilität bei Änderung der überwachten Tabellen 5. Funktionsumfang 6. Performance 7. Dokumentation positiv: negativ: 54 ORDIX News 4/2008 „Change Data Capture ist eine neue, leis­tungs­fähige Funktion des MS SQL Server 2008, mit der eine performan­te Nachverfolgung von Datenänderun­gen ohne den Einsatz von Triggern möglich ist. Die Einrichtung und Konfiguration ist einfach. Schwächen zeigt die Funktion lediglich bei der nachträglichen Änderung von Tabellenstrukturen.“ Andreas Jordan, ORDIX AG, Wiesbaden Aktuell Mit freu ndl ich er U nte rstü tzu Einladung zum ORDIX IT-Symposium am 17.02.9 in Hamburg ng von Risikomanagement mit Oracle Im Bereich IT-Management müssen sich die Verantwortlichen heute zunehmend neuen Herausforderungen stellen. Insbesondere die Themen Risikomanagement, IT-Security und Hochverfügbarkeit rücken immer mehr in den Fokus der IT-Entscheider. Um diese Themen für Sie zu beleuchten, laden ORDIX und coniatos Sie herzlich zum ITSymposium in die Hamburger Geschäftsstelle des ORDIX Partners Oracle ein. Neue Herausforderungen an das IT-Management Im Rahmen des Symposiums gibt Ihnen Lars Eisenblatt, Vorstand der coniatos AG, einen Überblick über die neuen Herausforderungen des IT-Managements. Eine der Kernaufgaben ist das Erkennen und Beherrschen von IT-Risiken, wie z. B. Fehlfunktionen von Prozessen und Systemen oder der unberechtigte Zugriff und Diebstahl sensibler Daten. Datenbank Security mit Oracle Auditing Viele Kunden müssen immer größeren Wert auf das Thema Security legen. Ein wichtiger Teilaspekt ist dabei das Auditing. So müssen Banken beispielsweise nachweisen können, wann und wer relevante Daten geändert hat. Teilweise ist es sogar notwendig, lesenden Zugriff zu protokollieren. Klaus Reimers, Datenbankexperte der ORDIX AG, zeigt Ihnen in seinem Vortrag die technischen Möglichkeiten von Oracle Auditing auf: • • • • mandatory Auditing SYS Auditing Standard Auditing FGA Neben der Erklärung und Live-Demo der einzelnen Funktionen schildert Reimers Einsatzbeispiele aus der Praxis. Zudem vergleicht und bewertet er die verschiedenen AuditingMöglichkeiten hinsichtlich der Performance. Oracle Hochverfügbarkeit im Überblick Geschäftskritische Daten müssen 7x24 Stunden verfügbar sein. Oracle bietet hierfür verschiedene Ansätze an: • • • • • Oracle Real Application Cluster (RAC) Oracle Data Guard Replikation Automatic Storage Management (ASM) Flashback Lars Eisenblatt stellt Ihnen die grundlegenden Konzepte vor und vergleicht die Hochverfügbarkeitslösungen von Oracle hinsichtlich Technologie und Kosten. Für Sie beleuchtet er Vor- und Nachteile und demonstriert den Einsatz anhand von Praxisbeispielen. Anmeldung und weitere Infos Lassen Sie sich dieses Symposium nicht entgehen und melden Sie sich gleich online an: http://www.ordix.de/symposium ... übrigens: Wenn Sie die Themen Oracle Security und Hochverfügbarkeit weiter vertiefen möchten, lohnt sich ein Blick auf unser Seminarangebot im Online-Trainingsshop unter http://training.ordix.de. Klaus Reimers, ORDIX AG. Agenda 09:30 Begrüßung 09:50 Neue Herausforderungen an das IT-Management Referent: Lars Eisenblatt, coniatos AG, Wiesbaden 10:30 Pause 10:45 Datenbank Security mit Oracle Auditing Referent: Klaus Reimers, ORDIX AG, Köln 11:30 Pause 11:45 Oracle Hochverfügbarkeit im Überblick Referent: Lars Eisenblatt, coniatos AG, Wiesbaden 12:45 Mittagsimbiss und Ausklang Veranstaltungsort Fragen zu den Inhalten beantwortet Ihnen gerne Ihre persönliche Ansprechpartnerin: Jana Kreschel ORDIX AG, Wiesbaden Tel.: 0611 77840-23 E-Mail: [email protected] ORACLE Deutschland GmbH Kühnehöfe 5 / Ecke Kohlentwiete 22761 Hamburg Online-Anmeldung ►► http://www.ordix.de/symposium ORDIX News 4/2008 55 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 häufig nur die Spitze des Eisbergs. Und die erfolgreiche und termintreue Umsetzung scheitert auch nicht an Technologien – 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 starker Teams • Optimierte 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