ORDIX News Das IT-Magazin der ORDIX AG Ausgabe 4/2003 € 2,20 SAP-Überwachung mit PATROL Monitoring eines komplexen Bankenkernsystems S. 24 Perl parst Excel Perl als betriebssystemunabhängige Schnittstelle zu Excel S. 5 Serverkonsolidierung oder: Aus „Alt“ mach „Neu“ S. 30 Oracle: Tuning I/O-intensiver Systeme S. 14 Einladung zur NetIQ Partner Veranstaltung am 29.01.2004 in Wiesbaden System- und Sicherheits-Management mit NetIQ S. 33 Editorial Paderborn, Januar 2004 Einkaufstage Da waren sie wieder, die Einkaufstage. Alle Jahre wieder ... hoffte der Handel auf das Weihnachtsgeschäft, das den bescheidenen Jahresumsatz wett machen sollte. Dieses Jahr sicher mehr denn je, denn die meisten Innenstädte gleichen inzwischen schon fast Geisterstädten. Pro Monat schließen mittlerweile mehr Geschäfte als früher im ganzen Jahr. Gereicht haben soll er aber nicht – der Weihnachtsboom, trotz Steuerreform oder vielleicht gerade deswegen! Ja, und bei Einkaufstagen fallen mir auch gleich zwei Schlagzeilen der letzten Wochen ein: Open Text kauft IXOS und Novell kauft SUSE. Novell – das ist doch die Firma, die vor allem davon profitiert, dass Microsoft bis heute kein vernünftiges Netzwerkkonzept zu bieten hat!? Oder ist das die Firma, die vor Jahren von AT&T die Unix Sourcen erwarb, um endlich auf ein vernünftiges Betriebssystem zu setzen, und die dann anscheinend nichts davon verstand und alle Rechte an SCO verkaufte?! Jedenfalls wundere ich mich, dass Novell überhaupt noch existieren kann und jetzt auch noch das Geld aufbringt, um SUSE zu kaufen. Aber die Zusage von IBM, Geld zu geben, scheint anzuspornen. Wir werden unsere Partnerschaft mit SUSE jedoch weiter aufrecht erhalten. Mit der Übernahme von IXOS durch die Kanadier Open Text verschwindet über kurz oder lang eine weitere deutsche Präsenz auf dem weltweiten IT Markt. Bleibt wieder nur SAP übrig. Schade! Natürlich bleiben auch wir übrig und haben in dieser News wieder einiges zu bieten: Von Datenbanken (Informix und Oracle) über Linux (trotz SUSE) bis hin zu System Management Lösungen für SAP Systeme. Früher blieb mir am Ende der Ausgabe 4 immer, Ihnen schöne Weihnachten zu wünschen. Das hätte dieses Mal eigentlich auch geklappt (und es war auch schon alles gedruckt), aber aufgrund technischer Probleme bekommen Sie die Zeitung quasi als nachträgliches Weihnachtsgeschenk. Für 2004 wünsche ich Ihnen, dass es so gut wird, wie das Wetter in 2003. Es sei denn, unsere Blockadereformer in Berlin treiben wieder nur Unfug und statt Reformen bleiben wieder nur die Steuererhöhungen übrig. Denn dann hat auch in 2004 niemand mehr Geld, das er ausgeben kann ... und es verschwinden noch mehr Läden. Jedoch, 2004 hat einen Tag mehr und viele Feiertage fallen auf das Wochenende. Allein das sollte reichen, um die Wirtschaft anzukurbeln. Wenn nicht, braucht sich Herr Clement nicht zu wundern, dass seiner Theorie von „weniger Urlaub = mehr Wirtschaftswachstum“ nur wenige folgen können. Mehr Wachstum entsteht nur, wenn die Menschen hier in Deutschland mehr Geld in der Tasche haben bzw. für etwas anderes als Steuern und Abgaben ausgeben können. Viel Spass beim Lesen wünscht Ihnen Wolfgang Kögler 3 Inhaltsverzeichnis Aus- & Weiterbildung Standards 11 ... Seminar: PATROL Advanced 15 ... Seminar: Oracle Tuning und Monitoring 20 ... Seminarübersicht: Preise, Termine ... bis Juli 2004. 35 ... ORDIX Schulungsräume erweitert 03 ... Editorial 04 ... Inhalt 32 ... Impressum Aktuell Java/XML 19 ... News Ticker 22 ... Larry Ratlos Kniffel: Helfen Sie Larry bei seinem neuen Problem und lesen Sie die Lösung der letzten Aufgabe. 23 ... Sie kam, ritt und siegte: Die steile Karriere der Hannelore Brenner nimmt ihren Lauf. 26 ... Herzlichen Glückwunsch dem Schach Quiz Gewinner! 33 ... Einladung zur NetIQ Partner Veranstaltung „Systemund Sicherheits-Management mit NetIQ“ am 29.01.04 34 ... 16. Deutschen Oracle Anwender Konferenz - Review Datenbanken 06 ... IBM IDS 9.40 (Teil II): Large Chunk Support, IBM Informix Dynamic Server „The future is wide open ...“ Die technischen Hintergründe sowie die einzelnen Phasen, die bei einer “Aktivierung” des Large Chunk Modes beachtet werden müssen. 14 ... Tuning I/O-intensiver Systeme (Teil I) In diesem zweiteiligen Beitrag beleuchten wir I/O-intensive Oracle Datenbank Systeme und stellen zahlreiche Möglichkeiten zur Performance-Verbesserung dar. 27 ... Performancetest: Ladefunktionalitäten unter Oracle 9i Mit einem Performancetest überprüf en wir, wie schnell sich mit den neuen Features große Datenmengen in eine Datenbank einpflegen lassen und vergleichen dies mit dem sql*loader und dem Verteilen über ein PL/SQL-Skript. 36 ... Standby-Datenbank: Data Guard aus Kundensicht (Teil III) Gemeinsamkeiten bzw. Unterschiede zwischen einer logischen und einer physikalischen Standby-Datenbank und wie man eine logische Standby-Datenbank aufbauen kann. 16 ... Die eSelect Suite, Teil VI: Electronic Advisor: Lösungen für problemorientierte Beratung Der letzte Teil dieser Reihe zeigt die Vielfältigkeit der Konfigurations- und Einsatzmöglichkeiten anhand zweier Beratungs-Szenarios, die auf Basis der Komponenten der eSelect Suite entworfen und ansatzmäßig als Prototypen umgesetzt wurden. Unix/Linux/Open Source 05 ... Perl parst Excel Perl als Schnittstelle zu Excel, mit der man unabhängig vom Betriebssystem Daten extrahieren und Datenbank-Tabellen automatisiert befüllen kann. 30 ... Serverkonsolidierung oder: Aus „Alt“ mach „Neu“ Was tun, wenn IT-Projekte an ihre Ressourcen-Grenzen stoßen? Lesen Sie einen beispielhaften Werdegang von der Konzepterstellung bis zur Realisation/ Migration. 12 ... Knoppix à la Carte Am Beispiel „Morphix“, einer Knoppix Variante, stellen wir vor, wie man LiveCDs seinen „eigenen Stempel“ aufdrücken kann. System Management 09 ... PATROL Configuration Manager macht´s möglich Die Konfiguration der PATROL-Agenten stellt eine echte Herausforderung dar. Jetzt greift Ihnen der PATROL Configuration Manager dabei unter die Arme. 4 24 ... SAP-Überwachung mit PATROL Erfahrungsbericht über das Aufsetzen einer Monitoring Lösung zur Überwachung eines komplexen Bankenkernsystems . Unix/Linux/Open Unix/Linux/Open Source - Titelthema Source Perl Perl parst Excel Wozu das Ganze? Dazu eine kleine Story: Herr Meier bekommt die Aufgabe, aus 100 Excel-Dateien, die im gleichen Format vorliegen, die Daten zu extrahieren, um Datenbank-Tabellen automatisiert zu befüllen. Originäre Excel-Dateien (.xls) liegen im Binärformat vor. Excel bietet von Haus aus an, die Daten im ASCII-Format abzuspeichern (Dateien mit der Endung .csv = comma separated values). Man kann sicher auch ein Makro in Excel schreiben, das die Excel-Dateien einzeln einliest und dann daraus ASCII-Dateien erstellt. Die ASCIIDateien enthalten mit Semikolon separierte Listen, deren Daten man nun manuell in eine Datenbank importieren könnte. Aber ist das nicht ein wenig zu aufwändig? Und was ist mit der Datenbank, wenn die auf einem Rechner mit einem anderen Betriebssystem läuft? Gibt es denn keine Schnittstelle zu Excel in Form einer Programmiersprache, mit der man auch unter Unix oder anderen Betriebssystemen solche Dateien einfach und automatisiert verarbeiten kann? Eine gute Anwort ist: PERL. Perl bietet eine solche Schnittstelle in Form eines Moduls. Modul-Installation. Oder: Wie fange ich an? Das Modul, welches für diese Aufgabe gebraucht wird, heißt „Spreadsheet-ParseExcelSimple“. Abhängige Module müssen möglicherweise nachinstalliert werden. Nach diesen Modulpaketen kann man sehr komfortabel unter http://search.cpan.org/ suchen und sie anschließend per perl Makefile.pl, make und make install installieren. Eine detaillierte Beschreibung, wie man Module bei welchem Betriebssystem installiert, lesen Sie unter: http://www.cpan.org/modules/INSTALL.html. OK, alle Module sind installiert. Wie geht es weiter? Zuerst baut man das Grundgerüst des PerlScripts auf (siehe Zeilen 1 - 3). So speichern wir die Datei z. B. unter „perlparstxls.pl“ und ändern die Eigenschaften der Datei so ab, dass sie ausführbar wird. Erster Funktionstest: Das Script wird direkt auf der Kommandozeile ausgeführt. Gibt es keine Fehlermeldungen, scheint das Modul richtig geladen worden zu sein. Jetzt kann das Modul in vollem Umfang genutzt werden. Schritt 1: Eine Excel-Datei wird in $xls als Referenz eingelesen (hier: „excel_file.xls“ siehe Zeilen 5 - 7). Schritt 2: Jetzt werden die Sheets (Blätter) des xls-files ermittelt und das Ergebnis (jeweils eine Referenz auf ein sheet-Objekt) in die einzelnen Felder eines Arrays (@blaetter) übergeben (siehe Zeile 9). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #!/usr/bin/perl –w # Pfad unter UNIX zum perl-binary use Spreadsheet::ParseExcel::Simple; $xls = Spreadsheet: :ParseExcel::Simple->read („excel_file.xls“); @blaetter = $xls->sheets; foreach $blattref (@blaetter) { # Das folgende Array wird die gewonnenen Daten aus # den xls-sheets beinhalten. Das Array soll jedoch # Für jeden Schleifendurchlauf geleert werden. @allefelder = (); # # # # # Wenn das Blatt, welches auf $blattref (siehe Schritt3) zeigt, Daten hat, dann packe diese Daten in das Array (@zeile). Jede einzelne Zeile wird komplett als Referenz einem Feld im Array @allefelder zugewiesen. while ($blattref->has_data) { @zeile = $blattref->next_row; push(@allefelder,[@zeile]); # # # # # Durchlaufen wird das Array (@allefelder) mit den gewonnenen Excel-Daten. Jeder einzelne Feldwert muss dereferenziert werden, damit wir die Zeilen ausgeben können. Jede Zeile wird hier mit Zeilenumbruch auf STDOUT ausgegeben. foreach $zeile (@allefelder) { print “@$zeile\n”; } } } Schritt 3: Um alle sheets einer xls-Datei bearbeiten zu können, braucht man nur das Array (@blaetter) zu durchlaufen (siehe Zeilen 11 - 39). In der foreach-Schleife, hinter @allefelder = (); kann nun jedes Excel-sheet einzeln bearbeitet werden. Schritt 4: Um Daten aus dem Excel-sheet zu extrahieren, bietet sich die in den Zeilen 19 - 38 gezeigte Vorgehensweise an. Hat man diese Informationen zusammen, sind die Möglichkeiten der Weiterverarbeitung schier unbegrenzt. Um nur ein Beispiel zu nennen: Man könnte die Spaltenwerte jetzt mit Hilfe von PerlDatenbankmodulen (siehe cpan) in eine oder mehrere Datenbanktabelle(n), oder einfach nur in eine oder mehrere ASCII-Dateie(n) schreiben. Jetzt sind Sie gefragt: Probieren Sie es doch einfach mal aus! Frank Weiser ([email protected]). 5 Datenbanken Teil II der Reihe IBM Informix Dynamic Server 9.40: Large Chunk Support IBM Informix Dynamic Server „The future is wide open ...“ Mit der Freigabe des IBM Informix Dynamic Server (IDS) 9.40 wurde der Large Chunk Support implementiert. Ab diesem Release können Chunks bis zu einer Größe von 4 TB angelegt werden. Des Weiteren wurde die maximale Anzahl Chunks pro Instanz auf 32.767 erhöht. Somit ergibt sich eine maximale Instanz-Kapazität von 128 PB (Petabyte). Der folgende Artikel beschreibt die technischen Hintergründe sowie die einzelnen Phasen, die bei einer „Aktivierung” des Large Chunk Modes beachtet werden müssen. Basics ... Zum besseren Verständnis betrachten wir zuerst einmal den Aufbau einer Page. Die Page ist die kleinste I/O Einheit. Je nach Betriebssystem beträgt die Größe einer Page 2 KB oder 4 KB (siehe Abbildung 1). Eine Page besteht aus einem Verwaltungsbereich, dem Page Anfang (Page-Header) und dem Page Ende. Der Freiraum zwischen Page-Header und Page Ende steht, wie in Abbildung 2 zu sehen, den „eigentlichen“ Daten zur Verfügung (Daten-, Index- und Blob-Informationen). Abb. 1: Page-Größe. Um die Anzahl der Pages herauszufinden, die in einem Chunk adressiert werden können, betrachten wir den Aufbau der Physical Page Address. Diese wird, bei nicht aktiviertem BIG Chunk Mode, im Page-Header gespeichert. Der Page-Header besteht aus: Abb. 2: Aufbau einer Page. 0x004 00009 Chunk Number: Page Offset: pg_addr: FFF FFFFF 0xFFF FFFFF (3 Half bytes = 12 Bit) (5 Half bytes = 20 Bit) (Gesamt 4 Byte) pg_addr pg_stamp pg_nslots pg_flags pg_frptr pg_frcnt pg_next pg_prev 4 Byte Physical Page Address 4 Byte TimeStamp 2 Byte Anzahl Slots 2 Byte Flag Bits 2 Byte Free Pointer 2 Byte Free Counter 4 Byte Next Node (Btree) 4 Byte Previous Node (Btree) Summe: 24 Byte Page-Header Physical Page Address (< 9.40) Abb. 3: Aufbau einer Physical Page Address (< 9.40). 0x00000009 0004 Page Offset: FFFFFFFF (8 Halfbytes = 32 Bit) Chunk Number: FFFF (4 Halfbytes = 12 Bit) pg_offset/pg_chunk: 0xFFFFFFFF FFFF (Gesamt 6 Byte) Abb. 4: Aufbau einer Physical Page Address (9.40). 6 Die Physical Page Address (pg_addr 4 Byte) besteht aus der Chunk Number und dem Page Offset (laufende Page Nummer innerhalb eines Chunks). Die ersten 3 Halfbytes (12 Bit) stellen die Chunk Number dar, die nächsten 5 Halfbytes (20 Bit) den Page Offset, also die adressierbaren Pages innerhalb eines Chunks (siehe Abbildung 3). Daraus resultieren folgende Grenzwerte für Anzahl Chunks und Anzahl Pages je Chunk: Datenbanken # Chunks: 3 Halfbytes je 4 Bit (12 Bit) → 2.047 Chunks Page Offset: 5 Halfbytes je 4 Bit (20 Bit) → 1.048.575 Pages x 2.048 → 2.147.481.600 Byte pg_addr: 4 Byte Gesamt (32 Bit) ersetzt. Dadurch wurden u. a. 2 Byte zu einem neuen Feld „Chunk Number“ (pg_chunk) im Page-Header zur Verfügung gestellt. Physical Page Address (9.40) # Chunks: Das Ziel war, die bisherige Page Struktur beizubehalten und den Zugriff auf „konvertierte“ und „nicht konvertierte“ Pages zu ermöglichen. Um die Anzahl der Chunks und die Anzahl der adressierbaren Pages innerhalb eines Chunks zu erhöhen, musste die Physical Page Address „vergrößert“ werden (siehe Abbildungen 4 und 5), jedoch unter der Voraussetzung, dass die bisherige Page-Header-Größe von 24 Byte unverändert bleibt. Page Offset: Die Lösung Die Page-Konsistenz kann nun nicht mehr über einen Vergleich des TimeStamp im Page-Header mit dem TimeStamp am PageEnde überprüft werden. Dafür steht ein weiteres Feld pg_chksum (Page Checksumme) im Page-Header zur Verfügung. Der Page TimeStamp (pg_stamp 4 Byte) im Page-Header wurde durch zwei neue „Felder“ Die ersten 8 Halfbytes der Physical Page Address stellen nun den Page Offset dar und die nächsten 4 Halfbytes die Chunk Number (pg_chunk). Somit ergeben sich folgende Größenverhältnisse: pg_offset/pg_chunk: 4 Halfbytes je 4 Bit (16 Bit) → 32.767 Chunks 8 Halfbytes je 4 Bit (32 Bit) → 2.147.483.648 Pages x 2.048 → 4 TB 6 Byte Gesamt (48 Bit) Die Änderung kann aber auch über den Vergleich der Pseudo Tabelle syspaghdr der Sysmaster-Datenbank nachvollzogen werden (siehe Abbildung 9). Page Konsistenzüberprüfung informix@linux:~> oncheck -pP 2 86 addr stamp chksum nslots flag type frptr frcnt next prev 2:86 110221 aed8 2 1 DATA 72 1964 0 0 slot ptr len flg 1 24 24 0 2 48 24 0 slot 1: 0: 0 0 0 1 54 65 73 74 20 31 20 20 20 20 20 20 ....Test 1 16: 20 20 20 20 20 20 20 20 ........ slot 2: 0: 0 0 0 2 54 65 73 74 20 32 20 20 20 20 20 20 ....Test 2 16: 20 20 20 20 20 20 20 20 ........ Abb. 5: ONCHECK Ausgabe zur Anzeige eines Page Dumps (Chunk 2 Page 86). informix@linux:/db/ifx> onmode -BC 1 This command will enable creation of large chunks. ** WARNING ** This action cannot be undone. ** WARNING ** A level 0 archive of Root DBSpace will need to be done. Do you wish to continue (y/n)? y Abb. 6: Umstellung Phase 1. informix@linux:/db/ifx> onmode -BC 2 This command will cause all chunks to be written in the new (big) format. ** WARNING ** This action cannot be undone. ** WARNING ** A level 0 archive of Root DBSpace will need to be done. Do you wish to continue (y/n)? y Abb. 7: Umstellung Phase 2. 7 Datenbanken update customer set customer_num = customer_num where 1=1; Abb. 8: “Dummy” Update. { Page Headers <9.40} create table syspaghdr ( pg_partnum integer, pg_pagenum integer, pg_physaddr integer, pg_stamp integer, pg_stamp2 integer, pg_nslots pg_flags pg_frptr pg_frcnt pg_next pg_prev ); smallint, smallint, smallint, smallint, integer, integer { Page Headers 9.40} create table syspaghdr ( pg_partnum integer, pg_pagenum integer, { partition number of page } { logical page number in partn } { physische Adresse} { TimeStamp 1 } { TimeStamp 2 } { { { { { { { { { { pg_nslots pg_flags pg_frptr pg_frcnt pg_pgnext pg_pgprev Chunk Offset TimeStamp Checksumme } } } } } } } } } } pg_chunk pg_offset pg_stamp pg_chksum integer, integer, integer, smallint, pg_nslots pg_flags pg_frptr pg_frcnt pg_next pg_prev ); smallint, smallint, smallint, smallint, integer, integer Abb. 9: Vergleich der Pseudo Tabelle syspaghdr aus der Sysmaster Datenbank. Der BIG Chunk Mode Nach einer Migration bzw. einer Erst-Initialisierung befindet sich die Instanz im „Legacy Mode“. In diesem Zustand können keine Chunks > 2 GB angelegt werden. Die Umstellung erfolgt in zwei Phasen mit Hilfe einer neuen „onmode-Option“. Das tatsächliche Konvertieren der Page-Header erfolgt jedoch erst beim ersten, ändernden Zugriff auf die Page. Phase 1 Mit dem Befehl onmode –BC 1 bringt man den IDS 9.40 in die Phase 1 (siehe Abbildung 6). Erst jetzt können „BIG“ Chunks hinzugefügt werden. Befindet sich der DB-Server in der Phase 1, ist ein Downgrade - z. B. mittels onmode –b 9.3 - möglich, wenn: - kein “BIG” oder Large Chunk existiert. - die maximale Chunk Number nicht 2.047 überschritten hat. Alle Page-Header, die zu einem „BIG“ Chunk gehören, werden beim ersten, ändernden Zugriff konvertiert. Phase 2 Befindet sich der DB-Server in der Phase 2 ist ein „Rollback“ nur mittels Restore möglich (Einspielen eines Backups, welches vor der Umstellung erstellt wurde). Der Befehl onmode –BC 2 bringt den Server in die Phase 2 (siehe Abbildung 7). Alle Page-Header werden auch hier beim ersten, ändernden Zugriff konvertiert. 8 Um eventuellen Performance-Problemen vorzubeugen, ist ein „dummy“ Update pro Tabelle sinnvoll (siehe Abbildung 8), je nach Tabellengröße gegebenenfalls auch über mehrere Spalten. Fazit Die Konvertierung betrifft ausschließlich den Page-Header. Somit bleiben 99 Prozent der Daten innerhalb einer Page unberührt. Des Weiteren ist eine „Koexistenz“ von beiden Page-Header-Typen möglich. Es besteht also die Möglichkeit, „normale“ Chunks und sogenannte „BIG“ Chunks innerhalb einer Instanz zu betreiben. Die Konvertierung auf den Large Chunk Mode kann somit „on the fly“ erfolgen. Mit dieser Lösung hat IBM ihren Informix Kunden einen effizienten und schnellen Umstieg in die Welt der Tera- und Petabyte geschaffen. In einer der nächsten ORDIX News lesen Sie mehr zu den weiteren Neuerungen des IBM Informix Dynamic Server 9.40. Guido Saxler ([email protected]). System Management PATROL Configuration Manager macht’s möglich Also alles im Griff!? Alles? Nein, nicht alles, aber immer mehr. Die Konfiguration der PATROL-Agenten stellt eine echte Herausforderung dar, wenn man sie als Möglichkeit zur Herstellung eines kontrollierten, bestmöglich definierten Zustandes versteht. Dazu waren „wpconfig“ und „xpconfig“ schon immer nützliche Helfer. Der Configuration Manager als GUI für pconfig geht aber deutlich weiter, und das kostenlos. Der Configuration Manager basiert auf Java und läuft auf Windows und Unix gleichermaßen. Auf den ersten Blick sieht die Kommandozentrale einleuchtend und aufgeräumt aus. Neben Menüleiste und Toolbar teilen das Agenten-Window und das RuleSet-Window die Oberfläche auf. Das „Drag and Drop“ und „Cut and Paste“ ist stark an den Windows Explorer angelehnt, aber nicht identisch. Irgendwie lädt das alles so richtig zum Klicken ein. Aber Vorsicht! Ein unbedachter Klick kann ein nicht unbeträchtliches Chaos anrichten. Agenten-Window Über ein Kontextmenü können Gruppen (Verzeichnisse) und Abb. 1: Kommandozentrale des PATROL Configuration Managers. Agenten angelegt werden. Den Agenten werden jeweils Hostname und Display Name sowie Portnummer res als Agentenvariablen mit einer Operation, z. B. REPLACE, und Protokoll zugewiesen. Man legt sie direkt und einem Wert. Ein RuleSetFolder besteht aus beliebig vielen innerhalb einer Gruppe an. Ein Agent kann unRuleSetFoldern und beliebig vielen RuleSets. Wie gehabt sind ter einem oder verschiedenen Namen mehrdie Zuordnungen mit Maus und Kontextmenü veränderbar. fach vorhanden sein. Die Gruppenzuordnung ist jederzeit mit Maus oder Kontextmenü verNach der Installation findet man zwei RuleSetFolder auf der obersänderbar. Die Gruppen können über mehrere ten Ebene: In „Shipped“ werden Beispiele geliefert, die erst mal Ebenen verschachtelt werden. Jede Gruppe keine besondere Bedeutung haben. Besondere Beachtung gilt enthält automatisch genau ein Symbol „Applyaber dem „ChangeSpring“ mit vier RuleSetFoldern: OnNew“. Ein ApplyOnNew kann beliebig viele RuleSets enthalten. • „backup“ beinhaltet die sogenannten „Virtual Backup Folder“, lexikographisch geordnet nach Agentennamen. Bei jedem Das Resultat wird in zwei Textfiles gespeichert, Backup werden hier die kompletten Agentenkonfigurationen „agents.ini“ und „groups.ini“. Dadurch lässt abgelegt. Man kann zwar keine eigenen Bereiche für die „Virsich die Arbeit zum Erstellen und Zuordnen tual Backup Folder“ festlegen, aber man kann deren maximaohne Schwierigkeiten automatisieren. Ein mitle Anzahl sowie die maximale Anzahl der Agenten je Folder geliefertes Tool „csmi.bat“ im Verzeichnis „util“ einstellen. Das Ganze ist eine ziemlich gute Möglichkeit, eine kann die benötigten Informationen aus den große Anzahl von Agenten übersichtlich darzustellen. Konsolenfiles generieren. Dies muss aber nicht genutzt werden. • „local“ ermöglicht es, für bestimmte Agenten lokale Einstellungen vorzunehmen. Die Konfiguration über eine Gruppe kann RuleSet-Window diese Einstellungen nicht überschreiben. Ein sehr nützliches Instrument, solange es nicht zu viele lokale Konfigurationen Ein RuleSet hat einen Namen und besteht aus gibt. Allerdings sollte man dann doch noch mal seine Gruppenbeliebig vielen Rules. Rules sind nichts andestruktur überdenken. 9 System Management • „queue“ verschafft einen Überblick über RuleSets, deren Versendung an die Agenten misslungen ist. Zu einem späteren Zeitpunkt kann man dann gezielt einen neuen Versuch starten. Leider müssen RuleSets dann manuell gelöscht werden. Sorgsames Nachhalten ist ein Muss! „/AS/EVENTSPRING/PARAM_SETTINGS/ THRESHOLDS/NT_CPU/CPU__Total/ CPUprcrUserTimePercent“ = { REPLACE = „1,1 0 100 0 0 2,1 95 98 1 5 1,1 98 100 1 5 2“ }, • „tlog“ listet alle erfolgreich verschickten RuleSets auf. Die Liste wird einmal nach Zeitpunkt der Transaktion und zusätzlich nach Agentenname sortiert. Das verschafft einen guten Überblick über das, was wirklich gelaufen ist. Mit dem richtigen Editor wird es gleich wieder griffiger. Für diesen speziellen Fall, das Einstellen von Schwellwerten im „AS-Spring Format“, gibt es noch einen Editor. Endloses Klicken führt zum gewünschten Ergebnis. Letztendlich werden alle Rules in Konfigurationsfiles (.cfg) gespeichert. Wer mehr als nur ändern will, sollte die Erstellung automatisieren. Zur individuellen Organisation der RuleSets erstellt man sich eine eigene Struktur von RuleSetFoldern und RuleSets. Inhalte und Struktur aller Folder werden in einem entsprechenden Verzeichnissystem auf der Festplatte gespeichert. „Virtual Backup Folder“ sucht man hier natürlich vergebens. Suchfunktionen und mehr Hinter der Oberfläche können sich durchaus mehr als eine Million Rules verbergen. Trotz einer guten Struktur ist der Überblick schnell verloren. Starke Suchfunktionen, die z. B. den Einsatz regulärer Ausdrücke erlauben, sind unabdingbare Hilfen. Das Gesuchte lässt sich schnell als Grundlage zur Generierung neuer RuleSets verwenden. Eine wirklich gute Idee ist es, die Suchergebnisse in einem Report abzuspeichern. Allerdings ist die „Reportmaschine“ immer noch verbesserungswürdig. Abb. 4: Der Schwellwerteditor machts lesbar. Abb. 2: Mehr Überblick durch die nützliche Reportfunktion. Besonders nützlich ist die Vergleichsmöglichkeit von RuleSets. Alte können mit aktuellen oder RuleSets eines Agenten mit denen eines anderen verglichen werden. Unterschiede zwischen den Konfigurationen macht man hiermit schnell und einfach transparent. Abb. 3: Hilfreich: Vergleichsfunktionen. Rules fehlerfrei erstellen und verändern ist leichter gesagt als getan. Das folgende Beispiel macht den unübersichtlichen und nur schwer lesbaren Aufbau deutlich: 10 Zusätzlich bietet das AS_CHANGESPRING.km über KM-Menükommandos eine ganze Palette von Möglichkeiten zur Generierung von Rules, z. B. das Auslesen von KM nach Parametern. Leider funktioniert es nur über eine Developer Konsole. Apply Wie ordnet man dem Agenten seine Rules und seine Agentenvariablen zu? Mit der Maus zieht man eine oder mehrere Rules, RuleSets oder RuleSetFolder auf einen Agenten oder eine Gruppe. Dieser Vorgang kann beliebig wiederholt werden. Die Zuordnungen sind direkt am Agenten, nicht aber an der Gruppe sichtbar. Durch ein „Apply“ (Menü oder Toolbar) werden die Zuordnungen gesendet und verschwinden anschließend aus dem Agenten-Window. Die Sichtbarkeit der Zuweisung ist also nur temporär. Über eine Liste kann man genau bestimmen, welche Agenten angesprochen werden sollen. Außerdem kann man festlegen, dass vor dem eigentlichen „Apply“ ein Backup der Konfiguration angelegt wird. Ein Job Status informiert über den Verlauf der Transaktionen. Einzelheiten findet man in den RuleSetFoldern „tlog“ und „queue“. System Management Die dauerhafte Zuordnung von RuleSets und RuleSetFoldern erreicht man, wenn man sie auf einen oder mehrere „ApplyOnNew“ Symbole zieht. Ein einfaches „Apply“ (Menü/Toolbar) führt hier allerdings nicht zum Erfolg, es sei denn, „ApplyOnApply“ auf der jeweiligen Zuordnung ist aktiviert. Der Trick des „ApplyOnNew“ ist, dass dem Agenten oder der Agentengruppe, die neu in die Gruppe kommen, die zugeordneten Agentenvariablen automatisch zugesandt werden. Wenn es stört, deaktiviert man „ApplyOnNew“. Das „ApplyOnNew“ kann ebenfalls per Kontextmenü des Symbols gestartet werden. Vor dem eigentlichen „Apply“ kann man per Dialogfenster genau bestimmen, welche Konfigurationen aus welchen Gruppen zu welchen Agenten geschickt werden. Um sicher zu gehen, sollte man das vorher genau austesten. Der Configuration Manager war/ist Bestandteil von „AgentSpring“ und nutzt systematisch das PSL Override. Eine durchaus gute Idee. Die entsprechenden Agentenvariablen beginnen alle mit „AS“. Die Syntax der Werte unterscheidet sich allerdings von der der Tuningvariablen. Wer damit gearbeitet hat, vertut sich leicht. Ein vergleichsweise harmloses Problem. Schlimmer ist die Möglichkeit des gleichzeitigen, konkurrierenden Einsatzes der verschiedenen Override Methoden. Von einem definierten Zustand kann dann keine Rede mehr sein. Entschließt man sich zu einer der Methoden, kann das Deaktivieren der nicht genutzten Methoden sinnvoll sein. Noch ein Override Die Schwellwerte für Parameter kann man mit vier Methoden einstellen: • • • • Developer Override (Developer Konsole) innerhalb der KM (aus verschiedenen Gründen nicht zu empfehlen) Operator Override (Tuningvariable) External Override (External Files) PSL Override (z. B. aus einem „intelligenten“ KM heraus) Fazit Der PATROL Configuration Manager braucht einen Manager, der genau weiß, was er tut! Äußerste Sorgfalt ist Pflicht, sonst geht der Schuss nach hinten los. Trotzdem, dieses GUI bietet schon eine ganze Menge Möglichkeiten. Von der Vision eines definierten Zustands aller Agenten bis zu ihrer Realisierung gibt es allerdings viel zu tun. Abb. 5: Dialogfenster zum automatischen konfigurieren mit „ApplyOnNew“. Ulrich Meyer ([email protected]). Seminarvorstellung: PATROL Advanced Der Teilnehmer vertieft in diesem Seminar seine Kenntnisse im Umgang mit dem Monitoring-Tool PATROL und dessen Administration. Neben interessanten Tuning- und Sicherheitsaspekten werden auch die Grundlagen für den effizienten Umgang mit zentralen Komponenten der PATROL Architektur, wie z. B. dem Consolen Server PATROL Central und dem Distribution Server behandelt. Das Seminar ist eine gute Vorbereitung auf das Seminar „PATROL Customizing and Development“. Voraussetzungen Die Schulung ist ausgerichtet auf Teilnehmer, die schon tiefergehende, praktische Erfahrungen im Umgang mit PATROL haben oder das Seminar “PATROL Basics” besucht haben. Kenntnisse des Betriebssystems Unix und/oder Windows. Zielgruppe Fortgeschrittene PATROL Administratoren, Entwickler von Knowledge Modulen. Inhalte • • • • • • • • • • PATROL Agenten-Tuning Sicherheitsaspekte Fortgeschrittene Agentenkonfiguration Erweitertes Event Management - Benachrichtigung per E-Mail oder Pager - Filtern und Anpassen von Events - Zentrales Event Management Fehleranalyse und Debugging Einführung in Konzepte und Umgang mit dem Distribution Server Migrationstechniken und Werkzeuge PATROL Central: Installation und Administration PATROL Lizenzverwaltung mit OneKey Übungen Dauer: 5 Tage Kursgebühr/Teilnehmer: 2.050,00 Euro Termine 16.02.2004 - 20.02.2004 in Wiesbaden 05.07.2004 - 09.07.2004 in Wiesbaden 11.10.2004 - 15.10.2004 in Wiesbaden Aktuelle Termine finden Sie jederzeit auch im Internet unter http://training.ordix.de. 11 Unix/Linux/Open Source Knoppix à la Carte Linux ist überall - egal ob auf Enterprise-Servern, Desktop-PCs oder einfach nur als CD-Beilage einer Zeitschrift. Letzteres wird aktuell gern als sogenannte Live-CD geliefert. Basis für diese Live-CDs ist typischerweise Knoppix. Knoppix ist eine spezielle Linux Version, die direkt von der CD gestartet werden kann. Natürlich will jemand, der eine solche Knoppix CD verteilt, dieser gerne seinen eigenen Stempel z. B. in Form von Hintergründen „aufdrücken“. Wie dies möglich ist, soll dieser Artikel am Beispiel der Knoppix Variante „Morphix“ zeigen. Das Basemodule ist für alle Morphix Varianten gleich. Es stellt den Bootloader sowie ein minimales Rootfilesystem zur Verfügung, das die Logik zum Starten des Mainmodules enthält. Es wird als CD-Abbild im Format ISO9660 zum Download angeboten. Das Menü Das Mainmodule stellt das Kernsystem inklusive einem gewissen Satz an Applikationen und Libraries, die für dessen Betrieb benötigt werden. Die Minimodules schließlich bieten eine Sammlung von Applikationen für jeweils ein bestimmtes Thema (security, wine, printing, ...). Mit Hilfe dieser Minimodules lässt sich das gewählte Mainmodule um Funktionalitäten erweitern. Zu Beginn eines eigenen Knoppix Projekts muss man sich zunächst überlegen, welche Anforderungen das endgültig entstehende Linux erfüllen soll. Soll das System möglichst kompakt sein, damit es als Rescue System auf eine CD mit der Größe einer Visitenkarte passt? Oder ist ein vollwertiges Linux mit Desktop Umgebungen wie GNOME oder KDE und Office Suite das Ziel? Bevor man sich über diese Fragen den Kopf zerbricht, sollte man zunächst einen Blick auf die Liste der Knoppix-Derivate unter (http:/ /www.knoppix.net/docs/index.php/KnoppixCustomizations) werfen. Dort findet man zahlreiche Varianten, die entweder für ganz spezielle Zwecke angepasst wurden, oder aber als Basis für die eigene Knoppix Distribution dienen können. Letzteres wird meist durch Verzicht auf eines der großen Desktop Pakete oder durch Verzicht auf eine Anzahl von Applikationen erreicht. Auffällig ist vor allem die Variante mit dem Namen „Morphix“. Main- und Minimodules werden als Dateien mit der Endung „.mod“ angeboten. Dahinter verbirgt sich ebenfalls ein ISO9660 Filesystem, das dann aber noch komprimiert wird, um Platz auf dem Medium zu sparen. Im Betrieb wird später ein „compressed Loopdevice“ benutzt, um die Dateisystemabbilder der Module in den Verzeichnisbaum einzuhängen. Hauptgericht und Beilage In die Küche geschaut Morphix (http://www.morphix.org) ist eine modularisierte Version von Knoppix und besteht aus einem „Basemodule“, einem „Mainmodule“ und beliebig vielen „Minimodules“. Das Limit setzt hierbei der Platz auf dem Medium, der neben Base- und Mainmodule noch übrig ist. Das Basemodule liefert alle benötigten Verzeichnisse bereits mit. Der Aufbau ist selbstsprechend. Neben dem Bootsektor enthält das Baseimage das Verzeichnis base, und zwei leere Verzeichnisse mainmod und minimod. Um ein Modul einzubinden, muss einfach die entsprechende „.mod“-Datei in das entsprechende Verzeichnis kopiert werden. Das Abbild des root-Filesystems in „/base/morphix“ ist nur für den reinen Systemstart und das Einbinden der Module zuständig. Es enthält nur das Nötigste, wie z. B. die fileutils (ls, cp, ...) und das cloop Paket zum Lesen der komprimierten Images. Alle weitergehenden Anwendungen werden durch das Einhängen eines Main- oder Minimodules bereitgestellt. Die Abbildung 1 soll den verschachtelten Aufbau einer Morphix CD verdeutlichen. Abb. 1: Aufbau einer Morphix CD. 12 Damit einem ersten Test des Morphix Systems keine allzu große Hürde im Weg steht, gibt es bereits fertige ISO-Abbilder. Empfehlenswert Unix/Linux/Open Source ist das Image HeavyGUI, da es mit GNOME 2.2 einen komfortablen Desktop bietet und gleichzeitig aber auch noch circa 200 MB Platz für (eigene) Minimodules lässt. Das Rezept Die Funktionalität eines Minimodules ist recht schnell erklärt. Es enthält ein Shellskript mit dem vereinbarten Namen „loadmod.sh“, das nach dem Einhängen des Moduls in den Dateibaum ausgeführt wird. Für das Einfügen größerer Pakete gibt es morphixspezifische Techniken, die den Rahmen dieses Artikels sprengen würden. Daher soll hier nur ein einfaches Beispiel, nämlich das Austauschen des Desktop Hintergrunds erklärt werden. Folgende Struktur ist in einem solchen Minimodule vorhanden: • minimod/morphix/main_module Enthält den Namen des Mainmodules, zu dem dieses Minimodule kompatibel ist. Typischerweise enthält die Datei nur das Wort “ALL”. • minimod/morphix/files/neuer_bg.png Neues Hintergrundbild. • minimod/morphix/loadmod.sh Skript, das die eigentlichen Anpassungen zur Laufzeit vornimmt. • minimod/morphix/mini_module Namen und erklärender Text zu diesem Minimodule. Den Inhalt von loadmod.sh entnehmen Sie bitte der Abbildung 2. Wichtig: Wenn mehrere Minimodules zum Einsatz kommen, kann der Mountpoint im später laufenden System variieren, je nachdem, welches Minimodule zuerst eingehängt wird. Damit der Kopiervorgang klappt, wird der aktuelle Mountpoint an „loadmod.sh“ als Argument übergeben und dann im Quell-Argument des „cp“ ausgewertet. Wie man sieht, wird die bestehende Hintergrunddatei einfach überschrieben. Zwar könnte man auch die Datei im Mainmodule austauschen, aber der Vorteil der Modules besteht gerade darin, die Hauptmodules durch Minimodules anzupassen. Bei einem Versionswechsel der „offiziellen“ Morphix-Module muss somit keine Nacharbeit geleistet werden, da man am Mainmodule direkt keine individuelle Anpassung vornehmen muss. Abb. 2: Die verschiedenen Aufrufe, die im Laufe der Erstellung des Minimodules zum Einsatz kommen. Es wird angerichtet Der nächste Schritt besteht darin, das erzeugte Minimodule in ein ISO9660 Image zu verpacken und dieses danach zu komprimieren. Ersteres erledigt z. B. der Aufruf in Abbildung 2. (Mkisofs ist Bestandteil des Pakets „cdrtools“. Eine Dokumentation der verwendeten Parameter befindet sich ebenfalls darin.) Die Kompression des temporären Images temp_mini.iso erledigt das Programm compressloop aus dem Paket cloop. Wenn dieses Paket nicht installiert ist, gibt es die Möglichkeit, die Binaries durch das Archiv „tools.tar.gz“ aus dem Downloadbereich von morphix.org zu beziehen. Das endgültige Minimodule wird dann, wie in Abbildung 2 gezeigt, erzeugt. Hierbei ist zu beachten, dass der Name im Format „MorphixMini-*.mod“ bindend ist. Nachdem das oben erwähnte HeavyGUI CD-Abbild in den lokalen Dateibaum eingehängt wurde, kann man nun das so erstellte Minimodule ohne weitere Anpassungen direkt in das Verzeichnis minimod kopieren (siehe Abbildung 2). Danach kann das Image mit einer beliebigen Software auf CD geschrieben werden. Beim booten von Morphix wird das abgelegte Minimodule automatisch erkannt und eingebunden. Lecker ... Dank Morphix ist es mit wenig Zeitaufwand möglich, eine eigene „customized“-Knoppix Version zu erstellen. Selbst wenn keine unternehmensspezifischen Anpassungen vorgenommen werden sollen, ist das Zusammenstellen der Applikationen für die eigene Variante mit Morphix auf Grund des Modulkonzepts sehr einfach. Wer dennoch Software vermisst, kann das System mit Hilfe einer Mastering-Installation an seine Wünsche anpassen. Ein Blick in die HowTo’s auf Morphix.org ist hierbei zu empfehlen. Michael Heß ([email protected]). 13 Datenbanken - Titelthema Tuning Tuning I/O-intensiver Systeme (Teil I) Bei komplexen Datenbanksystemen ist es oft sehr schwierig festzustellen, welches die tatsächlichen Ursachen für schlechte Antwortzeiten sind. Welchen Anteil haben I/O-Probleme an der gesamten Datenbanklast? Wie sind diese genau zu messen und letztendlich zu beseitigen? Im Zuge dieses Artikels werden nur lesende I/O-Vorgänge detailliert betrachtet. Natürlich stellen auch immer wieder schreibende Zugriffe wie Checkpoints oder der Flush des Log Buffers signifikante I/O-Probleme dar. Wesentlichen Einfluss auf die Performance von I/O haben selbstverständlich das Betriebssystem sowie die Plattenkonfiguration. Eine hervorragende Ausarbeitung findet sich beim Oracle Technology Network unter dem Titel „S.A.M.E Stripe and Mirror Everything“ (http://otn.oracle.com/deploy/performance/pdf/opt_storage_conf.pdf). Der vorliegende Artikel bezieht sich ausschließlich auf Oracle Mittel und ist somit weitgehend betriebssystemunabhängig. Beispiel I Eine Aussage, die in der Praxis immer wieder zu hören ist, lautet etwa wie folgt: „Unsere Batchverarbeitung schafft nur vier Sätze pro Sekunde“. Tatsächlich handelt es sich dabei in der Regel um vier logische Sätze wie Konten, Kunden oder ähnliches, deren Bearbeitung aus diversen SQL Befehlen besteht. Selbst wenn die SQL Befehle bereits optimiert sind, die Buffer Hit Ratio einen Wert von über 95 Prozent einnimmt und das Plattensystem nicht ausgelastet ist, kann es sich hierbei um ein I/O-Problem handeln. Die Analyse erfolgt typischerweise mit den Oracle Trace Facilities TKPROF oder dem Trace Analyzer. Werden für mehrere SQL Anweisungen jeweils wenige I/O ausgeführt, differiert die CPU Zeit von der Elapsed Zeit deutlich. Dies liegt ganz einfach darin begründet, dass ein I/O mit wenigen Millisekunden etwa genauso lange dauert, wie dutzende SQL Befehle, die ohne I/O auskommen. Lässt sich der I/O stark reduzieren oder komplett vermeiden, so erhöht sich der Durchsatz oft um Faktoren. Klassifizierung von I/O-intensiven Systemen. 14 Beispiel II Eine zweite, typische Aussage lautet etwa wie folgt: „Unsere Buffer Hit Ratio liegt bei über 95 Prozent. Also können wir kein I/O-Problem haben.“ Unabhängig von Trefferquoten sind SQL Befehle zu analysieren, welche eine bestimmte Menge an I/O verursachen. Bei 720 Millionen logical Reads und 720 Tausend physical Reads in einer Stunde ergibt sich eine Trefferquote von über 99 Prozent. Dennoch werden pro Sekunde 200 I/O abgesetzt. Werden diese I/O durch z. B. 30 Benutzer verursacht, so muss jeder Benutzer bei Antwortzeiten von 7 msec pro I/O in dem Messzeitraum von einer Stunde insgesamt 168 Sekunden warten. Bei OLTP Systemen sicherlich nicht akzeptabel. Klassifizierung Allgemein formuliert, lassen sich I/O-intensive Systeme wie folgt klassifizieren. Die erste Dimension beurteilt die Antwortzeit des I/OSystems nach hoch/gering. Die zweite Dimension misst die Anzahl der Sessions auf dem Datenbanksystem. Natürlich lässt sich in der Praxis selten eine exakte Einstufung vornehmen. Dennoch finden sich eine oder mehrere Teilkomponenten in fast jeder Datenbank wieder. Die Abbildung zeigt die Klassen von I/Ointensiven Systemen. - Geringe I/O-Zeit – wenige Sessions: Ein oder wenige Batch Prozesse sind langsam. Die Trefferquote ist gut, aber die absolute Anzahl an I/O ist für 80 Prozent der Laufzeit verantwortlich. Der Batch-Job kann um Faktor 4 verbessert werden, indem der I/O beseitigt wird. - Geringe I/O-Zeit – viele Sessions: Die meisten Anwender sind wahrscheinlich zufrieden. Oft existieren aber verschiedene Abfragen, die hunderte oder tausende von I/O durchführen. Bei 1.000 I/O und einer Antwortzeit von 7 msec ergeben sich 7 Sekunden für den Aufbau einer Bildschirmmaske. Durch bessere Ausführungspläne können diese Abfragen häufig deutlich verbessert werden. Datenbanken - - Hohe I/O-Zeit – wenige Sessions: Dies ist ein typisches Bild für ein sehr stark ausgelastetes Data Warehouse System. Wo immer möglich, muss I/O reduziert werden. Wahrscheinlich haben Full Table Scans einen hohen Anteil am I/O. Eventuell reduziert sich das Datenvolumen durch Partitionierung, Komprimierung oder Materialized Views. Je mehr I/O entfällt, desto besser wird die Antwortzeit des verbleibenden I/O. Mythen „Die CPU Wait I/O zeigt an, wenn das System I/O-intensiv ist.“ Tatsache ist jedoch: Zeigt die CPU einen hohen Anteil an Wait I/O, so kann zwar häufig, aber nicht grundsätzlich von einem I/O-Problem ausgegangen werden. Der Umkehrschluss, wenig Wait I/O gleich kein I/OProblem ist nicht zulässig! Zeigt die CPU beim Wait I/O einen niedrigen Wert an, so kann es trotzdem ein I/O-Problem geben. Die CPU geht in den Status Wait I/O, wenn der aktuelle Prozess einen I/O-Auftrag abgesetzt hat und kein weiterer Prozess in der Queue des Prozessors steht. So gesehen stellt der Wait I/O eine besondere Form von Idle dar. Wait I/O könnte man wie folgt beschreiben: Die CPU hat nichts anderes zu tun, als auf I/O zu warten. Übrigens, beim Einsatz eines SAN ist die Interpretation dann noch etwas schwieriger. Hohe I/O-Zeit – viele Sessions: Dies ist ein typisches Bild für ein stark ausgelastetes OLTP System. Wo immer möglich, muss I/O reduziert werden. Es ist zu prüfen, inwieweit Full Table Scans und Sortieren auf Platte stattfinden. Mit Partitionierung und Komprimierung können in einzelnen Fällen gute Ergebnisse erreicht werden. Die Verwendung von Multiplen Buffer Pools ist immer dann zu untersuchen, wenn sehr große Tabellen viel Platz im Block Buffer verwenden. Auch hier gilt, je mehr I/O entfällt, desto schneller wird die Antwortzeit des verbleibenden I/O. „Eine Buffer Hit Ratio von 98 Prozent oder mehr ist super, der I/O muss nicht mehr betrachtet werden.“ Auch hier handelt es sich um einen weit verbreiteten Mythos. Tatsächlich können auch bei hohen Trefferquoten schlechte Antwortzeiten auftreten. „Bei einer Buffer Hit Ratio von 100 Prozent müssen SQL Befehle nicht verbessert werden.“ Hier können in der Regel noch reichlich SQL Befehle verbessert werden. Dies stellt aber nicht den Fokus dieses Artikels dar. „Je höher die Buffer Hit Ratio ist, um so besser“. Dies kann mit folgendem Beispiel widerlegt werden. Annahme: Werden bei einer Buffer Hit Ratio von 95 Prozent die logical Reads verringert und die physical Reads bleiben gleich, folgt daraus ein besser laufendes System und eine schlechtere Buffer Hit Ratio. Tatsache ist also: je weniger physical und/oder logical Reads, desto besser läuft das Datenbank System. Rechtsstehend finden Sie einige Mythen, mit denen wir an dieser Stelle einmal „aufräumen“ möchten. In der kommenden Ausgabe, erfahren Sie mehr über Werkzeuge zur Analyse von I/OProblemen und Techniken zur Behebung. Martin Hoermann ([email protected]). Seminarvorstellung: Oracle Tuning und Monitoring Der Teilnehmer lernt anhand der vorhandenen Werkzeuge, Oracle Datenbanken zu analysieren und Performance-Maßnahmen durchzuführen. Voraussetzungen Tiefergehende Kenntnisse des Betriebssystems Unix oder Windows. Tiefergehende Kenntnisse der Oracle Verwaltung oder Teilnahme an den Seminaren „Oracle Datenbankadministration Grundlagen“ und „Oracle Datenbankadministration Aufbau“. Zielgruppe Datenbankadministratoren, Softwareentwickler, Systembetreuer. Termine 22.03.2004 10.05.2004 23.08.2004 25.10.2004 06.12.2004 - 26.03.2004 14.05.2004 27.08.2004 29.10.2004 10.12.2004 in in in in in Wiesbaden Lippstadt Wiesbaden Wiesbaden Wiesbaden Die Termine finden Sie auch immer aktuell im Internet unter http://training.ordix.de. Inhalte • • • • • • • • • • • • Überblick: Tuning-Ziele setzen, methodisches Tunen und Analysieren Mögliche Engpässe erkennen, eventbasiertes Tunen Oracle Interna, Semaphoren, Latches, Speicherstrukturen Indexstrukturen: Indexarten, Implementierung, neue Oracle Indexfeatures SQL-Monitoring: EXPLAIN PLAN, die Struktur der PLAN_TABLE, SQL Trace, die tkprof-Ausgabedatei und ihre Interpretationen, Nutzung der v$-Tabellen Erkennen von Hot SQLs Der Optimizer: Methoden, der ANALYSE-Befehl, Paket Prozeduren Speicherbereiche optimieren, Erkennen von Hot Blocks I/O Optimierung, Platten I/O, Problem-SQLs erkennen, Wartezustände finden Datenbank-Monitoring: Virtuelle Tabellen, Statistikprozeduren, UTLBSTAT/UTLESTAT, Interpretation von Reports Wichtige Statistikparameter, Events und init.ora Parameter Sperrmechanismen: Oracle Sperrverhalten, Deadlocks, Anzeigen/ Auflösen von Sperren, Zugriffskonflikte vermeiden Dauer: 5 Tage Kursgebühr/Teilnehmer: 2.190,00 Euro 15 Java/XML Die eSelect Suite, Teil VI: Electronic Advisor: Lösungen für problemorientierte Beratung Die eSelect Suite ist ein Framework zum universellen Einsatz in eBusiness Projekten. In Vorbereitung auf die komplexer werdenden Geschäftsprozesse, die insbesondere online abgebildet werden müssen, hat die Beteiligungsfirma der ORDIX, Object Systems in Essen, Komponenten realisiert, die die Konfiguration und den Vergleich von komplexen, variantenreichen Prozessen und Produkten unterstützen bzw. abbilden. Dabei wird Konfiguration nicht nur als Zusammenstellen eines konkreten Produktwunsches (z. B. eines PCs) verstanden, sondern es wird noch einen Schritt weitergegangen und auf Basis der Konfigurationskomponenten die ziel- und problemorientierte Beratung eines Kunden ermöglicht. EDV-gestützte Beratung eines Kunden Der Kunde sollte nicht nur in die Lage versetzt werden, ein konkretes Produkt nach seinen Präferenzen zu konfigurieren, sondern gemäß seinen Zielen und individuellen Kundendaten ein Produkt, einen Tarif oder eine Strategie auszuwählen. Die technische Abwicklung und die zugrunde liegenden Komponenten der eSelect Suite sind dabei in beiden Fällen gleich. Die Modellierung des Konfigurationsproblems bewegt sich lediglich auf einem abstrakteren Niveau. So kann das zu konfigurierende „Produkt“ eben auch eine Anlagestrategie, ein Werbemedium oder ein Wertpapierportfolio sein. Gerade im Bereich der Beratung werden meist nur sehr simple Lösungen abgebildet, bei denen die Menge der möglichen Lösungen feststeht und sehr begrenzt ist. Der Benutzer arbeitet sich durch einen vordefinierten Entscheidungsbaum. Komplexe Beratungsprozesse können jedoch auf diese Weise nicht abgebildet werden, weil die große Menge der möglichen Beratungsergebnisse nicht vorab definiert bzw. gepflegt werden kann. Der Prozess ist dynamisch und hängt z. B. von aktuellen Marktbedingungen ab. Ein System, das den komplexen und dynamischen Beratungsprozess abbilden kann, kennt „nur“ die Basiskomponenten des Beratungsprozesses: Ein Parametersystem sorgt für die effektive Aktualisierung und ein Regelsystem sorgt dafür, dass nur gültige und erfüllbare Beratungsergebnisse gebildet werden, während der Kunde seine Wünsche und Ziele formuliert. Lesen Sie zum Thema Regelsystem auch den Artikel „Die eSelect Suite, Teil V: SCSI-Festplatte nur in Verbindung mit SCSI-Controller! - Das Regelwerk der eSelect Suite“ in der ORDIX News, Ausgabe 3/2003. Im Folgenden werden Beratungs-Szenarios beschrieben, die auf Basis der Komponenten der eSelect Suite entworfen und ansatzmäßig als Prototypen umgesetzt wurden. Die Ergebnisse dienten als Evaluierungbasis in Kundenprojekten. 16 „Welche Anlageformen sind für mich die richtigen?“ Ziel dieses Systems ist z. B. die elektronische Unterstützung bei der Anlage und Optimierung von Kundendepots für Wertpapiere. Beratungsprozess Der Beratungsprozess beinhaltet die Basiskomponenten Kunde, Kundenportfolio und Aktie/Fond, deren Struktur in den Abbildungen 1 - 3 vereinfacht dargestellt ist. Kunde Tätigkeit (Ausbildung, Angestellter, Selbstständiger, Rentner u. a.) Familienstand (Ehe, Kinder, u. a.) Besitz von Wertpapieren (Depots, Aktien und Rentenpapiere) Immobilien (Art, Wert, u. a.) Verfügbares Einkommen (monatliche Einnahmen und Ausgaben, Verfügbar) Liquidität Kapitalrücklage Altersvorsorge Abb. 1: Die Struktur der Basiskomponente „Kunde“. Kundenportfolio Depotstruktur (Verhältnis Aktien:Renten) Risikoklasse des Kunden Rentenanlage Aktienwerte Depotsumme Abb. 2: Die Struktur der Basiskomponente „Kundenportfolio“. Java/XML Aktie/Fond Name Branche Kurs Riskoklasse (Kursrisiko) Volumen Bewertung Abb. 3: Die Struktur der Basiskomponente „Aktie/Fond“. Schritt 1: Finanzstatus-Analyse Der Kunde kann seine finanzielle Situation auf Basis der erfassten persönlichen und finanziellen Angaben analysieren lassen. Die Analyse seines Finanzstatus erfolgt bezüglich der Parameter Liquidität (L), Kapitalrücklage (K) und Altersvorsorge (A). Das Analyseergebnis wird anhand eines Punktesystems bezüglich der Analysebereiche L/K/ A ermittelt. Die Punktebewertung ist dabei nicht fest in der Anwendungslogik verdrahtet, sondern kann dynamisch angepasst werden. Ergebnisse werden anhand einer Punktetabelle mit Kundendaten auf der y-Achse und der Analysebereiche auf der x-Achse dargestellt. Pro Analysebereich und je nach Punktezahl können die folgenden Ergebnisse ermittelt werden: • • • Es besteht Handlungsbedarf (roter Bereich) Versorgung ist verbesserungswürdig (gelber Bereich) Bereich ist gut abgedeckt (grüner Bereich) Ist Handlungsbedarf angezeigt, kann der Kunde wählen, ob er einen Einmalbetrag anlegen will oder ob er sein Depot umschichten möchte. Er gelangt zur Portfolio-Konfiguration. Schritt 2: Portfolio-Konfiguration Ausgangspunkt ist das bestehende Portfolio des Kunden. Bei der Anlage eines Portfolios wurden im Vorfeld die folgenden Grundlagen geschaffen: 1) Das System kennt die in Abbildung 4 gezeigten Anlagestrategien. Liquidität: Ertrag: Wachstum: Vorsorge: 80 – 100 % Rentenanlagen, 0 – 20 % Aktienwerte 50 – 80 % Rentenanlagen, 20 – 50 % Aktien 50 – 80 % Aktien, 20 – 50 % Renten 80 – 100 % Aktien Abb. 4: Mögliche Anlagestrategien. Für jede Strategie wird eine optimale Depotstruktur definiert, die dynamisch an Marktverhältnisse angepasst werden kann (z. B. Strategie Ertrag: 66 % Renten, 34 % Aktien). Es existieren Toleranzgrenzen bzw. Wertebereiche, innerhalb derer sich die Depotstruktur bewegen muss. 2) Jedem Kunden wird eine Risikoklasse zugeordnet. Sicherheitsorientiert (1) Konservativ (2) Gewinnorientiert (3) Risikobewusst (4) Abb. 5: Die Einteilung der Kunden erfolgt in mögliche Risikoklassen. Risikoklassen legen fest, welche Aktien/Fonds gewählt werden dürfen/können. Weiterhin ergeben sich aufgrund der Risikoklassen Einschränkungen für die dem Kunden zur Verfügung stehenden Anlagestrategien. Der Kunde kann nun die aktuelle Strategie beibehalten oder eine andere wählen. Das System kann dem Kunden auch eine optimale Strategie vorschlagen bzw. der Kunde kann sich nach getätigter Konfiguration Alternativmöglichkeiten anzeigen lassen. Er kann Wertpapiere regelbasiert auswählen und abwählen. Dabei sieht er nur Wertpapiere, die seiner Risikogruppe entsprechen. Entsprechend den Änderungen werden die Auswirkungen auf die Analysebereiche L/K/A visualisiert (Finanzstatus-Tachometer). 3) Diverse Regeln (siehe Abbildung 6) garantieren die Gültigkeit und Richtigkeit einer Portfolio-Konfiguration. • • • • • • • Depotstruktur muss der gewählten Strategie entsprechen (in diesen Grenzen liegen). Depotstruktur sollte der optimalen Depotstruktur entsprechen. Risikoklasse des Wertpapiers <= Risikoklasse des Kunden. Wenn eine Risikoklasse des Kunden <= 2, dann darf ein Einzelwert nicht mehr als 20 % des Gesamtvolumens ausmachen. Wenn eine Risikoklasse des Kunden > 2, dann darf ein Einzelwert nicht mehr als 35 % des Gesamtvolumens ausmachen. Fondsinkompatibilitäten (z. B. X-FondS nicht mit Y-Fonds). Papiere mit der höchsten Bewertung werden zum Verkauf vorgeschlagen. Abb. 6: Mögliche Regeln für die Portfolio-Konfiguration. „Welches Werbemedium ist für mein Vorhaben das geeignete?“ Ziel ist in diesem Beispiel die Schaffung eines virtuellen Marktplatzes, auf dem Medien aller Gattungen (Zeitschriften, Zeitungen, Außenwerbung, Hörfunk, TV, Online, Kino) geplant, gebucht und bezahlt werden können. Beratungsprozess Der Beratungsprozess beinhaltet als Basiskomponenten die Werbemedien und die Werbeprodukte. Die heterogene Struktur der Werbemedien ist in Abbildung 8 vereinfacht dargestellt. 17 Java/XML Abb. 7: Konfiguration von Werbeprodukten am Beispiel einer Tageszeitung. Ein Werbeprodukt ist eine Werbefläche, die in den Werbemedien gebucht werden kann. Auf Basis der Attribute und Preise eines Werbemediums kann ein Werbeprodukt konfiguriert werden: z. B. eine ganzseitige, farbige Anzeige am Freitag in der Süddeutschen Zeitung. Die Auswahl der Werbemedien erfolgt über einen Kategorie-Editor. Die Kategorien entsprechen den vorgegebenen Medienstrukturen. Oberkategorien wären also Fachzeitschriften, Tageszeitungen usw. Darunter fände man dann die einzelnen Produkte (z. B. unter Tageszeitungen: FAZ, WAZ, SZ usw.). Hier wählt der Nachfrager die Medien aus, bei denen er Werbung schalten möchte. Nach der Auswahl gelangt der Benutzer zur Konfiguration der Werbeprodukte. Ein Nachfrager kann sich beliebig viele Werbeprodukte konfigurieren, diese für seinen Account persistent machen und die Vorund Nachteile abwägen. In Abbildung 7 ist dies am Beispiel einer Tageszeitung vereinfacht dargestellt. Weiterhin werden konkrete Werbeprodukte (Konfigurationen) vom System vorgegeben. Damit können z. B. Restposten und Sonderangebote abgebildet werden, die vom Anwender nicht weiter konfiguriert werden können. • Mediengattungen • Fachzeitschriften • Formatangaben • Schaltungszeiträume • Buchungszeiten • Preislisten • Zeitungen • Formatangaben • Diverse Attribute • Preislisten • • Plakate • Formatangaben • Soziodemographische Daten • Preislisten Kino • Formatangaben • Verfügbarkeitstermine • Preislisten Abb. 8: Die heterogene Struktur der Werbemedien. 18 Hat der Nachfrager sich entschieden, kann er über das Portal die gewählten Werbemedien (bzw. Werbeprodukte) buchen. Ein Nachfrager kann im Anbieterkreis von Werbemedien über das Portal eine Ausschreibung nach individuell gestaltetem Werbemedium bzw. Werbeprodukt starten. Ein Anbieter kann Ausschreibungen im Portal durchsehen und hat die Möglichkeit, über das Portal ein spezielles Angebot an den Kunden zu versenden. Über die erfasste Struktur der Werbemedien können Regeln und Preisformeln gelegt werden. Der Nachfrager wird bei der Konfiguration auf diverse Sachverhalte hingewiesen und die Regeln garantieren, dass nur gültige Werbeprodukte konfiguriert werden. Abbildung 9 enthält eine kleine Auswahl von möglichen Regeln zum Thema 4-Farbdruck. • Ganzseitige Anzeigen sind nur in 4Farbdruck möglich. • • Samstags kein 4-Farbdruck möglich. Der Aufpreis für einen 4-Farbdruck ergibt sich aus dem doppelten Preis für das gewählte Format. Abb. 9: Mögliche Regeln zum 4-Farbdruck. Mit dieser Ausgabe der ORDIX News endet die Artikelserie zur eSelect Suite. Wir hoffen, Ihnen einen umfassenden Überblick über die Funktionalitäten der eSelect Suite und ihre vielfältigen Einsatzmöglichkeiten gegeben zu haben. Bei Fragen zur eSelect Suite wenden Sie sich bitte an [email protected]. Wir beraten Sie gerne! Manfred Lingk, Object Systems GmbH ([email protected]). >(*,.02468:< > ORDIX auf dem BMC Forum Wer in der IT-Welt neue Horizonte entdecken wollte, dem lieferte das diesjährige BMC Software Forum das richtige Programm, wenn es um neueste Lösungen für die IT-Branche ging. Unter dem Motto „Go Beyond Convention“ waren im passenden Ambiente des Lufthansa Flight Training Centers in Frankfurt am 25./26. November namhafte Fachreferenten und Keynote-Speaker geladen. Als erfahrener Berater im Bereich System Management hielt u. a. ORDIX einen Fachvortrag zum Thema „PATROL for SAP Solution Suite bei einer Großbank“. Herr Uwe Rübesamen erläuterte in dem Kunden-Erfahrungsbericht die Möglichkeiten und Grenzen zu diesem Thema. Hinzu kamen weitere Success-Storys und Partner-Solutions sowie ITService-Management-Umsetzungen von Remedy. Zwischen den Vorträgen fand sich immer wieder die Gelegenheit zum persönlichen, intensiven Kontakt auf der Partnerausstellung in der Simulatorenhalle. Vertreten waren neben ORDIX auch SAP Systems Integration, ITConcepts, Materna, TrilogExpert und ACT IT-Consulting & Services. Neben der unkonventionellen Location und dem wertvollen Know-how erwartete die Gäste am Abend des 25. Novembers auch ein festliches Event. Es fand sich spätestens auch hier wieder die gute Gelegenheit, neue Kontakte zu knüpfen, sich mit anderen IT-Spezialisten auszutauschen - oder ganz einfach nur den Abend zu genießen! ( Open Source Engagement verstärkt Seit Oktober 2003 ist ORDIX „SUSE Business Advanced Partner“ sowie „Support Partner“. ORDIX ist bereits seit Mitte des Jahres 2003 SUSE Partner. Durch diese Partnerschaft und das Sponsoring des „Linux Professional Institute German“ (LPI German) unterstützen wir zum einen unser langjähriges Open Source Engagement, zum anderen erweitern wir damit aber auch unser Produkt- und Dienstleistungsspektrum im Bereich Linux. Neu im Schulungsangebot ist z. B. der Ausbildungsgang Linux zur LPI-Zertifizierung. Interessierte Kunden können zudem alle Business Produkte der SUSE LINUX AG über ORDIX beziehen - selbstverständlich mit der zugehörigen, kompetenten Dienstleistung. Und last but not least ... sind unsere Linux-Mitarbeiter natürlich auch LPI zertifiziert! * Neues Web-Design für Traditionsbetrieb Dahlhoff – oder: Wie die Feinkost in den Magen kommt ... Die Zeiten, in denen der Weg von gutem Essen direkt „von der Hand in den Mund“ führte, sind längst vorbei. Schon alleine, weil die Feinkost nicht immer im sprichwörtlichen Sinne „zum Greifen nahe“ liegt, sondern auch gerne mal aus Cuxhaven oder Haltern kommen darf. Die Dahlhoff Feinkost GmbH tat nun einen wichtigen Schritt, um diesen alten Sprichworten wieder Bedeutung zu schenken: Mit Hilfe von ORDIX hat das Unternehmen Dahlhoff seinen Internetauftritt neu konzipiert und gestaltet, um seinen Bekanntheitsgrad zu steigern. ORDIX hatte dabei eine schwierige Gratwanderung zu bewältigen. Durch einen abgestimmten Mix an Bild- und Textmaterial sollten sowohl die Endverbraucher als auch der Einzelhandel angesprochen werden. Das traditionsreiche Unternehmen mit Hauptsitz in Haltern am See und weiterem Produktionsbetrieb in Cuxhaven entschied sich dafür, seinen alten Internetauftritt moderner gestalten zu lassen und nutzte dabei den Full-Service der ORDIX AG. ORDIX erstellte ein neues Konzept unter Wahrung der Corporate Identity für eine lebendig wirkende Internetpräsentation, führte Fotosessions in den Produktionsräumen durch, vermittelte zusätzliche Fotos, entwickelte das neue Erscheinungsbild und arbeitete bei der Textgestaltung mit. Ziel des Auftritts ist eine Präsentation des Leistungsspektrums. Das Ergebnis ist nun schon seit Oktober 2003 unter http://www.dahlhoff.de zu sehen. Gerne steht unser WebServicesTeam auch Ihnen für Fragen zum Thema WebDesign zur Verfügung. Sprechen Sie uns an ([email protected])! 19 Aktuell Datenbanken? Larry Ratlos: Ich brauche ein SQL-Programm, welches mir die kürzeste Gesamtzeit berechnet? Nachdem sich Larry Ratlos in der letzten Ausgabe offensichtlich mit einer extrem schwierigen Thematik befasste, will er sich diesmal nach Weihnachten nicht mehr den Kopf zermartern. Stattdessen will er das neue Jahr gedanklich ganz ruhig angehen lassen. Schließlich hat er wichtigere Ziele: Es „lagern“ immer noch einige der Weihnachtskekse in seinem Bauch und um die Hüften. Und sein höchster Vorsatz für das neue Jahr war, diese wieder abzutrainieren. Also macht er sich nach einem langen Arbeitstag mit seinen Kollegen auf zu einem ausgiebigen Spaziergang. Es ist klirrend kalt und nach vier Stunden bester Wanderung möchten die vier nun den kürzesten Heimweg über den Fluss antreten. Dieser führt über einen schmalen Steg. Aufgrund der späten Stunde und ihrer verschieden starken Nachtblindheit möchte niemand unbedingt alleine über den schmalen Steg gehen müssen. Außerdem ist es so dunkel, dass man nicht mal mehr seine Hand vor Augen erkennt. Da der Steg aber nicht mehr sehr stabil ist, können sie nur mit maximal 2 Personen zugleich hinüber gehen. Hinzu kommt, dass sie nur eine Taschenlampe besitzen und deshalb eine Person immer wieder zurück muss, um jeweils einen Kollegen oder eine Kollegin abzuholen. Können Sie Larry helfen? Sie bitten Larry, ihnen zu verraten, wie sie am schnellsten alle vier, jeweils einzeln oder zu zweit und immer mit der Taschenlampe ausgerüstet, von der einen Seite des Steges zur anderen gelangen. Da es kalt ist, und alle gemeinsam möglichst schnell nach Hause möchten, steht Larry vor einem Rätsel. Dann schicken Sie Ihren Lösungsvorschlag bitte bis zum 29.02.2003 an [email protected]. Die Namen und Lösungen von drei Helfern werden wir wieder veröffentlichen. Und Larry wird die Hilfe natürlich auch belohnen. Er weiß: die flinke Sportskanone Ruth würde bereits nach 1 Minute das andere Ufer des Flusses erreichen. Und auch Ulla würde nach 2 Minuten drüben sein. Doch der dicke Hans würde 9 Minuten benötigen und der behäbige Willi gar ganze 10 Minuten. Die Lösung des Rätsels aus 3/2003 Larry überlegt sich, diese Daten in einer Datenbank in einer Tabelle abzulegen und die Lösung per SQL zu ermitteln: Dauer 10 9 2 1 22 Wie sollen sie sich nun begleiten, sodass in der kürzestmöglichen Zeit alle vier gemeinsam am anderen Ufer stehen? Schreiben Sie ein Programm, welches die kürzeste Gesamtzeit berechnet. Da Larry ein Fan von SQL ist, sollten sie ihn mit einem kleinen SQL-Programm unterstützen! Kleiner Tipp: Die vier schaffen es schließlich, in 17 Minuten über die Brücke zu kommen. Name Willi Hans Ulla Ruth In der letzten Ausgabe der ORDIX News hatte Larry ein Oracle 9i Problem. Larry´s Kollege hatte diverse Buffer Pools eingerichtet. Nun wollte Larry herausfinden, wie viele Blöcke in den verschiedenen Buffer Pools lagen. Außerdem intressierte ihn, wie viel Prozent des Buffer Pools db_2k_cache_size mit Blöcken aus dem Tablespace INDEX_1 (ts# = 7) belegt waren. Die einzige Idee, die er zu dem Problem hatte, war, dass man dazu tiefer in die Instanz sehen, also x$... views verwenden muss. Aktuell Im Folgenden wollen wir die Musterlösung der vergangenen Ausgabe vorstellen, die Larry´s smarte Kollegin Kora Koracallis zur Verfügung gestellt hat. Offensichtlich stand diesmal nicht nur Larry vor einem Rätsel, sondern sämtliche unserer News-Leser. Es wagte sich niemand mit einem Vorschlag an dieses Thema heran und so veröffentlichen wir diesmal auch nur die Musterlösung! Die Musterlösung: SELECT b.name buffer_pool, b.buffers, k.set_id, k.blk_size, b.lo_setid, b.hi_setid, b.set_count, k.ckpt_latch, count( * ) FROM x$kcbwds k, v$buffer_pool b, x$bh bh WHERE k.set_id BETWEEN b.lo_setid AND b.hi_setid AND bh.set_ds = k.ckpt_latch AND buffers > 0 -- AND bh.ts# = 7 GROUP BY b.name, b.buffers, k.set_id, k.blk_size, b.lo_setid, b.hi_setid, b.set_count, k.ckpt_latch; Diese Aufgabe war in der Tat schon etwas schwieriger, weil die beiden Tabellen v$bh und v$buffer_pool nur über die undokumentierte Tabelle x$kcbwds zu verbinden sind. x$kcbwds stellt die Speicherstruktur der LRU Listen dar, während die Tabelle v$bh für jeden Block im Block Buffer eine Zeile enthält und die Tabelle v$buffer_pool eine Zeile für jeden Buffer Pool beinhaltet. Jeder Buffer Pool hat eigene LRU Listen (gekennzeichnet durch set_id), jeder Block verweist auf seinen Checkpoint Latch (ckpt_latch), der wiederum die LRU Struktur schützt (set_ds). Wenn man im Skript die Zeile „ -- bh.ts# = 7“ einkommentiert, so beinhaltet die Ausgabe nur Blöcke aus Tablespace 7. Jetzt stellt sich natürlich noch die Frage, wann benötige ich dies überhaupt? In der Regel sind die Statistiken aus statspack schon recht ausführlich und bieten auch zahlreiche Analysemöglichkeiten beim Einsatz von multiplen Buffer Pools. Dennoch ist es in einigen Fällen recht interessant, welche Segmente wie gut in den verschiedenen Buffer Pools gepuffert werden bzw. welche Segmente vielleicht überhand nehmen. Martin Hoermann ([email protected]). Sie kam, ritt und siegte Sponsoring: ORDIX begleitet Hannelore Brenner bis an die Spitze. Seit mehr als 3 Jahren begleitet ORDIX die behinderte Dressurreiterin Hannelore Brenner. Die Reiterin erzielte in der Vergangenheit grandiose Erfolge bei den Paralympics und zahlreichen deutschen und Europa-Meisterschaften. Zudem ist sie amtierende Weltmeisterin im Grade II. Derzeit setzt sich Ihr Erfolgskurs steiler fort denn je. Von den Deutschen Meisterschaften ... In 2003 konnte Hannelore Brenner ihren Vorjahrestitel als Deutsche Meisterin erfolgreich verteidigen. Dabei stellte sie bei den Deutschen Meisterschaften vom 11. - 14. September 2003 in Lingen mit großem Abstand alle Ihre Mit(st)reiter in den Schatten. „Fabiola und ich sind als Team gut zusammen gewachsen. Es macht Spaß, mit ihr zu arbeiten. Sie ist gelehrig, arbeitet konzentriert und weiß, worauf es in den Prüfungen ankommt“, lobt die Reiterin ihr hochkarätiges Pferd. ... zu den Weltmeisterschaften Hannelore Brenner nimmt es nicht nur mit der nationalen Konkurrenz auf. Sie hat schon lange bewiesen, dass sie ihren Platz auch bei den Weltmeisterschaften der Dressurreiter mit Handicap überaus verdient hat. Als eine von vier Reiterinnen fuhr sie in 2003 vom 2. - 7. September in das belgische Moorsele zu den Weltmeisterschaften. Dort konnten die Reiter zum zweiten Mal in der Geschichte des Dressurreitens für behinderte Menschen auf eigenen Pferden starten. Üblich ist sonst die Zulosung von Leihpferden. Dieses trug maßgebend zu einer positiven Entwicklung der Qualität der Pferde bei. Vielleicht auch ein Grund für die überragende Mannschafts-Silbermedaille. Das deutsche Team, bestehend aus Hannelore Brenner (Grade II) auf Fabiola, Birgit Dreiszis (Grade Ib) auf Fernando, Brigitte Eistel (Grade III) auf Aaron und Cornelia Müller (Grade IV) auf L´Carpo, erreichte 428,12 Punkte. Sie mussten allerdings dem englischen Quartett den Vortritt lassen. Blick in die Zukunft „Um als Reiter in der internationalen Klasse Bestand zu haben, benötigt man stetig gutes Pferdematerial“, so Hannelore Brenner. Sie erwarb deshalb einen jungen Fuchswallach, von dem sie sich ebenso gute Leistungen wie von ihrer momentanen Erfolgs-Stute Fabiola erhofft. Jedoch müssen die beiden bis dahin noch üben, üben, üben ... Stefanie Heither ([email protected]). 23 System Management - Titelthema SAP-Überwachung SAP-Überwachung mit PATROL Erfahrungsbericht aus einer komplexen Umgebung Im Rahmen eines IT-Projektes wird ein neuentwickeltes SAP-System als Bankenkernanwendung eingesetzt. Die ORDIX AG unterstützte in diesem Projekt bei der Aufsetzung einer Monitoring-Lösung für diese SAPLandschaft. Im folgenden Praxisbericht werden wir die Überwachungslösung mit PATROL for SAP Solutions von BMC näher beleuchten und die konkreten Erfahrungen aus diesem System Management Projekt beschreiben. Dieser Artikel befasst sich mit den definierten Anforderungen und den Überwachungswerkzeugen. Das eigens für dieses Projekt neu entwickelte SAP-Modul bedient den Bankenkernbereich. Deshalb werden an diese Applikation hinsichtlich Verfügbarkeit und Performance besonders hohe Anforderungen gestellt. Um diesen Anforderungen zu genügen, wurde eine entsprechende Systemarchitektur gewählt und ein umfangreiches Monitoring implementiert. Das zugrunde liegende SAP System besteht aus einer DB2-Datenbank, die auf MVS unter z/OS läuft, aus dem zentralen Applikationsserver unter USS und aus mehreren Applikationsservern unter AIX. Zentraler Applikationsserver bedeutet in diesem Zusammenhang, dass auf dem Applikationsserver unter USS der Message- und der Enqueue-Server laufen. Als interne Systemautomation wird „System Automation for OS/390“ (SAfOS) eingesetzt. Abbildung 1 zeigt die Systemarchitektur noch mal in einer Übersicht. Konzeption der Überwachung Im Rahmen des Projektes wurden zuerst die zu überwachenden Parameter festgelegt, bevor man in die Diskussion über die zu verwendenden Werkzeuge eintrat. Hierzu mussten unter anderem folgende Fragen beantwortet werden: • • • • • Welche Komponenten sollen überwacht werden? Welche Systemparameter sollen überwacht werden? Lassen sich sinnvolle Abhängigkeiten und Korrelationen definieren? Wo werden Alarme sichtbar? Welche Eskalationsmechanismen werden benötigt? Wer legt die Schwellwerte fest und wie werden sinnvolle Einstellungen ermittelt? Wer legt die Reaktionen fest und welche Maßnahmen sind sinnvoll? • Wer ist für Betrieb und Anpassung der Überwachung verantwortlich? Die daraus festgelegten Anforderungen wurden wie folgt umgesetzt: Zu einem Teil werden die Möglichkeiten der einzelnen Systemkomponenten zur Überwachung genutzt, wie z. B. die Fehlermeldungen der DB2-Datenbank, des SAfOS und des Betriebssystems der AIX-Applikationsserver. Zum anderen werden für den Bereich z/OS, für die Überwachung der Applikationsserver und für das SAP System Überwachungswerkzeuge der Firma BMC zu Hilfe genommen. Für das z/OS ist dies Mainview, die Überwachung der Applikationsserver findet mit PATROL Classic statt und das SAP System wird mit der PATROL for SAP Solution Suite überwacht. Zentrale Störmeldekonsole Um eine einheitliche Bearbeitung aller Störungen zu gewährleisten, sollte eine zentrale Konsole eingesetzt werden, welche in der Lage ist, die Events aller eingesetzten MonitoringKomponenten zu verarbeiten. Für derartige Integrationsanforderungen hat das Unternehmen das Produkt „MasterCell“ im Einsatz. Alle Komponenten wurden über Schnittstellen an die zentrale Störmeldekonsole (ZSK) angeschlossen. Dort laufen die Warnungen und MasterCell Die Firma IT Masters, die diese MasterCell-Konsole entwickelte, wurde im Verlauf des Projektes Teil der Firma BMC. Die MasterCell-Konsole wird nun als Teil der PATROL Familie unter dem Namen „PATROL Impact Manager“ angeboten. Das Projekt hat den Verantwortlichen gezeigt, wie gut sich diese beiden Komponenten ergänzen. Abb. 1: Systemarchitektur der Anwendung, die mit SAP entwickelt wurde. 24 System Management Alarme zusammen. Abbildung 2 zeigt einen Ausschnitt der MasterCell-Konsole. Für jedes der definierten Ereignisse hat die verantwortliche Fachabteilung eine Maßnahme festgelegt, die es dem Leitstand ermöglicht, adäquat zu reagieren. Somit ist sichergestellt, dass keine unvorhergesehenen Situationen entstehen. Überwachung des SAP Systems PATROL for SAP Solutions sorgt für das Monitoring des SAP Systems. Ziel ist eine Verkürzung der Reaktionszeiten im Fehlerfall und damit eine höchstmögliche Verfügbarkeit der Applikation. Das Gesamtsystem wird kontinuierlich unter Berücksichtigung betriebsbedingter Offline-Zeiten bestimmter Komponenten überwacht. Abb. 2: Blick auf die Events in der MasterCell-Konsole. wachung auch in solchen Situationen stets gewährleistet. Die Vorgaben waren, die Überwachungsmeldungen unter den Gesichtspunkten der Verfügbarkeit, kritischer Systemereignisse und möglicher Fehlentwicklungen von Systemparametern darzustellen. Kritische Systemereignisse und fehleraus lösende Tendenzen werden erkannt. Der gewünschte Zustand der kritischen Systemkom ponente wird weitgehend durch automatische Aktionen wieder hergestellt. Kann oder soll eine solche Aktion nicht automatisiert ausgeführt werden, wird eine Meldung an die ZSK übermittelt. Mit Hilfe der von der Fachabteilung vorgegebenen Lösungswege beseitigt der Betrieb das aufgetretene Problem. Die Überwachungskriterien werden vom R/3Basisbetrieb kontinuierlich überprüft und bei Bedarf neu festgelegt und umgesetzt. Das bedeutet, Änderungen von Parametern oder Schwellwerten können aus dem SAP System heraus ohne notwendige Kenntnisse der anderen Komponenten der Alarmkette eingestellt werden. Darüber hinaus gibt es einen stündlich gestarteten Job (/BMC/ TR_PME_COLLECTORS_GUARD), der prüft, ob der Kollektor noch aktiv ist und notfalls versucht, ihn wieder zu starten. Für die einzelnen Parameter wird eine Priorität festgelegt. Über diese Priorität werden bei Schwellwertüberschreitungen die daraus resultierenden Systemereignisse ausgelöst. Sie werden an die PATROL Agenten auf den Applikationsservern weitergeleitet. Die Agenten werden in Verbindung mit dem SAP Knowledge Module genutzt, um die Warnungen und Alarme an die ZSK weiterzugeben. Die PATROL Agenten laufen auf allen Applikationsservern und überwachen dort zusätzlich das Betriebssystem. Im Gegensatz zu den üblichen Knowledge Modulen von PATROL, mit denen etwa das Betriebssystem Unix überwacht wird, werden mit dem SAP Knowledge Modul nicht alle Messwerte dargestellt und historisiert, sondern nur definierte Warn- oder Alarm-Stati aus dem R/3 System weitergegeben und in der ZSK dargestellt. Zentrale Übersicht über alle Systeme Neben der Möglichkeit, Alarme an die PATROL Agenten weiterzuleiten, bietet PATROL for SAP Solutions eine Management- und Visualisierungskonsole, die als Transaktion aufgerufen und innerhalb des SAP-GUI abgearbeitet wird. Umsetzung der SAP Überwachung BMC PATROL for SAP Solutions ist in ABAP entwickelt, die Datensammlung und deren Management finden in dem R/3 System statt. Die Datensammlung nutzt die gleichen Funktionen wie die SAP-eigene Überwachungskomponente CCMS, bietet darüber hinaus jedoch zusätzliche Parameter und systemübergreifende Überwachungsmöglichkeiten an. Als Kollektor (/BMC/TR _DATA_COLLECTOR) gestartet, belegt PATROL for SAP Solutions permanent einen Hintergrundprozess. Treten Engpässe bei den Prozessen auf, ist die Über- Von dieser Konsole aus ist es möglich, alle vorhandenen SAP Instanzen über RFC-Verbindungen gleichzeitig zu überwachen und Glossar SAfOS: System Automation for OS/390 MVS: Multiple Virtual Storage - IBM-Betriebssystem(teil), basierend auf OS/1 ZSK: Zentrale Störmeldekonsole RFC: Remote Function Call 25 System Management zu bedienen. In dieser Konsole werden Messintervalle, Schwellwerte für die zu überwachenden Parameter und automatische oder Alarm-Aktionen eingestellt (siehe Abbildung 3). Auf einen Blick können hier sämtliche SAP Systeme, die überwacht werden, auf mögliche Probleme hin überprüft werden. Unterhalb der Systeme wird direkt aufgeführt, wo das mögliche Problem aufgetaucht ist: ob in der Datenbank, ob im Betriebssystem oder ob ein bestimmter Applikationsserver Probleme hat. Von dieser Konsole aus kann dann ein Drilldown stattfinden, der den Störfall genau lokalisiert (siehe Abbildung 4). Fazit Abb. 3: Management- und Visualisierungskonsole mit Sicht auf diverse SAP Systeme. Allen drei an der Überwachung beteiligten Betriebsgruppen wird der Zustand der SAP Anwendung nun in einer ihnen vertrauten Form dargestellt: Mit der Management- und Visualisierungskonsole steht den SAP Administratoren ein vollständig in SAP integriertes Werkzeug zur Verfügung. Für den Unix Betrieb stellt die klassische PATROL Konsole alle wesentlichen Informationen dar. Hier werden kritische Ereignisse historisiert und PATROLtypisch ins Service Reporting übernommen. Last but not least werden alle kritischen Ereignisse an die ZSK weitergereicht, um eine hohe Verfügbarkeit rund um die Uhr zu gewährleisten. In einer der nächsten Ausgaben werden wir genauer auf den Einsatz der BMC-Software unter Betriebsbedingungen eingehen. Abb. 4: Problem Screen von PATROL for SAP Solutions. News Ticker > Uwe Rübesamen ([email protected]). Hier kommt nochmal das T-Shirt als Füller rein! Herzlichen Glückwunsch dem Schach Quiz Gewinner! Über 10 Jahre hinweg berichtete die ORDIX News Redaktion zum „ORDIX Open“. In der letzten Ausgabe der ORDIX News stellten wir unsere Leser mit einem kleinen Quiz auf die Probe. Hier die richtigen Lösungen auf die Schach Fragen: 1 a, 2 c, 3 a, 4 b, 5 b, 6 a, 7 a, 8 c, 9 c, 10 a Richtig beantwortete als Einziger Herr Ralf Glöckner alle Fragen. Gut aufgepasst & Herzlichen Glückwunsch! Ihr Preis ist eines der limitierten ORDIX Open Jubiläums-Poloshirts sowie ein Überraschungspräsent! Wir wünschen Ihnen viel Spaß damit! Die Redaktion 26 Datenbanken Performancetest: Ladefunktionalitäten unter Oracle 9i Unter Oracle 9i gibt es mehrere neue Features, um Daten in eine Datenbank zu laden: External Tables zum Einpflegen von Daten in eine Datenbank und Multitable Inserts zum Verteilen von Datensätzen aus einer Tabelle auf mehrere verschiedene Tabellen. Mit einem Performancetest wollen wir überprüfen, wie schnell sich mit den neuen Features große Datenmengen in eine Datenbank einpflegen lassen und das Ergebnis mit dem sql*loader und dem Verteilen über ein PL/SQL-Skript vergleichen. Auch die Kombinationen von alten und neuen Features werden auf ihre Performance hin getestet. Mit dem Test soll herausgefunden werden, mit welchen Methoden man am schnellsten große Datenmengen in eine Datenbank einpflegen kann. Beschreibung der angewendeten Funktionalitäten Der sql*loader ist ein Tool, um Daten aus einer Betriebssystemdatei in die Oracle-Tabellen zu laden. Die erforderlichen Informationen bekommt der sql*loader aus zwei Dateien. Zum einen aus dem Data-File, in dem sich create table daten (KUNDENNR NUMBER(10) NOT NULL, NAME VARCHAR2(40), TELEFON VARCHAR2(12), STRASSE VARCHAR2(40), PLZ VARCHAR2(12), ORT VARCHAR2(30), BESTELLNR NUMBER(10) NOT NULL, BESTELLPOSITION VARCHAR(20), ANZAHL NUMBER(5), PREIS NUMBER(5) ); Abb. 1: Skript zum Anlegen der Tabelle „daten”. create table kunden (KUNDENNR NUMBER(10) NOT NULL, NAME VARCHAR2(40), TELEFON VARCHAR2(12), STRASSE VARCHAR2(40), PLZ VARCHAR2(12), ORT VARCHAR2(30) ); create table bestellungen (KUNDENNR NUMBER(10) NOT NULL, BESTELLNR NUMBER(10) NOT NULL, ANZAHL NUMBER(5) ); create table ware (BESTELLNR NUMBER(10) NOT NULL, BESTELLPOSITION VARCHAR2(20), PREIS NUMBER(5) ); Abb. 2: Anlegen der Tabellen „kunden“, „ware“ und „bestellungen”. die eigentlichen Daten befinden und zum anderen aus dem Control-File, in dem sich die Informationen befinden, wie die Daten in die Tabellen eingeladen werden sollen und in welcher Form die Daten im Data-File vorliegen. Die Daten werden bei der konventionellen Methode des sql*loaders über INSERT-Befehle in die Datenbank geladen. Der „direct path loader“, ein bestimmter Modus des sql*loaders, erstellt die Datenblöcke im Oracle Datenbank-Format. Diese werden dann direkt in die Datenbankdateien geschrieben. Es werden gleichzeitig mehrere Puffer gefüllt und es wird, wenn die Datenbank auf asynchrones I/O eingestellt ist, parallel in die Dateien geschrieben, während die Puffer wieder gefüllt werden. Ein neues Feature unter Oracle 9i ist das Laden von Dateien über sogenannte Externe Tabellen (external tables). Externe Tabellen sind den SQL-Tabellen sehr ähnlich, nur dass sie sich außerhalb der Datenbank befinden. Lediglich die Definition wird im Data Dictionary hinterlegt. Die Tabellen bestehen in Form von Dateien bereits außerhalb der Datenbank. Wenn sich die Metadaten im Data Dictionary befinden, können die externen Tabellen per Select abgefragt werden. Das INSERT...SELECT STATEMENT kann mit einer Anweisung Zeilen in mehrere Tabellen einfügen. Das Multitable Insert Statement fügt die Ergebnismenge einer Subquery in die Tabellen ein. Es gibt mehrere Arten von Multitable Inserts, wir haben den Conditional Insert All gewählt. Alle Sätze der Ergebnismenge werden in alle Tabellen, die über die INTO-Klausel zugewiesen sind, eingefügt. (Mehr zum Thema Multitable Inserts finden Sie im Artikel „Oracle 9i New Features Teil III: SQL in Oracle 9i“ der ORDIX News 3/2002.) Die Tests wurden auf folgender Maschine durchgeführt: • PRIMERGY 470 GE FH PIII MHz • 512 MB SDRAM • 100 MHz • 1 CPU • Betriebssystem Red Hat Linux 7.2 • Oracle Umgebung 9.2.0 Testablauf Zunächst werden die Testdaten über ein Perl-Skript erzeugt. Dem Test liegt eine Datenmenge von 500.000 Datensätzen zu Grunde. 27 Datenbanken Die Tabellen daten, kunden, ware und bestellungen werden per Skript, wie in den Abbildungen 1 und 2 dargestellt, angelegt. Bei Test 1 - 4 werden die Daten zunächst aus der Datendatei in eine Tabelle geladen und von der Tabelle aus auf die Tabellen kunden, ware und bestellungen verteilt. Das Verteilen der Daten erfolgt über ein PL/SQL-Skript oder über Multitable Inserts. Abb. 3: Laden über sqlldr mit Verteilung über PL/SQL bzw. Multitable Inserts. LOAD DATA INFILE ‘daten.dat’ DISCARDFILE ‘daten.dsc’ DISCARDMAX 999 REPLACE INTO TABLE daten (kundennr TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, name TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, telefon TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, strasse TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, plz TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, ort TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, bestellnr TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, bestellposition TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, anzahl TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘, preis TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘) Abb. 4: Sql*loader. Bei den Tests 5 und 6 wird zunächst eine externe Tabelle erzeugt und danach werden die Daten wieder über PL/SQL bzw. Multitable Inserts auf die drei anderen Tabellen verteilt. Dabei wird jeweils die Zeit gemessen. Jeder Test wird dreimal durchgeführt und bei der Zeit der Mittelwert aus den drei Testläufen genommen, um möglichst genaue Zeiten zu erhalten. Nach jedem Test werden die Datensätze wieder aus den Tabellen herausgelöscht und die Rollbacksegmente werden wieder verkleinert. Test 1 Die Datensätze werden über sqlldr mit der konventionellen Methode in eine DatenbankTabelle eingepflegt und dann mit einem PL/ SQL-Skript auf die anderen Tabellen verteilt. Das Laden der Daten dauerte hier 70 Sekunden und das Verteilen 460 Sekunden. Somit kommen wir auf eine Gesamtdauer von 530 Sekunden. Test 2 Die Daten werden über den konventionellen Modus des sql*loader in die Datenbank-Tabelle geladen und dann mit Multitable Inserts auf die anderen Tabellen verteilt. Das Laden der Daten dauerte hier 70 Sekunden und das Verteilen 40 Sekunden. Somit kommen wir auf eine Gesamtdauer von 110 Sekunden. DECLARE counter NUMBER; CURSOR c1 IS SELECT * FROM daten; BEGIN FOR v_c1 in c1 LOOP insert into kunden values (v_c1.kundennr,v_c1.name,v_c1.telefon, v_c1.strasse,v_c1.plz,v_c1.ort); insert into bestellungen values (v_c1.bestellnr,v_c1.kundennr,v_c1.anzahl); insert into ware values (v_c1.bestellnr,v_c1.bestellposition,v_c1.preis); END LOOP; END; / Abb. 5: PL/SQL. 28 Test 3 Mit dem direct path loader werden die Daten in die Datenbank-Tabelle eingepflegt und dann mit einem PL/SQL-Skript auf die anderen Tabellen verteilt. Das Laden der Daten dauerte hier 17 Sekunden und das Verteilen 460 Sekunden. Die Gesamtdauer beträgt 477 Sekunden. Test 4 Mit dem direct path loader werden die Daten in die Datenbank-Tabelle geladen und dann mit Multitable Inserts auf die anderen Tabellen verteilt. Das Laden der Daten dauerte 17 Sekunden und das Verteilen 40 Sekunden. Wir kommen auf eine Gesamtdauer von 57 Sekunden. Datenbanken Test 5 INSERT ALL INTO kunden VALUES (kundennr, name, telefon, strasse, plz, ort) INTO bestellungen VALUES (kundennr,bestellnr,anzahl) INTO ware VALUES (bestellnr,bestellposition,preis) SELECT kundennr, name, telefon, strasse, plz, ort, bestellnr, anzahl, bestellposition, preis FROM daten; Eine External Table wird angelegt und die Daten werden dann über ein PL/SQL-Skript auf die anderen Tabellen verteilt. Das Verteilen der Daten aus der externen Tabelle auf die anderen Tabellen dauert hier 460 Sekunden. Durch das Anlegen der externen Tabelle entfällt die Zeit für das Laden. Test 6 Eine External Table wird angelegt und die Daten werden dann mit Multitable Inserts auf die anderen Tabellen verteilt. Das Verteilen der Daten aus der externen Tabelle auf die anderen Tabellen dauert 71 Sekunden. Durch das Anlegen der externen Tabelle entfällt die Zeit für das Laden. Zusammenfassung der Testergebnisse Abb. 6: Multitable. Verifikationstest Fall 4 und 6 Abb. 7: Externe Tabelle mit Verteilung über PL/ SQL bzw. Multitable Inserts. CREATE TABLE daten1_ext( kundennr NUMBER, name CHAR(40), telefon CHAR(12), strasse CHAR(40), plz CHAR(12), ort CHAR(30), bestellnr NUMBER, bestellposition CHAR(20), anzahl NUMBER, preis NUMBER) ORGANIZATION EXTERNAL( TYPE oracle_loader DEFAULT DIRECTORY ext_dat_dir ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘„‘ MISSING FIELD VALUES ARE NULL) LOCATION(‘daten.dat’) ) REJECT LIMIT UNLIMITED; Abb. 8: External Table. Da die Testergebnisse von Test 4 ( direct path loader + Verteilung über Multitable Inserts) und Test 6 (External Table + Verteilung über Multitable Insert) sehr dicht beieinander lagen, wurde noch ein Verifikationstest durchgeführt. Dabei wurden jeweils 2.000.000 Datensätze in die Tabellen eingepflegt. Fazit Möchte man große Datenmengen möglichst schnell in eine Datenbank einpflegen, sollte man auf die Kombination von direct path loader und Multitable Inserts setzen. In unserem Test war dies die schnellste Methode, die 500.000 und auch die 2.000.000 Datensätze in die Datenbank einzupflegen. Aber auch die Kombination der beiden neuen Features External Tables und Multitable Inserts unter Oracle 9i bietet die Möglichkeit, mit einem relativ geringen Aufwand und vor allem in einer sehr kurzen Zeit eine große Datenmenge in die Datenbank zu laden. Kathrin Hammerschmidt ([email protected]). 29 Unix/Linux/Open Source Source - Titelthema Serverkonsolidierung Serverkonsolidierung oder: Aus „Alt” mach „Neu” Nahezu jedes größere IT-Projekt wird mit der folgenden Erfahrung „konfrontiert“: Die Ressourcen-Grenzen sind weitestgehend ausgereizt, die CPUs zu langsam, eine Erweiterung mit zusätzlichen CPUs ist auch nicht mehr möglich; von dem stetig steigenden Speicherbedarf neuer Anwendungen ganz zu schweigen. Und zu guter Letzt kann es auch noch passieren, dass der Lieferant die Wartung und Weiterentwicklung der eingesetzten Systeme für die nahe Zukunft „ab“kündigt. Als Trost bleibt nur, dass die Systeme wahrscheinlich schon lange abgeschrieben sind. Neben den rein technischen Aspekten gibt es noch einen weiteren Grund für den Plattformwechsel, der zur Zeit vielen IT-Abteilungen „zu schaffen“ macht: Während vor ein paar Jahren Projekte noch mit einer Vielzahl von unterschiedlichen Systemen realisiert wurden, geht man heute gerne den Weg der Serverkonsolidierung. Anstatt „eigenständige“ Systeme für die einzelnen Projekte einzusetzen, liegt es im Trend, viele Projekte in einem System unterzubringen. Dies soll neben den Infrastruktur-Kosten (Stellplatz, Strom, etc.) auch die Administrationskosten senken helfen. Vor diesem Hintergrund ist es für die IT-Abteilung selbstverständlich, sich rechtzeitig nach anderen Lösungs-Plattformen umzuschauen. Die ORDIX AG hat bereits diverse Kunden in dieser Phase der Konsolidierung unterstützt - von der Ausarbeitung eines Konzeptes bis hin zu dessen späterer Realisierung. In diesem Artikel möchten wir unsere Projekterfahrung darstellen und beispielhaft den Werdegang eines Projektes von der Konzepterstellung bis zur Realisierung/Migration aufzeigen. ... wurde ein Anforderungskatalog erarbeitet Von Anfang an werden alle beteiligten Personen aus Entwicklung, Fachseite, Anwendungsbetreuung und Betrieb an der Ausarbeitung der zukünftigen Systemarchitektur beteiligt. Im ersten Schritt werden in mehreren Workshops die Anforderungen an die zukünftige Systemarchitektur erarbeitet und in einem Anforderungskonzept festgehalten. Im Vordergrund steht dabei natürlich vor allem der Kostenaspekt. Nachfolgend ein Auszug der wichtigsten Anforderungen: Standort-Faktoren: • Reduzierung der sechs Standorte auf zwei Standorte. Das soll die Standort-Kosten senken und den Netzverkehr innerhalb der Systeme von einem kostenintensiven WAN auf eine kostengünstige LAN-Strecke verlegen. • Drei der bestehenden Systeme sollen zu einem neuen System zusammengeführt werden, um die Anzahl der Systeme zu minimieren. Die Reduzierung der Systeme und der damit einhergehende geringere Administrationsaufwand zielen ebenfalls darauf ab, die Kosten zu senken. • Es ist eine räumliche Trennung innerhalb der Standorte angestrebt. Eine Feuerschutzwand soll im Katastrophenfall das Übergreifen eines Brandes von einem Raum in den anderen verhindern und so die Verfügbarkeit sicherstellen. Vor der Migration Dazu ein kleines Schaubild über eine mögliche Systemarchitektur vor der Migration (siehe Abbildung 1). Die Gesamtanwendung verteilt sich über sechs Standorte hinweg auf jeweils vier Cluster. Jedes Cluster besteht aus zwei Knoten mit insgesamt zwei Systemschränken und zwei Plattenschränken. Hardware-Ressourcen: • Abb. 1: Verteilte Infrastruktur auf 6 Standorte vor der Migration. 30 Die CPU-Leistung und der zur Verfügung stehende Speicher sollen die bisherigen Werte um 30 % übertreffen. Da der Plattform-Wechsel mit einem Release-Wechsel inklusive zusätzlicher Funktionalitäten Unix/Linux/Open Source einhergehen würde, war auch dieser erwartete Mehrbedarf mit einzukalkulieren. • Die neuen Systeme sollen eine minimale Skalierbarkeitsreserve von 50 % beinhalten. Dies soll verhindern, dass die Systeme bereits nach kurzer Zeit wieder an ihre Ressourcen-Grenze stoßen und ein verfrühter Austausch nötig wird. • Zur Behebung von Performance-Engpässen soll es zukünftig möglich sein, dynamische Rekonfigurationen der Hardware im laufenden Betrieb durchzuführen. Somit könnte man einen kurzfristig auftretenden CPU-Engpass durch das kurzfristige Erweitern mit zusätzlichen CPUs auffangen. Dies erlaubt also den individuellen, effizienteren und kostensparenderen Einsatz der zur Verfügung stehenden Ressourcen. Abb. 2: Infrastruktur nach der Migration. • Die Anforderung, dass der Cluster aus mehr als zwei Knoten bestehen soll, erlaubt eine kurzfristige und flexible Reaktion z. B. auf Last-Probleme. Je nach Last kann der Administrator eine Anwendung auf ein weniger beanspruchtes System umschalten. • Das System sollte den Ausfall einzelner Hardware-Komponenten erkennen und auffangen, ohne den Betrieb zu unterbrechen. Zudem soll der Ausfall der Komponente zeitnah gemeldet werden, um entsprechende Maßnahmen einzuleiten. • Die Komponenten sollen sich im Betrieb austauschen bzw. erweitern lassen können (Stichwort: Hot-Swap). • Alle Datenpfade bzw. Daten-Controller wie auch alle Netzanbindungen werden redundant vorgehalten. Software-Faktoren: • Die bisher benutzten Software-Komponenten wie z. B. Datenbank System, Middleware (Applikationsserver, Kommunikationssysteme, Transaktionsmonitore) und System Management (Überwachung) sollen auf der neuen Plattform ebenfalls zur Verfügung stehen. Eine kostenintensive Migration auf ein anderes Produkt ist nicht vorgesehen. Verfügbarkeits-Faktoren: • • Neben der Hochverfügbarkeit der Anwendung ist das oberste Ziel die Datenkonsistenz. Undefinierte Zustände, bei denen mehrere Knoten eines Clusters die gleiche Datenbasis verändern und somit zerstören, sind unbedingt zu vermeiden. Wie bei der bisher eingesetzten HV-Lösung ist die Verteilung der einzelnen Anwendungen und Ressourcen über eine Parametrisierungsdatei zu steuern. Voraussetzung dafür ist eine Trennung von Parametern und Skripten. • Im Gegensatz zur bestehenden Lösung ist eine weitere Anforderung, auch einzelne Anwendungskomponenten zu überwachen und bei Ausfall zu reaktivieren. • Das Erkennen und die Übernahme eines ausgefallenen Systems soll in möglichst kurzer Zeit durchführbar sein. Die Umschaltzeit der bisher eingesetzten Lösung von ca. 15 Minuten darf dabei nicht überschritten werden. ... und nach entsprechenden Lösungen gesucht Auf Basis dieser Anforderungen holte man zunächst von unterschiedlichen Herstellern (HP, IBM, SUN, Fujisu Siemens) sowohl konzeptionelle als auch preisliche Angebote ein. Mehrere Arbeitsgruppen analysierten und bewerteten die verschiedenen Angebote in Bezug auf die Erfüllung der Anforderungen. Nach Berücksichtigung der Kosten und der Anforderungskriterien erwählte man die in Abbildung 2 dargestellte Lösung als Plattform. Die Lösung basiert auf einer hochverfügbaren Systemarchitektur, bei der unter anderem auf die Redundanz sämtlicher Komponenten Wert gelegt wurde. Das Gesamtsystem wird über zwei Standorte verteilt. An jedem Standort sind zwei Brandschutzabschnitte berücksichtigt. Diese Architektur beinhaltet pro Standort jeweils zwei Serversysteme und zwei Plattensubsysteme. Jedes Serversystem ist mit bis zu sechs Partitionen konfiguriert. Innerhalb des Standortes sorgt ein hochverfügbares SAN mit einer „dual fabric“-Struktur für die Anbindung der Plattensubsysteme an die Server. Das Zusammenführen von mehreren Datenbanken zu einer erzielte eine Anwendungskonsolidierung von produktiven Datenbank-Anwendungen auf ein Drittel. Jede der Anwendungen läuft nun auf einer Partition des Serversystems. Die einzelnen Partitionen erbringen die Performance von drei bisher eingesetzten Altsystemen „plus 30 %“. Zum Sizing des 31 Unix/Linux/Open Source CPU-Bedarfs wurden die SPEC-Werte der jeweiligen Systeme herangezogen. Dadurch ergab sich für die neuen Partitionen ein Bedarf von zwölf CPUs (im Vergleich zu den bisher benötigten 3x12 CPUs). Bezüglich der Plattenanbindung hatte man darauf geachtet, die Controller über mehrere Systemboards einer Partition redundant zu verteilen. Dies erzielt eine bessere Lastverteilung und eine höhere Verfügbarkeit der Datenpfade. Ein Ausfall eines Systemboards führt somit nicht zu einem Ausfall der Plattenanbindung. Für die dynamische Lastverteilung ist der Einsatz zusätzlicher Systemboards denkbar. Mit der „Enhanced Server Capacity on Demand“ bietet sich die Möglichkeit, die Systeme mit zusätzlichen Komponenten auszurüsten, die später im laufenden Betrieb aktivierbar sind. Als „Nachfolge-Produkt“ für die bisherige 2-Knoten-HV-Software kommt nun ein acht bzw. sechs Knoten-Cluster zum Einsatz. So lassen sich bei Ausfall einer Partition die dort laufenden Anwendungen auf die restlichen, laufenden Partitionen verteilen. ... und realisiert. Für die Umstellung auf eine neue Plattform genügt es nicht, nur die eigentliche Anwendung zu portieren. Auch die bisher eingesetzten Tools (Backup, Cronjobs, Überwachungs-Skripte, etc.) müssen an die neue System-Architektur angepasst werden. Allein der Einsatz einer neuen HV-Software führt dazu, dass ein Großteil der Skripte neu entwickelt wurde. Im ersten Schritt erfolgte der Test der „GesamtLösung“ (inklusive Datenbank, Anwendung und HV-Software) auf einem gesonderten Abnahme-System „auf Herz und Nieren“. Dann ging mit der Umstellung des Piloten das erste System der neuen „Lösung“ in den Wirkbetrieb. Nach dem erfolgreichen Pilot-Betrieb, konnten nun auch alle anderen Systeme umgestellt werden. Sowohl für den Roll Out (Anwendungs Installation/Konfiguration) als auch für die Migration der Daten entwickelte das beteiligte Projektteam entsprechende Tools, damit die Daten und die Anwendungen innerhalb von drei Wochenenden quasi per Knopfdruck auf die neuen Systeme portiert werden konnten. Nach jahrelanger Mitwirkung hatte das ORDIXTeam das Projekt auch in dieser Phase intensiv begleitet. Von der Konzeption, über die Auswahl und Einrichtung der neuen Lösung bis hin zur Migration der Anwendung unterstützen ORDIX Mitarbeiter den Kunden so, dass für ihn eine möglichst kostengünstige, hochverfügbare und effiziente Plattform realisiert werden konnte. Antonio Salguero ([email protected]). Impressum Herausgeber: ORDIX AG Aktiengesellschaft für Softwareentwicklung, Beratung, Schulung und Systemintegration, Paderborn Redaktion: Sascia Brinkmann, Helma Jenniches V.i.S.d.P.: Wolfgang Kögler Anschrift der Redaktion: Westernmauer 12 - 16 D-33098 Paderborn Fon: 0 52 51 / 10 63 - 0 Fax: 0 52 51 / 10 63 - 99 Gestaltung/Layout: Sascia Brinkmann Druck: Druckerei Reike GmbH, Paderborn 32 Autoren dieser Ausgabe: Sascia Brinkmann, Kathrin Hammerschmidt, Michael Heß, Stefanie Heither, Martin Hoermann, Helma Jenniches, Wolfgang Kögler, Andreas Kother, Manfred Lingk, Ulrich Meyer, Uwe Rübesamen, Antonio Salguero, Guido Saxler, Frank Weiser Copyright: ORDIX AG. Alle Rechte vorbehalten. Die Zeitschrift ORDIX News hat eine Auflage von 7.700 Exemplaren. Sie wird von der ORDIX AG an ausgesuchte Kunden verteilt und kann für 2,20 Euro bei uns bestellt werden. Außerdem finden Sie die neueste Ausgabe 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 Anregungen, Kritik und Anmerkungen zu den Themen, aber auch für interessante Ideen sind wir immer offen und dankbar. Sie erreichen die Redaktion auch per E-Mail unter [email protected]. Wir freuen uns auf Ihr Feedback. Aktuell Einladung zur NetIQ Partner Veranstaltung am 29.01.2004 in Wiesbaden System- und Sicherheits-Management mit NetIQ Wenn es Ihnen darum geht, Ihre Windows- und Unix/Linux-Landschaften besser zu überwachen und ein effizientes, kostengünstiges System Management und Monitoring zu gewährleisten, dürfen Sie unsere Fachveranstaltung zu NetIQ nicht verpassen ! Lernen Sie in einem Überblick Vorzüge und Einsatzgebiete von NetIQ Lösungen kennen. NetIQ: Vortrag, Vorstellung und Live-Demo Termin: Beginn: Dauer: Ort: Donnerstag, 29. Januar 2004 15:00 Uhr ca. 3 Stunden ORDIX AG, Raum 1 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: 06 11 / 7 78 40-00 Dieser kostenfreie Vortrag mit anschließender Live-Demo richtet sich an alle Kunden und Leser mit großer Microsoft- bzw. Unix/Linux-Umgebung, an Spezialisten und Verantwortliche für den Bereich Security. Auch wenn Sie für Monitoring Projekte verantwortlich sind, ist dieser Nachmittag ein Muss für Sie. Ihre Anmeldung Die Teilnahme ist kostenlos. Bitte haben Sie Verständnis, dass wir nur eine begrenzte Teilnehmerzahl entgegennehmen können. Versäumen Sie deshalb nicht, sich rechtzeitig anzumelden. Anmelden können Sie sich per E-Mail an [email protected], per Post an die ORDIX AG, Westernmauer 12-16, 33098 Paderborn, oder Fax ( 0 52 51 / 10 63-99) mit dem Betreff „[email protected]“, oder einfach online im Internet unter http://www.ordix.de/netiq. Dort finden Sie auch noch mal Hinweise zur Veranstaltung sowie Informationen zu möglichen Programmänderungen etc. Programmänderungen behalten wir uns vor. Der Rechtsweg ist ausgeschlossen. ORDIX entschied sich Anfang des Jahres 2003 für eine Partnerschaft mit NetIQ. Als System Management Spezialisten haben wir uns deshalb für diese Partnerschaft entschieden, weil NetIQ definitive Vorteile gegenüber anderen Herstellern bietet, wenn es darum geht, effiziente und kostengünstige System Management Lösungen für Microsoft, Unix und Open Source (Linux) basierte Systeme einzusetzen. Wir sind stolz darauf, Ihnen einen Spezialisten aus dem Hause Value Added Software, dem deutschen Distributor von NetIQ, zu präsentieren, der Ihnen an diesem Tag sein komplettes NetIQ Know-how zur Verfügung stellt und Ihre Fragen beantwortet. +++ Die kostengünstige System Management- und Security Management Lösungspalette für alle Windows und Unix/Linux Systemlandschaften → Überblick über die NetIQ Lösungen, Tipps und Tricks, insbesondere beim AppManager → Vorstellung ausgewählter Komponenten: Live-Demo des AppManagers, Diskussion und Fragenforum Referent: Herr Volkmar Rosenow, Value Added Software GmbH, Neuss +++ Vorstellung der Partnerschaft ORDIX / NetIQ: Bedeutung, Effizienz, Ihre Vorteile Referent: Holger Demuth, Projektmanager System Management +++ Lassen Sie sich diese Vorstellung und das anschließende „Get Together“ nicht entgehen. Für das leibliche Wohl sorgen wir im Anschluss an die Vorträge mit einem kleinen Buffet. Ihr ORDIX Team Karl-Heinz Künneke Michael Fey 33 Aktuell ORDIX auf der 16. Deutschen Oracle Anwenderkonferenz Ein “Muss” für Oracl´er. Am 12. und 13. November 2003 ging die Deutsche Oracle Anwender Konferenz in die 16. Runde. ORDIX war das 4. Mal in Folge mit von der Partie: als Aussteller mit 4 Fachvorträgen im Gepäck, einem gut besuchten Schulungstag und rundum positivem Feedback! Dieter Ketterle, Organisator des wichtigsten Events der deutschen Oracle Community, ist stolz auf das stetig steigende Interesse an der Veranstaltung: „Im Vergleich zum letzten Jahr konnten wir im Congress Center in Mannheim jetzt weit über 1350 Teilnehmer zählen, bestehend aus IT Managern, Entwicklern und DB-Administratoren. Ein Beweis für die Wichtigkeit und den Stellenwert der Konferenz!“ Großer Andrang ... In über 125 Fachvorträgen und an ca. 40 Firmenständen konnten sich alle Teilnehmer über die Top-Themen der Oracle Welt informieren. Die Themenvielfalt reichte von Oracle Database 10G, Application Server und Development Tools über Business Intelligence bis hin zu IT Experience. Das ORDIX Team lud zu interessanten Fachgesprächen ein und stellte an der Infoinsel sein komplettes Oracle Know-how zur Verfügung. Einen gewohnt anspruchsvollen Beitrag zur Konferenz leistete ORDIX mit seinen drei Vorträgen: • Storage Parameter: Funktion, Bedeutung und Effizienz Referent: Herr Klaus Reimers • Tuning I/O-intensiver Systeme mit 9i Referent: Herr Martin Hoermann Anmerkung der Redaktion: Hierzu finden Sie auch einen Bericht auf Seite 14. • Objektorientierte Features von PL/SQL in Oracle 9i Referent: Herr Markus Fiegler „Gib mir Musik“ ... war das Motto der Abendveranstaltung am 12. November. Nach dem Ausklang der „Question & Answer“ Runde der Konferenz konnten die Teilnehmer bei dem ein oder anderen Bierchen weiter über die wichtigen Oracle News debattieren, bevor der anstrengende Tag mit einem grandiosen Gala-Buffet belohnt wurde. Um die „angenossenen“ Pfunde erst gar nicht wirken zu lassen, hatte sich Dieter Ketterle etwas ganz Besonderes ausgedacht: Auf vielfachen Wunsch gab Rolf Stahlhofen, einer der berühmten „Söhne Mannheims“, sein musikalisches Review. Schon zwei Jahre zuvor begeisterte er die Teilnehmer auf der Konferenz mit seiner Musik. Schnell waren auch dieses Mal müde Beine und brennende Füße vergessen und selbst der letzte DBA entledigte sich der steifen Krawatte, um nach Klängen von berühmten Musikern richtig „abzurocken“. ... bei den ORDIX Vorträgen bewältigt Alle ORDIX Vorträge erfreuten sich größter Beliebtheit seitens der Oracle User. Das Orga-Team der Konferenz hatte bereits aus den vergangenen Jahren „gelernt“: Mussten die Teilnehmer in 2002 noch wegen Überfüllung auf dem Fußboden Platz nehmen, so hatte man dieses Mal sogar den riesigen Musensaal für ORDIX reserviert, damit auch alle 200 Interessierten aufmerksam und „bequem“ den Vorträgen folgen konnten. Für Fragen zu den Vortragsthemen können Sie sich gerne per EMail über [email protected] an die Referenten wenden. 34 Die ORDIX Infoinsel: Vor allem in den Pausen zwischen den Vorträgen besuchten die Teilnehmer der Konferenz die Stände der ausstellenden Firmen. Aktuell Oracle Schulungen hautnah Wem das gebotene Programm der Konferenz nicht ausreichte, hatte die Möglichkeit, sich vor Ort weiterzubilden. Mehr als 450 Interessierte „bevölkerten“ die hochkarätigen ORDIX Fachvorträge. Im Anschluss an die Konferenz fand am 14. November 2003 der DOAG Schulungstag statt - erstmalig in dieser Form. ORDIX war eine der sechs Firmen, die dort ihr Oracle Wissen im Rahmen einer Schulung präsentierten. Mit großem Erfolg, denn ORDIX konnte gleich die meisten Interessenten - knapp 30 - für sich gewinnen. Als Auszug aus dem weitreichenden ORDIX Trainingsprogramm verschaffte das Seminar „Oracle Net“ den Teilnehmern einen Einblick in neue Features, Konfiguration und Einsatz von Oracle Net Produkten. An praktischen Beispielen wurde detailliert auf die Themen Listener, Datenbanken im Dedicated Server Betrieb und im Multi Threaded Server Betrieb, auf den Connection Manager, Names Server und OID/LDAP eingegangen. Mit über 1350 Besuchern und ca. 40 Ausstellerfirmen war das Congress Center Mannheim bei der Oracle Anwenderkonferenz gut gefüllt. Sie möchten Ihr Oracle Know-How erweitern? Lesen Sie im Internet auf der Seite http://training.ordix.de, welche Möglichkeiten Ihnen das ORDIX Trainingsprogramm bietet! ORDIX Schulungsräume erweitert Im November hat ORDIX in Wiesbaden einen weiteren Schulungsraum eingerichtet. Das deutlich umfangreichere Schulungsprogramm für 2004 hat diese Erweiterung erfordert. Die Erweiterung kommt vor allem den Unix- und Datenbank Schulungen zu Gute. Der neue Raum wurde mit SUN SPARC Workstations ausgestattet. Bei den Workstations handelt es sich um Sun Blade 156, die mit 1,2 GB Hauptspeicher, 2*40 GB Festplatte und einem UltraSPARC IIi Prozessor optimal ausgestattet, um Solaris Administrationskurse, Kurse im Umfeld System Management oder Datenbanken durchzuführen. Aber auch für Java- oder J2EE Seminare eignen sich diese Workstations durchaus sehr gut. Weiterhin wurden für IBM AIX- und Unix Multivendor Schulungen zusätzliche AIX Server angeschafft. Anfang 2004 wird einer der Seminarräume komplett neu mit einem Equipment ausgestattet, das das mobile Konzept unseres Trainingsangebotes optimal unterstützt. Informieren Sie sich unter http://training.ordix.de. Der mit SUN SPARK Workstations ausgestattete ORDIX Seminarraum. Seit Ende September haben wir darüber hinaus einen Teilnehmerabend eingeführt. Bei gutem Essen und Getränken können sich die Teilnehmer zu netten, informativen Gesprächen treffen. Dazu bekommen sie die Gelegenheit zu einem Netzwerkspiel oder sich einen spannenden Film auf DVD anzusehen. Der Teilnehmerabend findet jeden Dienstag statt. 35 Datenbanken Erschienen in der Zeitschrift der Deutschen Oracle Anwendergruppe „DOAG News“, Ausgabe Q4/2003 Die Standby-Datenbank: Data Guard aus Kundensicht (Teil III) Die vorangegangenen Artikel dieser Reihe beschäftigten sich ausführlich mit dem Aufbau und Betrieb einer physikalischen Standby-Datenbank, bis einschließlich Oracle 9i. In dieser Ausgabe wollen wir uns nun den Aufbau einer logischen Standby-Datenbank anschauen. Auch hier werden alle Schritte zunächst mit SQL*Plus, also ohne GUI, durchgeführt. Bevor wir die logische Standby-Datenbank aufbauen, wollen wir uns zunächst anschauen, wo es innerhalb der Architektur Gemeinsamkeiten bzw. Unterschiede zur physikalischen Standby-Datenbank gibt. Transport der Redo Informationen Der Transport der Redo Informationen unterscheidet sich bei einer logischen Standby-Datenbank nicht grundsätzlich von dem bei einer physikalischen Standby-Datenbank. Auch können sowohl der ARCH oder der LGWR Prozess genutzt werden. Allerdings gibt es innerhalb der logischen Standby-Datenbank keine Standby RedoLog Dateien. Der LGWR schreibt direkt in archivierte RedoLog Dateien, und zwar in das Verzeichnis, das über den Parameter standby_archive_dest angegeben wird. Unterbrechungen der Übertragung werden auch bei der logischen Standby-Datenbank automatisch erkannt und die fehlenden RedoLog Dateien werden automatisch nachgezogen. Bei der logischen Standby-Datenbank braucht dazu jedoch kein FAL Server angegeben zu werden. Einpflegen der Informationen in die Datenbank Der Unterschied zwischen den beiden Standby Systemen liegt in der Art und Weise, wie die Informationen des Redo Stroms in die Datenbank eingepflegt werden. Bei der physikalischen Standby- Datenbank wird ein Recovery der Datenbank vorgenommen. Währenddessen steht die Datenbank den Benutzern nicht zur Verfügung. Das Einpflegen der Informationen aus dem Redo Strom in die logische Standby-Datenbank geschieht jedoch auf einem ganz anderen Weg: Mit Hilfe des LogMiners werden die SQL Statements der Produktionsdatenbank rekonstruiert. Anschließend werden die Statements über eine sogenannte SQL ApplyEngine in der logischen Standby-Datenbank nachgefahren. Die logische Standby-Datenbank ist dabei die ganze Zeit geöffnet und steht den Benutzern zur Verfügung. Da bei der logischen Standby-Datenbank SQL Statements ausgeführt werden, werden selbstverständlich auch Redo Informationen erzeugt. Keine 1:1 Kopie Die Verwendung des LogMiners und der SQL Apply-Engine bringt jedoch eine Einschränkung in den unterstützten Datentypen mit sich. Unterstützt werden: • CHAR, NCHAR, VARCHAR2, VARCHAR • NUMBER • DATE, TIMESTAMP • INTERVAL • RAW • CLOB, BLOB Nicht unterstützt werden derzeit NCLOB, LONG (RAW), BFILE, ROWID sowie durch den Benutzer definierte Datentypen. Aus diesen Gründen ist die logische StandbyDatenbank, im Gegensatz zur physikalischen Standby-Datenbank, keine 1:1 Kopie der Produktionsdatenbank und kann somit auch nicht zu Backup Zwecken genutzt werden. Aufbau einer logischen Standby-Datenbank Abb. 1: Installation einer logischen Standby-Datenbank. 36 Nach dieser Einführung wollen wir jetzt eine logische Standby-Datenbank aufbauen. Das Datenbanken grundsätzliche Vorgehen wird in Abbildung 1 dargestellt. Im Gegensatz zur physikalischen StandbyDatenbank wird hier keine Standby-Controldatei benötigt, sondern eine normale Backup-Controldatei. Doch jetzt die Schritte im Einzelnen: 1. Schritt auf der Produktionsdatenbank Der init<SID>.ora Parameter log_parallelism steht standardmäßig auf 1. Sollte dieser Parameter bei der Produktionsdatenbank einen Wert > 1 haben, ist er auf den Standard zurückzusetzen. 3. Schritt auf der Produktionsdatenbank Der folgende Schritt ist nur erforderlich, wenn ein Switchover stattfinden soll. Eine logische Standby-Datenbank benötigt eine Reihe von Tabellen, die in den Schemata der user sys und system definiert sind. Nach dem Entschluss, eine logische StandbyDatenbank aufzubauen, sollten wir als erstes das Skript ?/rdbms/admin/catlsby.sql laufen lassen, da es nicht von catalog bzw. catproc aufgerufen wird. Dieses Skript füllt die DataDictionary Views, die beim Betrieb einer logischen Standby-Datenbank sinnvoll sind, mit Leben. Die Namen dieser Views beginnen mit DBA_LOGSTDBY. Einige dieser Tabellen können sehr schnell sehr groß werden, daher sollten sie in einen separaten Tablespace gelegt werden. Wir legen also einen neuen Tablespace mit beispielsweise dem Namen logminer an. Anschließend wenden wir die Prozedur DBMS_LOGMNR_D.SET_TABLESPACE an. Zur Ermittlung eventuell vorhandener, nicht unterstützter Datentypen und Objekte wird das Kommando select * from dba_logstdby_ unsupported abgesetzt. Hier werden Eigner, Tabellennamen, Spaltenamen und Datentypen zurückgegeben. Jede hier angegebene Tabelle wird beim Log Apply auf der Standby-Datenbank automatisch ausgenommen. Damit sind die vorbereitenden Schritte auf der Produktionsdatenbank abgeschlossen. Wir machen jetzt ein offline Backup der Datenbank und mounten diese anschließend, um eine BackupControldatei zu erzeugen. Außerdem ermitteln wir die aktuelle Checkpoint Change Nummer und können danach die Datenbank wieder öffnen. (Es geht auch mit einem online Backup.) Anschließend untersuchen wir mit der Abfrage der View dba_logstdby_not_unique, ob unsere Datenbank Tabellen ohne Primary Key oder Not-Null Constraints besitzt. Gibt es solche Tabellen in unserer Datenbank, sollten wir für diese einen Primary Key definieren. 2. Schritt auf der Produktionsdatenbank Als nächstes überprüfen wir, ob die Produktionsdatenbank im ArchiveLog Modus läuft. Läuft die Datenbank nicht in diesem Modus, schalten wir ihn in der Mount-Phase ein. Eine logische Standby-Datenbank kann ausschließlich Daten mit supplemental logging verarbeiten. Normalerweise kommen aber im Redo Strom supplemental und nonsupplemental log Daten vor. Daher ist auf jeden Fall mit dem Kommando ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS; die Funktion „supplemental logging“ einzuschalten. Für jede vorher angelegte physikalische Standby -Datenbank unserer Konfiguration ist dieses Kommando ebenfalls abzusetzen, damit der Switchover sauber funktioniert. Danach müssen die beiden Spalten SUPPLEMENTAL_ LOG_DATA_PK und SUPPLEMENTAL_LOG_ DATA_UI der View v$database jeweils den Wert Y zurückgeben. EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE(’logminer’); Weitere Anpassungen Die wichtigste Änderung der init<SID>.ora auf dem Standby System ist, den Parameter STANDBY_ARCHIVE_DEST hinzuzufügen. Eventuell sind noch die Pfade zu den Controldateien und der ARCHIVE_LOG_DEST_n Parameter anzupassen. Weiterhin ist die Passwortdatei auf das neue System zu kopieren. Mounten der logischen Standby-Datenbank Jetzt können wir die logische Standby-Datenbank zunächst mounten. Sollten sich die Pfade zu den Datenbank Dateien und RedoLog Dateien geändert haben, so müssen diese jetzt angepasst werden. Die von der physikalischen Standby Datenbank bekannten Parameter DB_FILE_NAME_CONVERT und LOG_FILE_NAME_ CONVERT funktionieren bei der logischen Standby-Datenbank nicht. Da wir in unserem Backup nur die Datenbank Dateien berücksichtigt haben, müssen wir die online RedoLog Dateien mit dem Kommando ALTER DATABASE CLEAR LOGFILE GROUP n; neu anlegen. Recovern Danach recovern wir unsere zukünftige logische Standby-Datenbank mit der BACKUP CONTROLFILE Option bis zur vorher gemerkten Checkpoint Change Nummer: RECOVER DATABASE UNTIL CHANGE <SCN> USING BACKUP CONTROLFILE; Anschließend müssen wir die Datenbank mit der RESETLOGS Option öffnen. Damit im geöffneten Zustand keine Änderungen an den Daten vorgenommen werden können, setzen wir folgende Kommados ab: 37 Datenbanken ALTER DATABASE GUARD ALL; ALTER DATABASE OPEN RESETLOGS; SHUTDOWN IMMEDIATE; DBID und Datenbankname Im nächsten Schritt ändern wir die DBID und den Datenbanknamen unserer logischen Standby-Datenbank. Dazu benutzen wir das Kommadozeilen-Tool nid. Zunächst ist jedoch unsere Datenbank in die Mount Phase zu versetzen. Danach gehen wir zurück auf die Shell Ebene und setzen folgendes Kommando ab: nid target=sys/change_on_install dbname=log1 Der hier angegebene Datenbankname ist der neue Name der logischen Standby-Datenbank. Unsere Datenbank hat nun eine neue DBID und einen neuen Datenbanknamen. Der neue Name bedingt natürlich auch eine entsprechende Änderung der init<SID>.ora, bzw. der spfile. Außerdem ist die Passwortdatei neu anzulegen. Auch jetzt öffnen wir die Datenbank wieder mit der RESETLOGS Option und legen ein neues Tempfile für den temporären Tablespace an. Im Weiteren gehen wir davon aus, dass die Oracle Net Konfiguration steht und die Instanzen sich gegenseitig „sehen“ können. wir der logischen Standby-Datenbank, wo die archivierten RedoLog Dateien liegen, deren Inhalte in die Datenbank eingepflegt werden sollen. Die angegebene Sequenz Nummer ist die der ersten, archivierten RedoLog Datei nach dem offline Backup. SQL Apply Damit die logische Standby-Datenbank mit dem SQL Apply beginnen kann, muss zunächst auf der Produktionsdatenbank ein LogMiner Dictionary aufgebaut und auf die logische Standby-Datenbank übertragen werden. Dies geschieht mit dem Aufruf EXECUTE DBMS_LOGSTDBY.BUILD; auf der Produktionsdatenbank. Die LogMiner Dictionary Informationen werden in den Redo Strom eingebettet. Mit Abfragen auf die V$ARCHIVED_LOG SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN=’YES’; SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_END=’YES’; können wir sehen, in welche RedoLog Dateien die Dictionary Informationen hinein gespeichert wurden. Übertragen der Redo Informationen Wir können jetzt also mit ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=log1, LGWR’; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; dafür sorgen, dass die Redo Informationen zum Standby System übertragen werden. Dabei schreibt der LGWR direkt in die vorher in der init<SID>.ora der logischen Standby-Datenbank definierte STANDBY_ARCHIVE_DEST. Mit dem Kommando ALTER DATABASE REGISTER LOGICAL LOGFILE ‘/oracle/admin/log1/ora1_1_139.arc’ erklären Da die Übertragung der RedoLog Dateien auf das Standby System bereits eingeschaltet ist, befinden sich die Dictionary Informationen auch auf dem Standby System. Mit dem Kommando ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL; beginnt das SQL Apply. Dieses Kommando ist auf der logischen Standby-Datenbank nur einmal abzusetzen. Soll das Nachfahren der Transaktionen gestoppt werden und anschließend wieder gestartet werden, geschieht dies wie folgt: ALTER DATABASE STOP LOGICAL STANDBY APPLY; ALTER DATABASE START LOGICAL STANDBY APPLY; Da nach einem Neustart der logischen Standby-Datenbank das Nachfahren der Transaktionen nicht automatisch gestartet wird, ist es mit ALTER DATABASE START LOGICAL STANDBY APPLY; nach dem Öffnen der Datenbank manuell zu starten. Den grundsätzlichen Ablauf zwischen Produktionsdatenbank und logischer Standby-Datenbank zeigt Abbildung 2. Abb. 2: Ablauf zwischen Produktion und Standby. 38 Über verschiedene Views lässt sich der Erfolg und Fortschritt des SQL Apply verfolgen (siehe Abbildung 3). Datenbanken Abb. 3: Erfolg und Fortschritt des SQL Apply. Abb. 4: Auszug aus DBA_LOGSTDBY_LOG. Hier ist zu sehen, bis zu welcher SCN die Transaktionen nachgefahren wurden, und welches die letzte bekannte SCN ist. Hält man beispielsweise das SQL Apply an, so ändert sich zwar die Spalte NEWEST_SCN, nicht aber der Wert der Spalte APPLIED_SCN. Mit Hilfe der beiden oben genannten Spalten lässt sich über die View DBA_LOGSTDBY_LOG ermitteln, welches die aktuelle RedoLog Datei ist und welche noch nachgefahren werden muss. Außerdem ist hier auch zu sehen, in welchen Dateien die Dictionary-Informationen liegen (siehe Abbildung 4). In der View DBA_LOGSTDBY_EVENTS werden wichtige Ereignisse wie beispielsweise das Starten oder Anhalten des Log Apply protokolliert. Aber auch ein erfolgreiches DDL Kommando wird protokolliert. select STATUS from dba_logstdby_events; ORA-16204: DDL successfully applied Möchte man wissen, was sich dahinter verbirgt, hilft ein Blick in die alert<SID>.log Datei: LOGSTDBY event: ORA-16204: DDL successfully applied LOGSTDBY stmt: create table ak2 ( s1 number, s2 varchar2(25), constraint ak2_pk primary key (s1)) Was ist mit Logical Data Guard nun möglich? Vergleichen wir noch mal das, was wir jetzt können, mit dem, was im ersten Artikel dieser Reihe an Forderungen aufgestellt wurde. • Das Offline Backup über die logische Standby-Datenbank ist nicht möglich. • Eine zeitverzögerte Einspielung (Delay) der RedoLog-Dateien ist ohne großen Aufwand möglich. • Ein Tausch der Funktionalität zwischen Standby-Datenbank und Original-Datenbank (Switchover) ist möglich. • Es ist möglich, während des Nachfahrens der SQL Statements lesend auf die logische Standby-Datenbank zuzugreifen. Weiterhin lassen sich an der logischen Standby-Datenbank Änderungen, wie beispielsweise zusätzliche Indizes, vornehmen. Im nächsten Teil dieser Reihe werden wir uns mit dem Package dbms_logstdby beschäftigen und den Switchover auf die logische Standby-Datenbank durchführen. Darüber hinaus schauen wir uns an, wie wir mit dem DataGuard Broker die Administration vereinfachen. Für Fragen, Anregungen und weitere Informationen steht Ihnen der Autor jederzeit gerne zur Verfügung. Andreas Kother ([email protected]). 39