ORDIX News Das IT-Magazin der ORDIX AG Oracle 10g Fachtreffs Export und Import mit Hochdruck: Oracle 10g Data Pump Ausgabe 2/2004 € 2,20 14. + 21. September 2004 S. 10 Control-M: Optimierung von Geschäftsprozessen Chess Classic Mainz 2004 S. 23 S. 21 1. ORDIX Benefiz Golf Open 25./26. September 2004 S. 22 S. 14 Let´s work together! Die Groupware-Funktionalitäten des SuSE Linux Openexchange Servers S. 37 Editorial Paderborn, Juli 2004 Alles und jeder hat seinen Preis ... oder wie der Bayer zu sagen pflegt „ois hoat sain Praiß“ und damit meint er ausnahmsweise nicht, dass jeder Bayer seinen Preußen haben sollte. Vielmehr steckt dahinter, dass jedes Produkt einen festgesetzten und mehr oder weniger lange gültigen Preis hat. Inzwischen gilt das aber auch für imaginäre Produkte wie Gesinnung oder Einstellung. Nehmen wir nur mal die früher erfolgreiche Firma SCO: Vormals engagierte Unix Company, jetzt unter anderem mit einem 500 Millionen $ Sponsoring von einer nicht näher bezeichneten Firma aus Redmond auf dem Kreuzzug gegen Linux und damit auch gegen den ursprünglichen Unix-Gedanken (sofern den überhaupt noch jemand kennt). Und jetzt auch noch SUN: Respekt Herr McNealy! Sie ziehen mit unserem ehrwürdigen Ex-Kanzler gleich, der Gorbatschow im Oktober 1996 in einem Newsweek Interview mit dem NS-Propagandaminister Joseph Goebbels verglich, um ihn nur wenige Jahre später beim Plausch in seiner berühmten Strickjacke in Zeltgröße zum besten aller Freunde zu erklären. Was kümmert einen also sein Geschwätz von gestern. Für 1,3 Milliarden $ klopfte der SUN Boss McNealy dem Microsoft Chef Steve Ballmer anerkennend auf die Schultern. O.K. Für eine solche Geldspritze wäre inzwischen jeder bundesdeutsche Finanzminister bereit, noch mehr zu leisten ;-). Nun, ich muss zugeben, dass ich bei 1,3 Milliarden $ vielleicht auch schwach werden würde. Wenn ich mir dann aber vorstelle, mir ein Microsoft Baseballkäppchen aufzusetzen und - bei meinem dann täglichen Weg über die Golfplätze dieser Welt - in den Gesprächen mit meinen Flight-Partnern Windows 2003 Server und Office zu preisen ... dann wache ich auf, aus diesem Traum, und denke daran, dass Sie vielleicht frühere Editorials gelesen haben und mir nicht mehr so recht glauben werden. Also werde ich mich weiterhin in der Woche Ihren Problemen widmen und, falls möglich, am Wochenende etwas fürs Handicap tun. Womit ich aber schon bei einem wichtigen Thema dieser Ausgabe gelandet bin: Das 1. ORDIX Golf Open am 25. und 26. September. Alles für einen guten Zweck. Und Sie können dabei sein. Hoffen wir, dass wir in unsere beiden ausgewählten Kinder-Hilfsprojekte - „Die Kinder im Senegal“ und „Westfälisches Kinderdorf e.V., IPWL Schlangen“ - analog der Oracle Data Pump (S. 10) ganz viel Unterstützung in Form eines Schecks „pumpen“ können. Eine andere, erfolgreiche Veranstaltung, die wir unterstützen, findet dieses Jahr bereits zum elften Mal statt: Das Chess Classic ORDIX Open. Aber auch die anderen Themen dieser Ausgabe sind brandaktuell: Prozessmanagement mit Control-M, Oracle und LDAP, diverse Open Source Themen, Websphere Produktvorstellung und vieles mehr für einen hoffentlich in jeder Beziehung heißen Sommer. Und, um darauf zurückzukommen, „ois hoat sain Praiß“: 0 • kostet Sie die Teilnahme an unseren Oracle 10g Fachtreffs am 14.09. in Wiesbaden und am 21.09. in Düsseldorf. Ein wenig mehr die Teilnahme an dem einen oder anderen Seminar (herausnehmbare Übersicht im Mittelteil). In diesem Sinne wünsche ich Ihnen einen schönen Sommer. Wolfgang Kögler PS: An Herrn Ballmer, falls Sie das lesen: Also, ab 3-4 Milliarden oder so könnte ich vielleicht doch noch ... Einen willigen Caddy (Danke Guido), der Ihrer Firma gegenüber dann auch sehr aufgeschlossen sein würde, habe ich gegebenenfalls ebenso in petto. Entschuldigung an alle anderen Leser: Aber Sie wissen ja, jeder hat seinen Preis ;-) 3 Inhaltsverzeichnis Aus- & Weiterbildung Standards 17 ... 24 ... 29 ... 33 ... 39 ... 03 ... Editorial 04 ... Inhalt 20 ... Impressum Seminar: Patrol Central Seminarübersicht: Preise, Termine ... bis Jahresende. Seminar: J2EE für Entscheider Seminar: Oracle Troubleshooting Seminar: Java GUI Entwicklung mit Swing Aktuell Titel- 21 ... Chess Classic Mainz 2004 thema Gewinnen Sie eine Simultan-Partie oder eine Platz in der ORDIX Open während des Schachklassikers. Titel- 22 ... 1. ORDIX Benefiz Golf Open thema Golfen für den guten Zweck am 25./26.09.2004 in OWL. 27 ... Sponsoring Behindertensportreiten Datenbanken l- Tite 23 ... Oracle 10g Fachtreffs, thema 14. + 21. September 2004 Highlights, Praxiserfahrungen und Einstiegspaket 26 ... Larry Ratlos Kniffel Wer hilft Larry beim Boot-Spiegel mit DiskSuite weiter? Unix/Linux/Open Source 05 ... Oracle Internet Directory (Teil I) Übersicht über das Oracle Internet Directory und dessen Einsatzmöglichkeiten. Titel- 10 ... Oracle 10g (Teil I): thema Data Pump - Export und Import mit Hochdruck Express laden und entladen von Daten mit einem neuen Tool. 34 ... RMAN-Integration in Backup-Tools (Teil I): RMANIntegration in NetWorker und Tivoli Storage Manager Einbindung des Oracle Standardwerkzeugs RMAN in Storage Manager von Legato und Tivoli. 40 ... IBM IDS 9.40 (Teil IV): Der „Schlüssel“ zu IBM Informix Dynamic Server New Encryption und externe Authentifizierung halten Einzug in den IBM IDS. 44 ... Auf dass niemand des anderen Sprache verstehe ... Wie Oracle das Arbeiten in verschiedenen Sprachen mit unterschiedlichen Zeichensystemen unterstützt. 08 ... phpLDAPadmin: LDAP Administration Webfrontend Webbasierte Administration von LDAP Verzeichnissen mit dem Open Source Projekt phpLDAPadmin. 18 ... E-Mail Filter gegen SPAM Das Open Source Produkt SpamAssassin im Kampf gegen SPAM-E-Mailflut. 30 ... IBM TSM (Teil II): Im Fokus: Interne Datenbank und Recovery Log ORDIX nimmt Dimensionierung, Pflege und Sicherung der internen Datenbank und des Recovery Log unter die Lupe. Titel- 37 ... Let‘s work together! thema Vorstellung der Funktionalitäten des SuSE Linux Openexchange Servers. 43 ... ORDIX Kurzreferenz: Der vi-Editor System Management Java/XML Titel- 14 ... Control-M: Optimierung von Geschäftsprozessen thema Wie Sie mit BMC´s Control-M ein modernes, praxiserprobtes Job-Control-System einsetzen, um den Ablauf Ihrer Geschäftsprozesse zu optimieren. 4 28 ... Kurz betrachtet: IBM Websphere Application Server Hervorstechende Merkmale des IBM Websphere Application Server (WSAS) als Entscheidungshilfe für dessen Einsatz. Datenbanken Oracle Internet Directory (Teil I) Oracle Internet Directory (OID) ist ein LDAP Server, der die Daten in einer Oracle Datenbank ablegt. OID ist LDAPv3 compliant. Der erste Teil dieser mehrteiligen Serie gibt eine Übersicht über das Oracle Internet Directory und dessen Einsatzmöglichkeiten. Es werden Architektur und Installation erklärt. In den weiteren Teilen zeigen wir den praktischen Einsatz des OID z. B. anhand der zentralen Namensauflösung. Einführung OID ist eine Implementierung eines LDAPv3 konformen Verzeichnisdienstes von Oracle und ist seit der Version Oracle 8i ein fester Bestandteil der Produktpalette. usw. zu speichern. Dadurch profitiert das OID von Eigenschaften wie Hochverfügbarkeit, Backup- und Recoveryfähigkeit und den Sicherheitsfunktionen einer Datenbank. Die Datenbank, die das Repository des OID bildet, kann auf einem entfernten Rechner und sogar unter einem komplett anderen Betriebssystem laufen. Architektur OID kann unterschiedliche Informationen zentral im Netzwerk bereitstellen. In Zukunft wird das OID z. B. die zentrale Stelle zur Auflösung von Datenbank Service Namen sein und den Oracle Names Server ablösen. Dieser ist seit Oracle 9i abgekündigt und in der Version 10g nicht weiter verfügbar. Zudem können mit dem OID auch Benutzer und Rollen verwaltet werden. Denn ein Problem, dem ein Datenbankadministrator (DBA) in großen Unternehmen gegenübersteht, ist die immense Anzahl an Benutzern, die auf unterschiedliche Datenbanken Zugriff erhalten müssen. Beim Einsatz des OID muss nicht jeder Benutzer einzeln auf allen vorhandenen Instanzen eingerichtet werden, sondern dies erfolgt vereinfacht und zentral an einer Stelle, dem OID. Einsatzgebiete des OID • • • • Unterstützung eines Datenbankadministrators bei der Verwaltung von Benutzern und Rollen für eine oder mehrere Oracle Datenbanken. Zur Auflösung von Net Service Namen an einer zentral gepflegten Stelle und damit ein zukünftiger Ersatz für den Oracle Names Service und als Alternative für die tnsnames.ora. Verwaltung von Benutzerdaten, Anmeldeinformationen oder X.509 Zertifikaten für das Oracle Portal und Schaffung einer Single Sign-On Möglichkeit für Oracle Datenbanken sowie beim Zugriff durch das Inter- oder Intranet. Bereitstellung von E-Mailadressen und Adressbüchern für Komponenten der Oracle Collaboration Suite. Oracle Internet Directory benutzt eine Oracle Datenbank, um Verzeichniselemente wie Einträge, Objekte, ACLs (Zugriffsberechtigungen) Der Aufbau des OID entspricht dem eines Standard LDAPv3 Servers. Das OID ist in der Lage, die oben angesprochenen Elemente eines Verzeichnisses, wie Objekte mit Attributen, Objektklassen usw. zu verwalten, Anfragen entgegenzunehmen und zu bearbeiten. Anders als bei der OpenLDAP Implementierung werden hier allerdings die Schemadateien nicht im Dateisystem abgelegt, sondern liegen im Repository des OID und damit in einer möglichst dedizierten Oracle Datenbank. Die technische Architektur ist in der Abbildung 1 zu erkennen. Der LDAP Client verbindet sich über den OID-Listener mit einer OID Server Instanz. Der Listener ist ein Prozess, der bei unverschlüsselten Verbindungen standardmäßig auf dem Port 389 und bei SSL-verschlüsselten Verbindungen auf dem Port 636 horcht und Anfragen von LDAP Clients entgegennimmt. Für jede Anfrage eines Clients wird über Oracle Net eine Verbindung zur LDAP Instanz aufgebaut und die Anfrage verarbeitet. Die LDAP Server Instanz stellt dabei eine Verbindung zur Repository Datenbank auf, ermittelt die benötigten Daten aus dem Verzeichnisbaum und liefert die Ergebnisse an den Client zurück. Im Allgemeinen besteht eine OID Server Instanz aus einer frei konfigurierbaren Anzahl von LDAP Serverprozessen. Es können mehrere Prozesse gestartet werden, um bei einer hohen Anzahl von Clients eine Verteilung der Anfragen auf mehrere Prozesse vorzunehmen. Auf einem Server können wiederum mehrere OID Server Instanzen gestartet werden, um z. B. Lastenteilung zu erreichen. Abb. 1: OID Architektur. 5 Datenbanken Für die unterschiedlichen Konfigurationen der Instanzen werden sogenannte Configsets bereitgestellt, mit denen die LDAP Server Instanz parametrisiert werden kann. Hier kann z. B. die Portnummer, auf der der OID-Listener horchen soll, die maximale Anzahl von Datenbankverbindungen pro OID Instanz oder auch die Verwendung von SSL konfiguriert werden. Diese Einstellungen werden über den GUI Oracle Directory Manager vorgenommen, der später erläutert wird. und einem auf der Ebene eindeutigen Namen, dem „Relative Distinguished Name“ (RDN). Der Verzeichnisbaum Jedes Objekt im Verzeichnis besteht aus mehreren Attributen von unterschiedlichen Datentypen. Die „Schablone“ für dieses Objekt ist im OID Repository gespeichert und wird, analog zu Programmiersprachen wie Java oder C++, als Klasse bezeichnet. Bevor nun auf die Installation und Konfiguration des OID eingegangen wird, noch eine kurze Erläuterung von bestimmten Begriffsdefinitionen des OID. Die Speicherung von Daten in einem LDAPv3 konformen Verzeichnis ist in einer Baumstruktur aufgebaut (siehe Abbildung 2). Die Baumstruktur wird auch als Directory Information Tree (DIT) bezeichnet. Von der Wurzel ausgehend, teilt sich der Baum in mehrere Zweige auf. Jeder Knotenpunkt ist ein Verzeichniseintrag mit einer eindeutigen Adressierung, dem „Distinguished Name“ (DN), Jeder Knotenpunkt kann dabei 1 bis n Nachfolger haben. Die eindeutige Adressierung eines gesuchten Objekts setzt sich somit immer aus dem DN des Vorgängerknotens und dem RDN des Objekts zusammen. Im OID gibt es dabei eine hohe Anzahl an vorgefertigten Klassen. Hierunter fallen alle Standard LDAPv3 Klassen, wie auch die von Oracle erstellten und spezialisierten Klassen, die z. B. zur Namensauflösung unter Oracle Net benötigt werden (siehe Abbildung 3a/b und „Erstellen bzw. Exportieren von Oracle Net Service Namen“ im Teil 2 dieser Serie). Installation und Vorbereitungen Für das Aufsetzen eines OID müssen folgende Schritte durchgeführt werden: • • • Abb. 2: Verzeichnisbaum mit der Beispieldomäne ordix.de den Net Service Namen ora1 und ora2. • Installation der OID Software Einrichtung einer neuen oder bestehenden Datenbank für das OID Einrichtung eines speziellen Oracle Schemas für das Verzeichnis Starten der OID Instanz Für die zentrale Namensauflösung über das OID müssen zusätzlich noch folgende Schritte durchgeführt werden: • • • Erstellen einer Domänenstruktur im OID Erstellen bzw. Exportieren von Oracle Net Service Namen Erstellen der ldap.ora und Clientseitige Modifikationen an der sqlnet.ora Installation der Software und Erstellen des OID Schema Abb. 3a/b: Anlegen der Domänen Struktur mit Hilfe des oidadmin. Abb. 4a/b: Installation der Software mit dem Oracle Installer. 6 Die Installation der OID Software wird mit dem Oracle Universal Installer durchgeführt. Das OID ist, wie Abbildung 4a/b zeigt, unter „Oracle9i Management and Integration“ zu finden. Mit dieser Softwareinstallation werden alle Programme installiert, um eine OID Server Instanz zu konfigurieren, zu starten und zu betreiben. Neben den Programmen oidmon und oidctl gehören die grafischen Datenbanken oracle@linux:~> oidmon connect=oiddb server=oidldapd instance=1 configset=1 start Starting the Monitor process. Abb. 5: Aufruf für den Monitorprozess. Oracle Internet Directory Parameter mögliche Werte Beschreibung Connect ein gültiger Net Service Name Gibt den Servicenamen der Datenbank an, in der das OID konfiguriert wurde. Server oidldapd, oidrepld, oidisrv Hiermit kann die Art der zu startenden Instanz bestimmt werden. LDAP Server, Replication Server oder Integration Server. Instance Wert zwischen 1 und 1000 Nummer der zu startenden Instanz. Configset Wert zwischen 1 und 1000 Zu verwendende Konfigurationsgruppe. Abb. 6: Einzelne Parameter des Kommandos oidctl. oracle@linux:~> oidctl connect=oiddb server=oidldapd instance=1 start Abb. 7: Start einer OID Server Instanz. Benutzeroberflächen des Oracle Directory Manager und des OID Configuration Assistant dazu. Der Oracle Net Manager aus der „Basisinstallation“ wird mit der OID Installation erweitert. Wenn die Softwareinstallation abgeschlossen ist, kann damit begonnen werden, eine Instanz für den Einsatz des OID einzurichten. Es ist empfehlenswert, eine neue Instanz für die Verzeichnisdaten des OID zu erstellen. Natürlich können Sie aber auch eine bestehende Instanz nutzen, um Ihre Daten abzulegen. Die Einrichtung dieser Instanz kann durch das grafische Werkzeug OID Configuration Assistant (oidca) vorgenommen werden. Es werden weitere Tablespaces zur Aufnahme der Verzeichnisdaten in der Datenbank eingerichtet und zusätzlich das Benutzerschema ODSCOMMON angelegt, über das sich ein LDAP Serverprozess mit der Datenbank verbindet, um auf Verzeichnisinformationen zuzugreifen. Der Benutzer ODSCOMMON besitzt ausschließlich die CONNECT und die für den OID angelegte ODS_SERVER Rolle. Zusätzlich wird der Oracle Context angelegt. Der Oracle Context bildet eine Grundstruktur für ein in einer Oracle-Umgebung einsetzbares Verzeichnis. Er ist, wie in Abbildung 2 zu sehen, als ein Teilbaum im DIT vorhanden und enthält Einträge, die schon für das Zusammenspiel mit anderen Oracle-Produkten, wie z. B. dem iAS, dem Portal oder für die Möglichkeit eines Single Sign-On vorhanden sind. Starten der OID Instanz Im Anschluss an die Installation kann die OID Instanz gestartet werden. Dazu werden die beiden Programme oidmon und oidctl benutzt. Der oidmon ist ein Prozess, der die LDAP Serverprozesse überwacht und diese z. B. bei einem Absturz automatisch startet. Des Weiteren reagiert er auf alle Anfragen des oidctl. Mit dem oidctl können die LDAP Serverprozesse gestartet und gestoppt werden. Beim Starten eines solchen Prozesses kann z. B. ein Configset angegeben werden, um den Prozess mit einer bestimmten Konfiguration zu starten. Zuerst ist der Monitorprozess zu starten. Als Aufrufparameter wird der Net Service Name der Instanz übergeben, in dem das Schema und der Context liegen. In Abbildung 5 ist ein Beispielaufruf für den Monitorprozess abgebildet. Als nächstes muss die eigentliche OID Server Instanz gestartet werden, was mit dem Kommando oidctl durchgeführt wird. Dieses hat eine Reihe von möglichen Übergabeparametern, von denen einige in Abbildung 6 aufgeführt und beschrieben sind. Ein beispielhafter Start einer OID Server Instanz ist in Abbildung 7 aufgeführt. Sind beide Prozesse erfolgreich gestartet worden, läuft nun ein Monitorprozess und eine Reihe von oidldapd Prozessen, die für Clientanfragen zur Verfügung stehen (siehe Abbildung 8). oracle@linux:~> ps PID TTY TIME 4731 pts/0 00:00:00 4753 pts/0 00:00:00 4754 pts/0 00:00:00 4755 pts/0 00:00:00 4760 pts/0 00:00:00 [...] CMD oidmon oidldapd oidldapd oidldapd oidldapd Abb. 8: Der ps-Outpost zeigt Monitor- und oidldapd Prozesse. Ausblick Im nächsten Teil beschreiben wir zunächst die zentrale Namensauflösung bevor wir die Benutzer- und Rollenverwaltung beschreiben. Sollten Sie jetzt schon Fragen haben oder nicht auf die nächsten Teile warten können, dann wenden Sie sich doch einfach an: Lars Hendrik Korte und Michael Lindermann ([email protected]). 7 Unix/Linux/Open Source phpLDAPadmin: LDAP Administration Webfrontend LDAP ist „in“. Bei der Suche nach einem zentralen Netzwerk Informationsdienst in Unix Systemlandschaften stellen LDAP Verzeichnisdienste in zunehmendem Maße eine Alternative zu Lösungen wie NIS, NIS+ etc. dar. Sogar SUN, als „Erfinder“ von NIS, setzt mittlerweile auf LDAP. Und auch Microsoft bietet mit seinem Active Directory einen LDAP basierten Netzwerk Informationsdienst für Windows Systemlandschaften. Das Problem Der Einsatz eines LDAP Verzeichnisdienstes bringt große Vorteile bei der Zentralisierung der Informationsverwaltung. Allerdings stellt sich die Administration eines LDAP Verzeichnisses oftmals nicht besonders komfortabel dar. Das frei verfügbare OpenLDAP beinhaltet z. B. keine menügeführte oder grafische Administrationsoberfläche. Die Hersteller kommerzieller LDAP Verzeichnisdienste liefern demgegenüber zwar meist eigene Administrationsoberflächen (z. B. Novell iManager für das eDirectory), allerdings sind diese aufgrund proprietärer Komponenten in der Regel nur für eben dieses spezielle Verzeichnis zu gebrauchen. Was ist phpLDAPadmin? PhpLDAPadmin ist ein Open Source Projekt, das Ende 2002 ins Leben gerufen wurde und derzeit in der Version 0.9.3 angeboten wird. Es stellt eine webbasierte Administrationsoberfläche für beliebige LDAP Verzeichnisdienste bereit. Die Software ist rein in PHP geschrieben und aufgrund der Lizensierung unter der GPL kostenlos erhältlich und bei Bedarf beliebig erweiterbar. $i++; $servers[$i]['name'] = 'Beispiel LDAP Server'; $servers[$i]['host'] = 'ldap1.beispieldomain.de'; $servers[$i]['base'] = 'dc=beispieldomain,dc=de'; $servers[$i]['port'] = 389; $servers[$i]['auth_type'] = 'form'; $servers[$i]['tls'] = false; $servers[$i]['default_hash'] = 'md5'; $servers[$i]['login_attr'] = 'uid'; $servers[$i]['read_only'] = false; $servers[$i]['enable_auto_uid_numbers'] = false; Abb. 1: Auszug aus der Konfigurationsdatei config.php. 8 Es gibt gute Gründe, die für den Einsatz eines Webfrontends sprechen, im Gegensatz zu clientbasierten Lösungen. Der Installationsaufwand auf dem Client entfällt z. B. komplett, da ein Webbrowser heutzutage standardmäßig auf jedem Arbeitsplatzrechner bereits vorhanden ist. Dies minimiert den Aufwand für Installation und für Aktualisierungen der Oberfläche. Des Weiteren ist der Administrator auch unabhängig vom Betriebssystem, das auf dem Client eingesetzt ist, so dass die Bedienung des Frontends prinzipiell von jedem beliebigen Arbeitsplatzrechner im Netzwerk ohne Installationsaufwand möglich ist. // // // // // // // // // // // // // // // $i inkrementieren – neuer Dienst wird definiert Name des Servers (frei wählbar) Hostname Namensraum des Verzeichnisses TCP-Port für den LDAP Dienst Anmeldung per Formular Keine verschlüsselte Verbindung zum LDAP Server MD5 ist Standard Verschlüsselung für Benutzerpasswörter Schreibzugriff erlauben Keine automatische Vergabe von UIDs Unix/Linux/Open Source Installation Zur Installation des Tools wird lediglich ein Webserver (Apache, IIS, ...) mit PHPFunktionalität benötigt. Der eingesetzte PHP Interpreter muss dabei die Version 4.1 oder höher aufweisen und LDAP Unterstützung beinhalten. Zur Installation wird die im „tar“ Format bereitgestellte Software [1] in das Dokumentenverzeichnis des Webservers entpackt und kann anschließend über die entsprechende URL angesprochen werden. Konfiguration Die Konfiguration erfolgt über die Datei config.php im Installationsverzeichnis. Dabei kann die sehr gut dokumentierte Beispieldatei (config.php.example) sehr gut als Vorlage dienen. Abb. 2: Anlegen eines neuen Objekts. Die zu administrierenden LDAP Dienste werden über das zweidimensionale Array $servers konfiguriert, wobei $i einen laufenden Index für den jeweiligen Dienst darstellt. Eine Beispielkonfiguration zeigt Abbildung 1. Eine deutsche Sprachumgebung wird ebenfalls mitgeliefert. Die Aktivierung erfolgt durch folgenden Eintrag in der Datei config.php: $language = ‘de’; Verwaltung von Objekten Wurde in der Konfiguration der Parameter „auth_type“ auf den Wert „form“ gesetzt, so kann sich der Benutzer vor dem Zugriff auf das Verzeichnis mittels eines Formulars authentifizieren. Eine Anmeldung als „anonymous“ ist an dieser Stelle ebenfalls möglich, sofern die Sicherheitseinstellungen des LDAP Servers dies erlauben. Nach dem Login präsentiert sich der Inhalt des Verzeichnisses in einer übersichtlichen Baumstruktur. Die Bedienung erfolgt durchweg sehr intuitiv. Neben der Anzeige von Objekten sowie der Suche im Verzeichnis lassen sich Objekte und Attribute neu erstellen, modifizieren und löschen. Bei der Erstellung von Objekten helfen Templates, welche Kann- und Mussattribute sowie Standardvorbelegungen für eine Objektklasse festlegen. Einen Eindruck davon, wie intuitiv die Bedienung ist, gewinnen Sie in Abbildung 2. Link [1] http://phpldapadmin.sourceforge.net Import und Export Als besonders nützliches Feature ist der komfortable Import und Export von Objekten zu nennen. PhpLDAPadmin erstellt bei Bedarf von jedem Objekt oder wahlweise von kompletten Zweigen (Subtree) eine Export Datei im LDIF Format. Im Gegenzug lassen sich Objekte, die in Form einer LDIF Datei vorliegen, per Browser importieren. Des Weiteren bietet phpLDAPadmin die Möglichkeit, Objekte zu kopieren und direkt in ein anderes Verzeichnis einzufügen. Fazit Das vorgestellte Tool wird von der ORDIX AG seit einigen Monaten auch bei Kunden-Projekten eingesetzt und macht bisher einen durchweg positiven Eindruck. Das Layout ist sehr übersichtlich und die Bedienung erfolgt intuitiv. Die offene Struktur der Software ermöglicht es zudem, auf einfache Weise eigene Anpassungen zu tätigen, z. B. Templates für eigene Objektklassen zu definieren. Bei Fragen wenden Sie sich einfach an den Autor. Wir helfen Ihnen gern! Christof Amelunxen ([email protected]). 9 Datenbanken - Titelthema Data Pump Oracle 10g (Teil I): Oracle 10g Data Pump – Export und Import mit Hochdruck Oracle Data Pump ist das neue Export/Import Feature unter Oracle10g. Es soll in naher Zukunft die bestehenden clientseitigen Export- und Import Tools ablösen. Dabei wurde Data Pump mit dem Ziel entwickelt, einen neuen Daten-Extraktions- und Lade-Mechanismus mit Performance-Verbesserungen für Bulk-Loads und Metadaten-Verschiebung zu bieten. Noch ein Export/Import? Neben den bestehenden Verfahren Export/Import und SQL*Loader bietet die Data Pump API in Oracle 10g nicht nur die Möglichkeit, Daten und Metadaten parallel im direct-path Verfahren zu laden, sondern auch viele weitere Funktionalitäten, wie das Wiederaufsetzen eines Ent-/Ladevorgangs nach Unterbrechungen, einstellbarer Ressourcenverbrauch für Data Pump Vorgänge, Schätzung der Ausführungsdauer und des Platzverbrauchs sowie flexible und feingranulare Auswahlmöglichkeiten der Export- und Import Strukturen. Werfen wir jedoch zunächst einen Blick auf die Architektur. Architektur In Abbildung 1 sind Aufbau und Architektur zu erkennen, die sich aus den folgenden Teilkomponenten zusammensetzen: Master Table Zentrale Einheit jeder Data Pump Operation ist die Master Table. Sie wird im Schema des Benutzers erstellt, der den Data Pump Abb. 1: Die Architektur von Data Pump. 10 Job aufruft. Sie enthält alle Informationen über den Job: den aktuellen Status jedes Objekts, das ex- oder importiert wird, die Stelle, an der sich das Objekt im Dumpfile Set befindet, die benutzerspezifischen Konfigurationsparameter, der Status der WorkerProzesse und Restart-Informationen. Die Master Table wird während des File-basierten Exports erstellt und wird im letzten Schritt in das Dumpfile Set geschrieben. Im umgekehrten Fall wird die Master Table bei einem Import als erstes in die Datenbank importiert. Client Prozess Dieser ruft die Data Pump API auf. Die neuen Clients expdp und impdp besitzen neben der bereits in exp und imp enthaltenen Funktionalität zusätzlich eine Reihe von weiteren Datenbanken Export: Release 10.1.0.2.0 - Production on Wednesday, 07 April, 2004 10:33 Copyright (c) 2003, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining options FLASHBACK automatically enabled to preserve database integrity. Starting „ML“.“EXPORTML“: ml/******** directory=myDumpDest logfile=schemaML.log dumpfile=schemaML.dmp job_name=exportML schemas=ml Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Export> exit_client oracle@jumper:/oracle/> Listing 1: Starten des Data Pump Exports für das Schema ml. Features. Da Data Pump komplett in den Oracle Server integriert ist, wird nach dem Auslösen eines Data Pump Jobs kein weiterer Client benötigt. Es können sich sogar mehrere Clients zum Monitoring mit dem Job verbinden und wieder lösen, ohne dass der Job dadurch gestört wird. Server Prozess Dies ist der Standard Oracle (Dedicated) Server Prozess, wenn ein Client sich mit der Datenbank verbindet. Nach einem Aufruf von DBMS_DATAPUMP.OPEN ist der Server Prozess dafür zuständig, den eigentlichen Job anzustoßen und damit die Master Table zu generieren, die Advanced Queuing Kommunikation aufzusetzen, die für die Kommunikation zwischen den einzelnen Prozessen benötigt wird und den Master Control Prozess zu initiieren. Master Control Prozess Pro Job existiert immer nur ein Master Control Prozess (MCP). Dieser kontrolliert die Abarbeitung und Verteilung eines Data Pump Jobs. Ein Job kann in verschiedene Metadaten- bzw. Datenlade- und -entlade Phasen geteilt werden. Die Einteilung und Beauftragung der Worker Prozesse übernimmt ebenfalls der MCP. Zusätzlich ist der MCP auch für das File-Management, die Pflege der aktuellen Dumpfile Liste, den Job-Status, die Job-Beschreibung und die Restart- und Dumpfile-Information im Master Table zuständig. Worker Prozess Durch Aufruf des Kommandos START_JOB initiiert der MCP n Worker Prozesse, wobei n die Anzahl der durch den Parameter PARALLEL bestimmten Prozesse ist. Die Worker Prozesse führen die Aufgaben des MCP aus und protokollieren, welche Art von Objekt momentan verarbeitet wird, sowie den jeweiligen Status (completed, running). Diese Informationen werden für den Restart benötigt. Ventil öffnen Da der Export nun direkt auf dem Server stattfindet, muss hierfür zunächst ein Verzeichnisobjekt erstellt werden. Dieses Objekt referenziert ein existierendes Verzeichnis auf Betriebssystemebene, in dem der Benutzer oracle Lese- und Schreibrechte besitzt. Die exportierten Daten werden später vom expdp Programm in Form von Dumpfiles in dieses Verzeichnis gelegt. Des Weiteren werden dem Benutzer ml, der den Export und Import durchführt, die nötigen Systemprivilegien (read, write) erteilt. CREATE DIRECTORY myDumpDest AS ‘/tmp/myDumpDir1‘; GRANT READ, WRITE ON DIRECTORY myDumpDest TO ml; Der eigentliche Export wird dann auf dem Server mit dem Kommando expdp gestartet. Einige Datenbankadministratoren werden sich sicherlich in einer vertrauten Umgebung wiederfinden, da viele Parameter vergleichbar mit den Parametern des klassischen exp Kommandos sind. Auch das expdp Kommando bietet drei „Benutzerinterfaces“ an: Aufruf über die Kommandozeile mit Argumentenliste, Verwendung eines Parameterfiles oder die Benutzung der Dialogsteuerung. Um einen Export des eigenen Schemas durchzuführen, reicht der folgende Befehl aus: expdp ml/geheim \ dumpfile=schemaML.dmp \ directory=myDumpDest \ logfile=schemaML.log \ job_name=exportML \ schemas=ml Der Parameter dumpfile spezifiziert den Dateinamen, directory referenziert das zuvor erstellte Verzeichnisobjekt, logfile defi- 11 Datenbanken niert den Namen der Protokolldatei und der Parameter schemas grenzt den Exportvorgang auf das Schema „ml“ ein. Jeder Exportvorgang bekommt einen eindeutigen Namen, der über den Parameter job_name frei vergeben werden kann. Wird dieser Parameter ausgelassen, so generiert Oracle selbstständig einen Namen. Über den Job Namen können später z. B. Statistiken über den Fortschritt erfragt werden. Wichtig ist hierbei, dass der Name des Jobs nicht mit existierenden Objekten im Schema „ml“ in Konflikt gerät, da die von Oracle erstellte Master Table genau diesen Job Namen annimmt. Nachdem der Job angelaufen ist, kann die Interaktion mit <Steuerung + C> unterbrochen werden. Der eigentliche Exportjob läuft dabei im Hintergrund weiter (siehe Listing 1). Der Exportvorgang kann nun auch parallelisiert werden, so dass mehrere Worker Prozesse die Inhalte aus dem Schema in die entsprechenden Dumpfiles schreiben. Der oben aufgeführte Befehl muss hierfür nur leicht modifiziert werden: expdp ml/geheim \ dumpfile=myDumpDest1:schemaML1%U.dmp,myDumpDest2:schemaML2%U.dmp \ logfile=schemaML.log \ job_name=exportML \ schemas=ml \ parallel=2 Durch den Parameter parallel werden hier zwei Worker Prozesse gestartet. Damit die Performance voll ausgenutzt wird, erhält jeder Worker Prozess ein eigenes Verzeichnis, in das dieser die Dumpfiles schreibt. Im Idealfall an unterschiedlichen Controllern. So wird verhindert, dass das I/O System einen Flaschenhals bildet. Zu beachten ist, dass die Verzeichnisangabe nun Teil des dumpfile Parameters ist und der Parameter directory damit entfällt. • Es soll nur die Tabelle Mitarbeiter aus dem Schema ml exportiert werden. • Beim anschließenden Import soll die Tabelle im Schema mh erzeugt werden. • Storage Parameter werden nicht importiert. Ausgehend von unserem ursprünglichen Beispiel modifizieren wir den expdp-Aufruf um einen weiteren Parameter: expdp ml/geheim \ dumpfile=limitedExp.dmp \ directory=myDumpDest \ logfile=limitedExp.log \ job_name=exportLimit \ schemas=ml \ include=TABLE:”=’MITARBEITER’” Include ist ein interessanter Parameter, da über ihn gesteuert werden kann, welche Objekte exportiert werden. Dabei kann der include Parameter eine komplette Liste von Objekttypen annehmen (wie z. B. index, table, procedure, function etc.) Auch können die bekannten Vergleichsoperatoren, wie „IN“ „LIKE“ „=“ „!=“, benutzt werden. Sollen nur wenige Objekte ausgeschlossen werden, so kann dies über den exclude Parameter erfolgen, der die Negation zu include bildet. Gegenstück zum Export: impdp Rohraufsatz wechseln Um die weiteren Voraussetzungen zu erfüllen, schauen wir uns den Import an. Der generelle Aufbau ist ähnlich. Auch der Import bietet die bekannten drei Benutzerschnittstellen. Beide Beispiele in diesem Artikel zeigen einen Schema Export des Benutzers ml. Das heißt, es werden grundsätzlich alle Objekte plus deren Inhalte exportiert. Data Pump bietet jedoch weitere Möglichkeiten, um selektiv einzelne Objekte und Datensätze zu exportieren. impdp ml/ml dumpfile=limitedExp.dmp directory=myDumpDest remap_schema=ml:mh transform=segment_attributes:N oracle@jumper:/oracle/> cat expPar.par dumpfile=ma.dmp directory=dump_dir1 include=table:“=’MITARBEITER’“ query=“WHERE gehalt/12 > 1800“ Inhalt des Parameterfiles (expPar.par) oracle@jumper:/oracle/> expdp ml/ml parfile=expPar.par Listing 2: Inhalt und Aufruf unter Benutzung eines Parameterfiles. 12 Beginnen wir mit einem einfachen Beispiel und treffen die folgenden Voraussetzungen: Nach der Angabe, welches Dumpfile benutzt werden soll, wird mit Hilfe des Parameters remap_schema festgelegt, dass sämtliche Objekte vom Schema „ml“ in das Schema „mh“ importiert werden. Dieser Parameter ist vergleichbar mit den Parametern „fromuser“ und „touser“ des bisherigen Import Clients unter Oracle 9i. Storage Parameter werden nicht aus dem Dumpfile eingelesen. Dafür sorgt der Parameter transform=segment_attributes:N. Datenbanken Auch Datensätze können gefiltert werden. Ein Beispiel unter Verwendung einer Parameterdatei finden Sie in Listing 2. Hier werden nur die Mitarbeiter exportiert, deren berechnetes Monatsgehalt größer als 1800 Euro ist. Die query Klausel ist unser Freund ;-). An dieser Stelle möchte ich auf die ausführliche Oracle Dokumentation verweisen. Das Buch „Utilities“ [1] beschreibt die neuen Data Pump Parameter und ihre Möglichkeiten umfassend. Druckverlust Sollte es während des Exportvorgangs zu Fehlern kommen, so kann der DBA darauf reagieren. Bricht ein normalerweise sechs Stunden dauernder Export zum Beispiel nach der fünften Stunde aufgrund fehlenden Speicherplatzes im Zielverzeichnis ab, pausiert der Export. Nun kann ein zusätzliches Dumpfile in einem anderen Verzeichnis bereitgestellt werden und der pausierende Export wird genau an dieser Stelle wieder aufgenommen. Instance: Max Parallelism: EXPORT Job Parameters: Parameter Name CLIENT_COMMAND kr 1 Parameter Value: ml/******** directory=myDumpDest logfile=schemaML.log dumpfile=schemaML.dmp job_name=exportML schemas=ml DATA_ACCESS_METHOD AUTOMATIC ESTIMATE BLOCKS INCLUDE_METADATA 1 LOG_FILE_DIRECTORY MYDUMPDEST LOG_FILE_NAME schemaML.log TABLE_CONSISTENCY 0 USER_METADATA 1 State: IDLING Bytes Processed: 0 Current Parallelism: 1 Job Error Count: 0 Dump File: /tmp/myDumpDir1/schemaML.dmp bytes written: 4,096 Worker 1 Status: State: UNDEFINED Export> add_file=dump_dir1:newFile%U.dmp Bis dato ist dies nicht möglich gewesen. Bei der bisherigen Export/Import Funktionalität (bis Oracle 9i) wurde der Export in so einem Fall sofort abgebrochen. In der Hoffnung des DBA, diesmal genug Speicherplatz bereitgestellt zu haben, musste der komplette Export erneut durchgeführt werden. Listing 3 zeigt nun die neue Vorgehensweise für den angenommenen Fall. Über den Parameter attach und den Jobnamen kann eine Verbindung zu einem im Hintergrund laufenden Export aufgebaut werden. Gleichzeitig wird die dargestellte Statistik in Listing 3 ausgegeben, die erneut mit dem Kommando status abgefragt werden kann. Wird hier der Fehler festgestellt, so kann über das Kommando add_file ein zusätzliches Dumpfile bereitgestellt werden. Dann wird der pausierte Export über den Befehl start_job fortgesetzt. Export> start_job Listing 3: Hinzufügen eines weiteren Dumpfiles bei „pausierendem“ Export Vorgang. Link [1] http://otn.oracle.com/documentation/database10g.html Des Weiteren wird von Oracle eine komplette API zur Verfügung gestellt, mit der es dem Entwickler möglich ist, eigene PL/SQL Programme zu schreiben, die die neuen Export- und Import Funktionalitäten nutzen. Die Möglichkeit der Selektierung von Daten über die include- und exclude Parameter ist dabei ein willkommenes Bonbon. Zu hoffen ist, dass bekannte Kinderkrankheiten in naher Zukunft behoben werden. Fazit Oracle Data Pump erhöht die Performance des Exports durch die Möglichkeit der Parallelisierung. Dabei kann der Grad der Parallelisierung „on demand“ gewählt werden. Im klassischen OLTP Betrieb wäre es denkbar, tagsüber einen Export mit zwei parallelen Prozessen zu starten. In den Abendstunden kann nachträglich die Anzahl der Worker Prozesse erhöht werden, da nun gegebenenfalls freie Ressourcen zur Verfügung stehen. Michael Lindermann ([email protected]). 13 System Management - Titelthema Control-M Control-M: Optimierung von Geschäftsprozessen Vom Job Scheduling zur Steuerung von Geschäftsprozessen: ORDIX bietet Ihnen mt BMC’s Control-M ein modernes und praxiserprobtes Job-Control-System zur Verbesserung der Abläufe Ihrer Geschäftsprozesse an. Jobsteuerung nicht mehr nur für Mainframes Früher war Jobsteuerung eine Domäne der Mainframes. Inzwischen wird es immer wichtiger, in heterogenen Umgebungen Geschäftsprozesse zu steuern, deren zugehörige Programme auf verschiedenen Plattformen ablaufen und Abhängigkeiten untereinander aufweisen. Anforderungen an moderne Jobsteuerung • Durch die stetige Erweiterung der OnlineZeiten und damit einhergehend die Verkürzung des Batchfensters, werden die Anforderungen an einen reibungslosen und optimierten Ablauf der Batchprozesse ständig erhöht. Zudem erwarten Endkunden immer schnellere und bessere Serviceleistungen. Diese Entwicklung führt zu der Notwendigkeit, diese Abläufe zu automatisieren, um Fehler und Verzögerungen möglichst zu vermeiden. • Bei der Realisierung eines Geschäftsprozesses sind in der Regel mehrere Applikationen beteiligt, die oft auf unterschiedlicher Hardware unter verschiedenen Betriebssystemen laufen. Zudem befindet sich diese Hardware möglicherweise in verschiedenen Rechenzentren, ist also räumlich voneinander getrennt. • Einige Applikationen, wie etwa SAP R/3, bilden abgeschlossene Umgebungen und enthalten ihre eigenen Mechanismen, um Daten in Batchjobs zu verarbeiten. Wenn einem Kunden z. B. Lieferzeiten zugesagt sind, dürfen all diese Nebenbedingungen keinen behindernden Einfluss auf den Ablauf des Prozesses haben. • Bei den Abhängigkeiten zwischen verschiedenen Batchjobs werden Mehrfachabhängigkeiten berücksichtigt. • Bei unvorhergesehenen Ereignissen gewährleistet die Steuerungssoftware den – unter den neuen Bedingungen – optimalen Ablauf des Geschäftsprozesses. • Durch B2B-Applikationen überschreiten Geschäftsprozesse inzwischen sogar die Grenzen zwischen Unternehmen. Der Anstoß für einen Geschäftsprozess kann so ein Ereignis sein, das von einem anderen Unternehmen ausgelöst wird (z. B. Bestellung). Andererseits kann aber auch ein Geschäftsprozess im eigenen Unternehmen durch eine Aktion im System eines an- Jede dieser Plattformen bringt in der Regel Mechanismen mit, die mit Einschränkungen geeignet sind, Batchjobs auf ihr zu organisieren. Das plattform- und anwendungsübergreifende Zusammenwirken der Jobs bleibt aber bisher Scheduling-Tools überlassen. Insbesondere hohe Investitionen in Standardsoftware wie z. B. SAP können sich am schnellsten amortisieren, wenn eine möglichst enge Einbindung in die übrige Systemlandschaft gewährleistet ist. Dabei sollte die Jobsteuerung sich an Geschäftsvorfällen orientieren und nicht durch technische Einschränkungen gekennzeichnet sein. Laut einer gemeinsamen Studie des Handelsblattes und der Droege&Comp versprechen sich die IT-Chefs vieler Unternehmen das höchste Einsparpotential von Standardisierung, gefolgt von Prozessoptimierungen (Quelle: Handelsblatt vom 23.3.2004). Abb. 1: Applikationsübergreifende Steuerung von Geschäftsprozessen. 14 System Management deren Unternehmens unterbrochen (z. B. Lieferanfrage) und erst nach Erhalt des Ergebnisses aus diesem System fortgesetzt werden. Das bedeutet, dass auf diese Ereignisse ein Steuerungstool entsprechend reagiert. • Um auf Marktentwicklungen schnell reagieren zu können, ist es für das Management eines Unternehmens immer häufiger notwendig, kurzfristig „ad hoc“-Auswertungen – z. B. zur aktuellen Geschäftsentwicklung oder zur Struktur des Kundenstammes – durchzuführen. Derartige Auswertungen sind in den laufenden Betrieb integrierbar, ohne wichtige Anwendungen zu beeinträchtigen. • Im Fehlerfall ist es möglich, den Fehler zu analysieren, z. B. durch Untersuchung einer Log-Datei, und gegebenenfalls automatisiert Aktionen zur Fehlerbereinigung durchzuführen. • Alle Prozesse sind von einer zentralen Stelle aus überschau- und überwachbar. • Zusätzliche Applikationen sind schnell integrierbar. • Vereinbarte Service-Level sind auch in heterogenen Umgebungen überprüfbar und werden eingehalten. • Verbesserte Ressourcenauslastung durch Lastverteilung. 3. Gegebenenfalls wird Ware nachbestellt oder ein Produktionsauftrag an die Fertigung erteilt. Parallel dazu wird eine Auftragsbestätigung an den Kunden versandt und der Auftrag als Bestellung verbucht. 4. Wenn die Lieferung vollständig ist, kann die Rechnung erstellt werden und die Auslieferung erfolgen. 5. Schließlich kann hoffentlich noch die Zahlung verbucht werden, um den Vorgang abzuschließen. Diese Aktivitäten laufen voraussichtlich auf mindestens drei verschiedenen Rechnern in ebenso vielen unterschiedlichen Programmen ab, die voneinander abhängig sind. Die Lösung: Steuerung von Geschäftsprozessen mit Control-M Als langjähriger BMC-Partner bietet ORDIX für diese Aufgabe das Produkt Control-M an. Um die übergreifende Funktionalität zu erreichen, werden Komponenten auf drei Ebenen installiert (siehe Abbildung 3). • Die Konfiguration und Überwachung der Server erfolgt über den Enterprise-Manager. • Mehrere Agenten können von einem Server gesteuert werden, der die Informationen für die Startzeiten und Abhängigkeiten verwaltet. Beispiel Warenbestellung durch einen Kunden über das Internetportal, Zusammenstellung der Lieferung, gegebenenfalls Nachbestellung von Ware oder Produktionsauftrag, Verwaltung des Bestellvorgangs bis hin zur Rechnungsstellung und Verbuchung. Da hoffentlich viele Bestellungen eingehen, ist die Verarbeitung dieser Geschäftsvorfälle im Batch die effizienteste Vorgehensweise. Abbildung 2 zeigt den folgenden Ablauf: 1. Auf dem Internetrechner, der in einer DMZ steht, werden die Bestellungen gesammelt. 2. Die Bestellungen werden dann weitergegeben bzw. in regelmäßigen Abständen von einem Lagerverwaltungs-/ Kommissionierungsprogramm abgeholt. In diesem Programm wird geprüft, ob die geforderte Ware im Lager vorhanden ist. Abb. 2: Beispiel für einen Geschäftsprozess. 15 System Management E-Business Suite existieren bereits spezielle Kontrollmodule, die die Steuerung von Jobs innerhalb dieser Systeme erlauben. Durch die plattform- und applikationsübergreifende Steuerung der Jobs werden Geschäftsprozesse gestrafft und Verzögerungen vermieden. D. h. auch komplexe Abläufe können optimiert werden, indem der kritische Pfad analysiert wird und die entsprechenden Jobs z. B. optimiert oder auf schnellere Hardware verlagert werden. Die schnellere Abwicklung von Geschäftsprozessen ist kundenfreundlich und kann ein Wettbewerbsvorteil sein. Auf unterster Ebene funktionieren Agenten, die auf jedem Rechner installiert werden müssen, auf dem Jobs über das Tool gesteuert ablaufen sollen. Das Modul eTrigger bietet die Möglichkeit, Web-basierte Anwendungen in die Produktionsumgebung zu integrieren. Z. B. kann man ein Webfrontend gestalten, über das Anforderungen an einen Geschäftsprozess in das System geleitet werden, deren Verarbeitung in entsprechenden Batchjobs durch eTrigger sichergestellt wird. Zusätzlich kann die Installation weiterer Module notwendig werden. So wird z. B. die Anbindung an das Internet durch ein eigenes Modul (eTrigger) erreicht. Und auch die Steuerung von Jobs innerhalb abgeschlossener Applikationen wie z. B. SAP R/3 erfolgt über eigene Kontrollmodule. Beispielwebseiten und Templates für unterschiedliche Aufgaben erleichtern dabei die Arbeit erheblich. Auf diese Weise könnte das im Beispiel (siehe Abbildung 2) beschriebene Szenario vollständig automatisiert ablaufen. Für nahezu alle Betriebssysteme und viele Standardapplikationen verfügbar Dazu würden die vom Kunden in die – mit Hilfe von eTrigger gestaltete – Webseite eingegebenen Daten auf Plausibilität geprüft, interpretiert und der Start entsprechender Batchjobs veranlasst. Abb. 3: Architektur von Control-M. • Es werden alle gängigen Betriebssysteme unterstützt. Für Baan, SAP R/3, SAP BW, Peoplesoft eBusiness Solutions und Oracle Die weitere Steuerung des Geschäftsprozesses erfolgt ebenfalls über Control-M, gegebenenfalls in Abhängigkeit von Ergebnissen der Prüfprogramme. Dabei können auch die Jobs zur Auftragsabwicklung, die möglicherweise in einem SAP R/3- oder Baan-System ablaufen, ausgeführt und überwacht werden. Development Kit für Erweiterungen Zur Berücksichtigung von Eigenentwicklungen und bisher noch nicht durch den Standard unterstützten kommerziellen Programmen wird ein Software Development Kit eingesetzt, mit dessen Hilfe Kontrollmodule geschrieben werden können. Auf diese Weise ist es natürlich auch möglich, zukünftige Entwicklungen zu integrieren, wodurch ein Investitionsschutz gewährleistet ist. Abb. 4: Automatisierte Fehlerbehebung durch Auswertung von Log-Dateien. 16 Applikationen, die ein Kommandozeileninterface besitzen, können auch über Control-M/ Links for Distributed Systems integriert werden. Dazu wird eine Session zu dem entsprechenden Rechner aufgebaut, innerhalb der das Kommando ausgeführt wird. Für Meldun- System Management gen, die an diese Session gesandt werden, können Regeln hinterlegt werden, die eine automatisierte Reaktion beinhalten. Challengers Im Fehlerfall ist Control-M in der Lage, beispielsweise eine Log-Datei auszuwerten und auf gegebenenfalls auftretende Fehlermeldungen mit entsprechenden Maßnahmen zu reagieren, so dass ein Neustart des Jobs erfolgreich sein kann. IBM/Tivoli BMC Software Ability to execute Marktpositionierung Das aktuellste magische Quadrat von Gartner aus dem Januar 2003 zeigt BMC mit ControlM wie schon im Jahr 2002 als führendes Unternehmen im Markt für Job Scheduling Tools (siehe Abbildung 5). Mit über 2800 Installationen weltweit ist Control-M eines der am stärksten verbreiteten Produkte dieses Bereichs. Ausblick In der nächsten ORDIX News berichten wir über den Einsatz von Control-M für „ad-hoc“ Leaders Computer Cybermation Associates UC4 Software Orsyp Redwood Software Allen Systems Tidal AppWorx Group Others As of January 2003 Niche Players Visionaries Completeness of Vision Abb. 5: Quelle: Gartner Research: Marktpositionen konkurrierender Anbieter im Markt für Job Sceduling Tools. Auswertungen und die Integration von SAP-Jobs. Sollten Sie jetzt schon Fragen haben, wenden Sie sich an Theo Antony ([email protected]). Seminarvorstellung: PATROL Central Der Teilnehmer lernt in diesem Seminar den neuen Consolen Server „PATROL Central“ kennen. Im Vordergrund stehen dabei die Grundlagen, die Planung, die Installation und Konfiguration von PATROL Central sowie der praktische Umgang damit. Seminarinhalte • Einblick in die PATROL 7 Architektur • Installation und Konfiguration der Common Service Komponenten und der PATROL Central Produkte • PATROL Console Server und RTserver Zielgruppe • PATROL Central Microsoft Windows Edition PATROL Administratoren • PATROL Central Web Edition Voraussetzungen • Arbeiten mit den PATROL Central Produkten Gute Kenntnisse in der Administration von PATROL 3 oder mindestens Teilnahme am ORDIX Seminar “PATROL Basics” (PAT-01). Kenntnisse des Betriebssystems Unix oder Windows. • PATROL 7 Security • Migration PATROL Console 3.x nach 7 • Planung der PATROL 7 Infrastruktur • Übungen Termine 26.07.2004 - 28.07.2004 in Wiesbaden 13.09.2004 - 15.09.2004 in Wiesbaden 06.12.2004 - 08.12.2004 in Wiesbaden Dauer: 3 Tage Kursgebühr/Teilnehmer: 1.190 € zzgl. MwSt. Die Unterlagen zu diesem Seminar erhalten Sie in deutscher Sprache. 17 Unix/Linux/Open Source E-Mail Filter gegen SPAM Die webbasierte Variante von gewürztem Dosenfleisch (SPAM) schmeckt uns auch nicht mehr und lag schwer in der Mailbox von vielen Mitarbeitern unseres Unternehmens. Obwohl es längst eine gesetzliche Regelung für dieses Problem gibt, ist der Anteil an SPAM E-Mails in den Mailboxen nicht zurückgegangen, im Gegenteil: die Tendenz ist steigend. Open Source: SpamAssassin Einen 100%igen Schutz vor SPAM oder UCE (Unsolicited Commercial E-Mail) wird es nicht geben, solange es sich für „SPAMer“ noch lohnt, irgendwelche Filter zu knacken, um die Werbung an den Empfänger zu bringen. Es gibt aber mehrere Hard- und Software Lösungen auf dem Markt, die sich diesem Problem widmen. Wir haben uns für den Einsatz des Open Source Produktes „SpamAssassin“ entschieden, weil dieses Programm eine verblüffende Effizienz aufweist. Davon hat uns die Software bei umfangreichen Tests überzeugt. Die Trefferquote lag nahezu sofort zwischen 90 % und 95 %, was schon Grund genug ist, diese Software einmal einzusetzen. Ein weiterer, für uns wichtiger Punkt: Die Software verändert die E-Mail beim Scannen nicht. Ihr wird nur ein Stempel im Header „verpasst“. Damit ist schon eine Vorarbeit für das Sortieren geleistet. Der Mitarbeiter entscheidet dann letztendlich selbst, wie er mit solchen E-Mails umgeht. Drei Dämonprozesse machen die Arbeit Zu Beginn eines solchen Projektes muss man sich zunächst einmal überlegen, an welcher Stelle der gesamten internen E-Mail-Route das Filtern erfolgen soll. Eine Richtlinie, an die wir uns unbedingt halten wollten, war, dass alle E-Mails von extern erst einmal angenommen werden. Erst auf dem POP3/IMAP Server sollte dann das Scannen erfolgen. Pop3/Imap Server MA Laptops / Festplatte MA Rechner/ Sendmail-8.12.8 Spamass-Milter 0.2.0 Snmp Server WWW Abb. 1: Durchlauf einer E-Mail im Unternehmen über POP3/IMAP Server mit Sendmail, Spamass-Milter und SpamAssassin. 18 Sobald eine E-Mail den Sendmail auf dem Server erreicht, wird sie erst durch SpamassMilter weiterverarbeitet. Dieser ruft den SpamAssassin auf und analysiert die Mail unter Verwendung von spamd und spamc (Dämon und Client). Anhand von Suchmustern und Regeln bekommt jede Mail einen Zahlenwert zugeordnet. Je höher der Wert, desto größer ist die Wahrscheinlichkeit, dass sie eine SPAMMail ist. Dieser Wert wird in den Mail-Header „X-SpamStatus“ eingefügt. Ab einem konfigurierbaren Schwellwert wird zusätzlich das Subject mit dem Wort SPAM „verziert“. Danach geht die Mail den üblichen Weg durch Sendmail und wird dann z. B. auf dem IMAP Server abgelegt. Um es kurz darzustellen: Anstatt den üblichen Weg zu gehen, wird die E-Mail beim Sendmail durch einen Bypass geschickt, wo das Filtern erfolgt. Folgende Software-Versionen sind auf dem EMail-Server im Einsatz: [1] Sendmail - 8.12.8 Compiled with: DNSMAP LOG MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETUNIX NEWDB PIPELINING SCANF USERDB XDEBUG ... [2] Spamass-milter 0.2.0 [3] SpamAssassin version 2.60 Sendmail Source installieren und Milter einkompilieren spamc SpamAssassin 2.60 spamd Drei Software Pakete in Kombination machen es möglich: Sendmail, Spamass-Milter und SpamAssassin. Das Zusammenspiel der drei Pakete zeigt Abbildung 1. Zunächst die Source auf dem System auspacken: # rpm -i sendmail-8.12.8-5.90.src.rpm Eine Datei site.config.m4 unter /usr/ src/redhat/SOURCE/sendmail-8.12.8/ Site mit folgendem Inhalt erstellen: Unix/Linux/Open Source APPENDDEF(‘conf_sendmail_ENVDEF’, ‘-DMILTER’) define(‘confENVDEF’, ‘-DSM_CONF_SHM=0’) Mittels rpm Befehl ein Sendmail Paket erstellen: # cd usr/src/redhat/SPECS # rpm –bb sendmail.spac # pwd # /usr/src/redhat/SPECS # ls -al ../RPMS/i?86/sendmail-8.12.8-4.i?86.rpm -rw-r—r— 1 root root 540096 Nov 6 10:11 ../RPMS/i?86/sendmail-8.12.8-4.i?86.rpm und auf dem System installieren: # rpm –i sendmail-8.12.8-4.i?86.rpm Die Konfiguration von Sendmail ist etwas umfangreicher und unter [4] gut beschrieben. Spamass-Milter & SpamAssassin Installation und Konfiguration Paket Mail-SpamAssassin-2.60.tar.gz unter z. B. /tmp auspacken, dann mit make kompilieren und (spätestens hier als root) mit make install installieren: # # # # cd /tmp/Mail-SpamAssassin-2.60 perl Makefile.PL make make install Beim Spamass-Milter gibt es eine ähnliche Vorgehensweise, allerdings wird hier mit einem configure Skript gearbeitet: # # # # # cd /tmp; tar xvfz spamass-milter-0.2.0.tar.gz cd spamass-milter-0.2.0 ./configure make make install Zu der Konfiguration von SpamAssassin und Spamass-Milter ist folgendes zu erwähnen: • • Spamass-Milter benötigt keine zusätzliche Konfiguration. SpamAssassin lässt sich durch Optionen (siehe Manpages zu spamc und spamd) und die Datei user_prefs steuern. Wenn es läuft, ist es sehr wichtig, darauf zu achten, welche Optionen man dem spamc Client mitgibt. Der Grund dafür ist, dass SpamAssassin z. B. nicht unerhebliche Ressourcen des Hauptspeichers benötigt. # perl spamstat.pl maillog Dec-04 – Dec-09 04.12.2003 ====================================== | Insgesamte Mails = 723 | Spam Mails = 143 | Ham Mails = 580 | Spamanteil = 19.77 % ====================================== 05.12.2003 ====================================== | Insgesamte Mails = 987 | Spam Mails = 248 | Ham Mails = 739 | Spamanteil = 25.12 % ====================================== 06.12.2003 ====================================== | Insgesamte Mails = 442 | Spam Mails = 234 | Ham Mails = 208 | Spamanteil = 52.94 % !!! Samstag ====================================== 07.12.2003 ====================================== | Insgesamte Mails = 485 | Spam Mails = 216 | Ham Mails = 269 | Spamanteil = 44.53 % !!! Sonntag ====================================== 08.12.2003 ====================================== | Insgesamte Mails = 1954 | Spam Mails = 207 | Ham Mails = 1747 | Spamanteil = 10.59 % ====================================== 09.12.2003 ====================================== | Insgesamte Mails = 737 | Spam Mails = 164 | Ham Mails = 573 | Spamanteil = 22.25 % ====================================== Abb. 2: Ausgabe eines Scripts zur Veranschaulichung des Anteils von Spam Mails an Mails insgesamt. Links [1] ftp://ftp.uni-koeln.de/mirrors/redhat.com/redhat/linux/ [2] http://at.rpmfind.net/opsys/linux/RPM/spamass-milter.html [3] http://www.spamassassin.org/downloads.html [4] http://www.europe.redhat.com/documentation/rhl7/ref-guide-de/s1-sysadmin-sendmail.php3 19 Unix/Linux/Open Source Mit der Option –s (maximum message size) beim spamc kann man z. B. Mails mit großem Inhalt von dem Scanprozess ausschließen. Um das Geschehen in der /var/log/maillog zu verfolgen, stellt man am Anfang den Debug-Modus beim spamd ein. Die restlichen Parameter kann man zunächst beim Default (z. B. Stempel ***SPAM*** wird bei Default-Werten nur nach drei Sternen vergeben) belassen und in der Datei user_prefs nach und nach anpassen. Bei sauberem Starten von sendmail, spamass-milter und spamd sind folgende Dämonprozesse zu finden: Statistiken rechtfertigen den Einsatz Um das Geschehen und die Effizienz etwas überschaubarer zu gestalten, haben wir ein Skript entwickelt, das relevante Zahlen über den Tagesablauf liefert. Hier wird sehr schnell deutlich, dass SPAM-Mails durchaus einen großen Anteil an der Gesamtmenge an E-Mails haben. An Wochenenden, wo der „normale“ Mailverkehr etwas ruht, wird der SPAM Anteil prozentual deutlich sichtbar (siehe Skriptausgabe in Abbildung 2). Wo ist der Haken? # ps -e | grep sendmail | grep -v grep 27667 ? 00:04:58 sendmail # ps -e | grep spam | grep -v grep 13773 ? 00:00:53 spamass-milter 27772 ? 00:00:31 spamd Start/Stop Skripte sind in den Sourcen mitgeliefert, müssen aber je nach Betriebssystem angepasst werden. Wichtig zu erwähnen: die Optionen für den spamc (Client) sind in dem Start/Stop Skript für spamass-milter definiert. Der höhere Bedarf an Rechenleistung und Hauptspeicher beim Scannen einer E-Mail ist zwar ein Nachteil, aber immer noch kostengünstiger als menschliche Arbeitszeit, die investiert wird, um sich von unerwünschten Informationen zu befreien. Alexander Hochhalter ([email protected]). Impressum Herausgeber: ORDIX AG Aktiengesellschaft für Softwareentwicklung, Beratung, Schulung und Systemintegration, Paderborn Redaktion: Helma Jenniches V.i.S.d.P.: Wolfgang Kögler Anschrift der Redaktion: Westernmauer 12 - 16 D-33098 Paderborn Tel.: 0 52 51 / 10 63 - 0 Fax: 0 180 / 1 ORDIX 0 oder: 0 180 / 1 67349 0 Gestaltung/Layout: Sascia Brinkmann Druck: Druckerei Reike GmbH, Paderborn 20 Autoren dieser Ausgabe: Christof Amelunxen, Theo Antony, Stefanie Heither, Michael Heß, Alexander Hochhalter, Helma Jenniches, Dr. Stefan Koch, Wolfgang Kögler, Lars Hendrik Korte, Andreas Kother, Michael Lindermann, Roger Niemeyer, Uwe Rübesamen, Guido Saxler, Jens Stahl Copyright: ORDIX AG. Alle Rechte vorbehalten. Die Zeitschrift ORDIX News hat eine Auflage von 7.900 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 sowohl die neueste Ausgabe als auch ältere Ausgaben im Archiv der ORDIX News im Internet unter: http://www.ordix.de. Schauen Sie mal rein! Der Kontakt zu unseren Lesern ist uns sehr wichtig. Für 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 Chess Classic Mainz 2004: ORDIX Open gehen in die 11. Runde! Nach dem 10-jährigen Jubiläum der ORDIX Open im vergangenen Jahr folgt vom 4. - 8. August 2004 nun die 11. Runde im Rahmen der „Chess Classic“ in der Rheingoldhalle, Mainz. Es gibt Plätze zu gewinnen! Schon jetzt ist die Schachgemeinde wieder gespannt, wie Hans-Walter Schmitt, Organisator der Veranstaltung, sein Ziel „Immer besser als im Jahr zuvor“ in die Tat umsetzt und macht uns damit neugierig auf das Programm: Das Duell der Weltmeister „Raffinierte, logisch exakt durchdachte Schachzüge, konzentrierte Spannung am Brett, brilliante Strategien, ein Hauch von Perfektion“ zwischen den Besten der Besten: Viswanathan Anand (Weltmeister 2000-2002, ELO 2774) gegen Alexei Schirow (Vize-Weltmeister 2000/2002, ELO 2713). Wer kann wem Paroli bieten und behält am Ende den kühleren Kopf? Die Teilnehmer und Interessierten erwartet in 8 Partien Schnellschach bei 25 Minuten pro Partie und 10 Sekunden pro Zug ein spannendes Match, bei dem es sich lohnt, live dabei zu sein! Das Finale der Chess960 Weltmeisterschaft Die in 2003 erstmalig ausgetragene WM des Chess960 wird in diesem Jahr zum zweiten Mal veranstaltet. Die Rivalen sind Peter Swidler, Chess960 Weltmeister 2003, und Levon Aronian, der Gewinner des Qualifikations-Open 2003. Bevor die Partie anfängt, wird eine der 960 möglichen Grundstellungen ausgelost. In dieser Schach-Variante, die auf den legendären amerikanischen Schachweltmeister Robert James (Bobby) Fischer zurückgeht, sind die Mainzer Veranstalter in der Präsentation führend. ORDIX Open Nachdem sich in 2003 der 19-jährige Alexander Grischuk erfolgreich gegen seine rund 500 Gegner durchsetzte, können wir uns dieses Jahr auf mindestens ebenso viele Teilnehmer freuen. Das weltweit am höchsten dotierte Schnellschach-Open bietet wieder ein hohes Aufgebot an mehreren Dutzend Groß- und Internationalen Meistern. Ein Preisfond von 35.000 Euro erwartet die Open Gewinner - ein toller Anreiz zum Mitmachen! Die Simultans Würden Sie die Nerven behalten, wenn Sie es gleich mit 40 Gegnern aufnehmen müssten? Peter Swidler und Alexei Schirow werden sich dieser haarsträubenden Herausforderung stellen. Wie Sie einer der 40 Gegenspieler werden, lesen Sie unten. Gewinnspiel Sie möchten gerne gegen die „ganz Großen“ spielen und mit von der Partie sein bei diesem bedeutsamen Schacherlebnis? Dann nehmen Sie an unserem Gewinnspiel teil. Wir verlosen unter den ersten 50 Einsendern 2 Plätze für das ORDIX Open (7./8.8.2004) sowie je einen Platz im Simultan gegen Peter Swidler bzw. gegen Alexei Schirow (beide Simultan-Partien finden am Mittwoch, den 4.8.2004 statt). Schreiben Sie bis zum 20.07.2004 Ihren Teilnahmewunsch unter dem Stichwort „Chess Classic 2004“ an: ORDIX AG, Westernmauer 12-16, 33098 Paderborn oder per E-Mail an [email protected]. Der Rechtsweg sowie die Teilnahme von ORDIX Mitarbeitern sind ausgeschlossen. Weitere Informationen zu den Chess Classic 2004 in Mainz finden Sie im Internet unter http://www.chesstigers.de/. Stefanie Heither ([email protected]). 21 Aktuell „Es gibt nichts Gutes, außer man tut es.“ (Erich Kästner) Golfen und Gutes tun: 1. ORDIX Benefiz Golf Open am 25./26. September 2004 Die ORDIX AG lädt alle Golfsport-Freunde und Interessierten ganz herzlich zur Premiere des ORDIX Golf Open ein. Am Samstag, den 25.09.04 startet das zweitägige Benefiz Golf Open im „Senne Golfclub Gut Welschof“ in Ostwestfalen. Sonst Dienstleister für Ihre IT Projekte, möchte ORDIX diesmal an ganz anderer Stelle helfen. Unsere Aktion „Golfen und Gutes tun“ greift den zwei nebenstehenden Kinderprojekten unter die Arme. Leisten Sie durch Ihre Teilnahme an diesem Turnier einen entscheidenden Beitrag für die notleidenden Kinder. Denn u. a. gehen auch Ihre Teilnahmegebühren vollständig als Spendengelder an diese Hilfsprojekte. Motivationstipp Besonders stolz sind wir darauf, dass es uns gelungen ist, den Schauspieler und Prominenten Charles M. Huber (u. a. bekannt aus der TV-Serie „Der Alte“) als Schirmherrn für dieses Benefiz-Turnier zu gewinnen. Huber engagiert sich persönlich sehr stark für Entwicklungs- und Förderprojekte für Kinder in Afrika. Darüber hinaus ist er als UNBerater für die „Food and Agriculture Organization of the United Nations“ (FAO), einer Organisation zur Hungerbekämpfung in Entwicklungsländern, tätig. Die Spendenprojekte 1. Die Kinder im Senegal Projekt „Care1“: Dieses Projekt fördert die Ausbildung bei Kindern, deren Familienoberhaupt (Vater oder Mutter) während der Flutkatastrophe zu Tode gekommen ist oder deren Familien obdachlos geworden sind. Die Unterstützung der Kinder beinhaltet u. a. ihre Verpflegung, sprachliche Ausbildung und eine Ausbildung am Computer. Besonderer Wert wird darauf gelegt, dass die Kinder ihre Stammessprache pflegen und ihre spezielle Kultur gefördert wird. Bitte informieren Sie sich unter www.afrika-direkt.de/projekte.htm 2. Westfälisches Kinderdorf e. V. (IPWL, Schlangen) Als Berater zweier Ministerien sammelte er zahlreiche Erfahrungen. Diese kommen nun seit mehreren Jahren dem wohltätigen Verein „AFRIKA DIREKT e. V.“ zugute, in dem sich Huber intensiv für Hilfsprojekte im Senegal engagiert. Das Kinderprojekt „Neuer Lebensmittelpunkt“ ist eine „Integrativ-Pädagogische Wohn- und Lebensgemeinschaft“ (IPWL). Sie bietet Kindern und Jugendlichen dauerhaft ein neues Zuhause und damit erstmals wieder eine neue Lebensperspektive. Diese Kinder haben aufgrund ihrer Vorerfahrungen schwere seelische Störungen erlitten. Sie können bzw. dürfen deshalb nicht mehr bei ihren Eltern leben. Bitte informieren Sie sich unter www.wekido.de Was können Sie noch tun? Und was können Sie tun? Buchtipp In seinem Buch „Ein Nie- Im Rahmen einer Amerikanischen Versteigerung werden zugunsten der Kinderprojekte von Prominenten handsigniertes, hochwertiges Golfequipment, Musical- und Museumskarten u. v. m. versteigert. Spielen Sie Auge in derbayer im Senegal“ beAuge mit unserem Prorichtet Charles M. Huber minenten und Sie tun über Erfahrungen in Deutschgleichzeitig Gutes daland und im Senegal, von Sie möchten an dem Turnier teilnehmen bei! Egal ob Golf-Könder Suche nach seinem Vater und von den Problemen, oder wünschen weitere Infos? Dann senner oder Nicht-Könner, „zwischen den Welten seiden Sie Ihr Anliegen einfach per E-Mail an das Programm bietet nen Platz zu finden“. [email protected] für jedes Leistungsspektrum etwas PasEine Agenda, die Spielbedingungen, Übersendes. Nehmen Sie an dem spaßwirksamen Benefiz-Turnier teil nachtungsmöglichkeiten etc. finden Sie unoder schnuppern Sie bei einem Putting- und Kurzplatzturnier einter http://www.ordix.de/golfopen/ und einen mal in den beliebten Sport hinein. ersten Eindruck von der Golfanlage direkt unter http://www.sennegolfclub.de Es winken attraktive Sachpreise als Belohnung (Notebooks, Digitalkameras, Flatscreens, Handys und vieles mehr). Bei einem „Hole Wir freuen uns auf Sie! in One“ an der Gänse 13 gewinnen Sie sogar ein Top Multimedia Die Redaktion Notebook. 22 3. ORDIX Fachtreff: Diesmal in Zusammenarbeit mit unserem Kooperationspartner Oracle Aktuell Mit f r e u n Unte rstüt dlicher zung von Oracle 10g Sie planen den Einsatz von Oracle 10g und wollen sich vorab einen guten Überblick über das Potenzial und die Leistungsmöglichkeiten von Oracle 10g verschaffen? Sie suchen nach guten Alternativen zu ihren bisherigen Lösungen im DB-Bereich? Dann laden wir Sie herzlich zu unseren Fachtreffs ein. Highlights, Erfahrungen aus der Praxis, Migration und Einstiegspaket Beginn: jeweils 15:00 Uhr Dauer: ca. 3 Stunden 1. Termin: Dienstag, 14.09.2004 Ort: ORDIX AG Kreuzberger Ring 13 D-65205 Wiesbaden 2. Termin: Dienstag, 21.09.2004 Ort: Oracle Deutschland GmbH Hamborner Straße 51 D-40472 Düsseldorf Der erste Vortrag eröffnet Ihnen, wie Sie durch den Einsatz von Oracle 10g die gesamte ITInfrastruktur vom Storage bis hin zur Anwendung vereinfachen und konsolidieren können, um somit Kosten bei Anschaffung und Betrieb zu sparen. Der zweite Vortrag ist ein Projekt-Bericht und behandelt erste Erfahrungen und Highlights, die mit 10g in der Praxis gemacht wurden. Detailliert gehen wir auf die Migration ein. Außerdem beleuchten wir intensiv einige Features, die sich als besonders effizient erwiesen haben. „Oracle – Infrastrukturbasis für Klein- und Mittelständische Unternehmen“ Referent: Matthias Weiss, Senior Principal Sales Consultant, Oracle Deutschland GmbH, München „Migration, Highlights und erste Erfahrungen mit Oracle 10g aus der Praxis“ Referent: Klaus Reimers, Bereichsleiter Beratung und Entwicklung, ORDIX AG, Köln Vorstellung und Einsatzmöglichkeiten des ORDIX Einstiegspakets in 10g: „Oracle 10g ready-to-run for Linux“ Fragen und Diskussionsrunde einfachen und preislich sehr attraktiven Weg, wie sie mit Oracle 10g ohne Risiken erste Erfahrungen sammeln können. Die Vorträge richten sich an alle, die in naher oder auch weiterer Zukunft Oracle 10g einsetzen oder darauf migrieren wollen. Lassen Sie sich diese Vorträge inklusive Sonder-Einstiegspaket nicht entgehen. Wir freuen uns auf Ihren Besuch und einen sicherlich interessanten Nachmittag. Für das leibliche Wohl ist gesorgt. Ihr ORDIX Team Daran anschließend stellen wir Ihnen unser Einstiegspaket „Oracle 10g ready-to-run for Linux“ vor – eine Sonderaktion exklusiv für die Teilnehmer dieser Veranstaltung. Damit zeigen wir interessierten Teilnehmern einen Ihre Anmeldung Die Teilnahme ist kostenlos. Bitte haben Sie Verständnis, dass wir nur eine begrenzte Anzahl von Anmeldungen entgegennehmen können. Versäumen Sie deshalb nicht, sich rechtzeitig anzumelden. Anmeldeschluss: 30. August 2004. Karl-Heinz Künneke Michael Fey Anmeldungen an: • E-Mail: [email protected] • Post: ORDIX AG, Westernmauer 12-16, 33098 Paderborn • zentrales Fax: 0 180 / 1 ORDIX 0 oder: 0 180 / 1 67349 0 mit dem Betreff „Oracle 10g“ • online: http://www.ordix.de/oracle10g/ Die aktuelle Agenda finden Sie unter www.ordix.de/oracle10g. Programmänderungen behalten wir uns vor. Der Rechtsweg ist ausgeschlossen. 23 Datenbanken Oracle SQL Oracle SQL für Experten Oracle Datenbankprogrammierung mit PL/SQL Oracle Datenbankadministration Grundlagen Oracle Datenbankadministration Aufbau Oracle Administration für Informix Umsteiger Oracle Backup und Recovery Oracle Tuning und Monitoring Oracle Troubleshooting Oracle Real Applikation Cluster (RAC) Oracle 9i Neuheiten Oracle 10g Neuheiten Oracle Net Informix SQL Informix Dynamic Server Administration Informix Tuning und Monitoring Informix Backup und Recovery mit ON-Bar Informix Dynamic Server 9.4 Neuheiten 1.790,00 1.190,00 1.790,00 1.890,00 1.890,00 1.890,00 1.890,00 1.890,00 1.890,00 1.190,00 1.890,00 1.890,00 790,00 1.790,00 1.790,00 1.090,00 1.090,00 790,00 IBM DB2 UDB für Unix/Windows SQL Grundlagen 1.790,00 IBM DB2 UDB für Unix/Windows Administration Grundlagen 1.890,00 Microsoft SQL Server 2000 Administration Objektorientierung J2EE für Entscheider Einführung in die objektorientierte Programmierung Entwurfsmuster Programmierung Java Programmierung Grundlagen Java GUI Entwicklung mit Swing Java Programmierung Aufbau JSP und Servlet Programmierung Webprogrammierung mit J2EE und WebSphere Einführung in die EJB-Entwicklung mit WebSphere Softwareentwicklung mit Java und Eclipse C# Programmierung Perl Programmierung Grundlagen Perl Programmierung Aufbau Einführung in XML XML Programmierung unter Java mit DOM und SAX 1.790,00 Praktischer Einsatz von XSL-Techniken Oracle und XML Einführung in Oracle Forms Developer Einführung in Oracle Reports Developer Shell, Awk und Sed Internet und Intranet Web-Design mit HTML 1.190,00 790,00 1.790,00 1.790,00 1.590,00 Web-Design mit JavaScript Web-Design mit PHP Apache Web-Server Installation und Administration Webservices und SOAP Tomcat Konfiguration und Administration WebSphere Application Server Installation und Administration System Management 1.290,00 1.490,00 1.090,00 1.090,00 1.090,00 1.290,00 PATROL Basics PATROL Customizing and Development PATROL Advanced PATROL for Oracle PATROL Central Big Sister Monitoring - Administration und Konfiguration Betriebssysteme 1.890,00 1.490,00 1.890,00 790,00 1.190,00 790,00 Unix/Linux Grundlagen für Einsteiger Linux Systemadministration 1.590,00 1.590,00 HP-UX-, Solaris-, Linux-, AIX-Systemadministration Linux Hochverfügbarkeits-Cluster 1.890,00 1.390,00 Solaris Systemadministration Grundlagen Solaris Systemadministration Aufbau Solaris für Unix Umsteiger Samba Administration und Konfiguration Netzwerke Linux Netzwerkadministration Security Unix/Linux Security im Internet Microsoft 1.890,00 1.890,00 1.890,00 1.090,00 Windows 2000/XP Grundlagen für Einsteiger 1.790,00 Windows 2000 Active Directory Grundlagen 1.790,00 Windows 2000 Active Directory Aufbau 1.790,00 Windows Enterprise Server 2003 1.090,00 Microsoft Exchange 2000 Administration Grundlagen Projektmanagement 1.790,00 IT-Projektmanagement 1.890,00 Grundlagen des IT-Controlling 1.190,00 Seminarorte: Wiesbaden Nürnberg Saarbrücken Lippstadt KW 40 KW 39 KW 38 KW 37 KW 36 September KW 35 KW 34 KW 33 KW 32 KW 31 August KW 30 Juli KW 29 Preis in Euro*)**) - herausnehmbare Übersicht KW 28 Seminartermine Aus- & Weiterbildung 450,00 1.090,00 1.190,00 1.590,00 1.590,00 1.590,00 1.090,00 1.090,00 1.090,00 1.090,00 1.590,00 1.590,00 1.590,00 1.090,00 790,00 1.490,00 1.590,00 1.590,00 *) Preise pro Seminar pro Teilnehmer in Euro. **) Inhousepreise auf Anfrage. Alle Preise gelten zzgl. ges. MwSt. Für weitere Informationen stehen wir jederzeit gerne zur Verfügung und senden Ihnen auf Wunsch unser komplettes Seminarprogramm zu. 24 Alle Seminarinhalte und aktuellen Termine finden Sie jederzeit im Internet unter http://training.ordix.de KW 53 KW 52 KW 51 KW 50 KW 49 Dezember KW 48 KW 47 KW 46 KW 45 November KW 44 KW 43 KW 42 KW 41 Oktober Aus-- & Weiterbildung Juli Dezember 2004 Preis in Euro*)**) 1.790,00 1.190,00 1.790,00 1.890,00 1.890,00 1.890,00 1.890,00 1.890,00 1.890,00 1.190,00 1.890,00 1.890,00 790,00 1.790,00 1.790,00 1.090,00 1.090,00 790,00 Datenbanken Oracle SQL Oracle SQL für Experten Oracle Datenbankprogrammierung mit PL/SQL Oracle Datenbankadministration Grundlagen Oracle Datenbankadministration Aufbau Oracle Administration für Informix Umsteiger Oracle Backup und Recovery Oracle Tuning und Monitoring Oracle Troubleshooting Oracle Real Applikation Cluster (RAC) Oracle 9i Neuheiten Oracle 10g Neuheiten Oracle Net Informix SQL Informix Dynamic Server Administration Informix Tuning und Monitoring Informix Backup und Recovery mit ON-Bar Informix Dynamic Server 9.4 Neuheiten 1.790,00 IBM DB2 UDB für Unix/Windows SQL Grundlagen 1.890,00 IBM DB2 UDB für Unix/Windows Administration Grundlagen 1.790,00 Microsoft SQL Server 2000 Administration Objektorientierung J2EE für Entscheider Einführung in die objektorientierte Programmierung Entwurfsmuster Programmierung Java Programmierung Grundlagen Java GUI Entwicklung mit Swing Java Programmierung Aufbau JSP und Servlet Programmierung Webprogrammierung mit J2EE und WebSphere Einführung in die EJB-Entwicklung mit WebSphere Softwareentwicklung mit Java und Eclipse C# Programmierung Perl Programmierung Grundlagen Perl Programmierung Aufbau Einführung in XML XML Programmierung unter Java mit DOM und SAX 450,00 1.090,00 1.190,00 1.590,00 1.590,00 1.590,00 1.090,00 1.090,00 1.090,00 1.090,00 1.590,00 1.590,00 1.590,00 1.090,00 790,00 1.190,00 790,00 1.790,00 1.790,00 1.590,00 1.490,00 1.290,00 1.490,00 1.090,00 1.090,00 1.090,00 1.290,00 Web-Design mit JavaScript Web-Design mit PHP Apache Web-Server Installation und Administration Webservices und SOAP Tomcat Konfiguration und Administration WebSphere Application Server Installation und Administration System Management 1.890,00 1.490,00 1.890,00 790,00 1.190,00 790,00 PATROL Basics PATROL Customizing and Development PATROL Advanced PATROL for Oracle PATROL Central Big Sister Monitoring - Administration und Konfiguration Betriebssysteme 1.590,00 1.590,00 Unix/Linux Grundlagen für Einsteiger Linux Systemadministration 1.890,00 1.390,00 HP-UX-, Solaris-, Linux-, AIX-Systemadministration Linux Hochverfügbarkeits-Cluster 1.890,00 1.890,00 1.890,00 1.090,00 Solaris Systemadministration Grundlagen Solaris Systemadministration Aufbau Solaris für Unix Umsteiger Samba Administration und Konfiguration Netzwerke Linux Netzwerkadministration Security Unix/Linux Security im Internet Microsoft 1.590,00 1.590,00 Anmeldungen an: ORDIX AG Westernmauer 12-16 Kreuzberger Ring 13 D-33098 Paderborn D-65205 Wiesbaden Tel.: +49 (0) 52 51 / 10 63 - 0 Tel.: +49 (0) 6 11 / 7 78 40 - 00 zentrales Fax: +49 (0) 180 / 1 ORDIX 0 oder: +49 (0) 180 / 1 67349 0 Praktischer Einsatz von XSL-Techniken Oracle und XML Einführung in Oracle Forms Developer Einführung in Oracle Reports Developer Shell, Awk und Sed Internet und Intranet Web-Design mit HTML 1.790,00 Windows 2000/XP Grundlagen für Einsteiger 1.790,00 Windows 2000 Active Directory Grundlagen 1.790,00 Windows 2000 Active Directory Aufbau 1.090,00 Windows Enterprise Server 2003 1.790,00 Microsoft Exchange 2000 Administration Grundlagen Projektmanagement 1.890,00 IT-Projektmanagement 1.190,00 Grundlagen des IT-Controlling Informationen und Online-Anmeldung unter http://training.ordix.de. E-Mail: [email protected] Einige der hier aufgeführten Bezeichnungen sind eingetragene Warenzeichen ihrer jeweiligen Inhaber. Irrtümer vorbehalten. 25 Aktuell Boot-Spiegel mit DiskSuite Larry Ratlos: Hochverfügbarkeit mit Solaris? Larry hat viel Geld gespart Für die neuen Datenbankserver kam er ganz ohne weitere Softwarelizenzen aus. Die Lizenzen für das DBMS konnte er vom Altsystem übernehmen. Den Abteilungsleiter überzeugte er davon, dass die Einrichtung eines Clusters nicht erforderlich ist. Und die Hochverfügbarkeit der Festplatten realisierte er mit der in Solaris enthaltenen Software „DiskSuite“. Innerhalb weniger Tage war die Einrichtung ausgeführt - Dank docs.sun.com und mit Hilfe von dict.leo.org (für die Übersetzung): Die Datenplatten sind nun gestriped und gespiegelt, die Systemplatten sind durch einen Spiegel ausfallsicher. Und das war gut so. Nach wenigen Wochen zeigte sich, dass die erste RootPlatte tatsächlich ausgefallen war. Der Betrieb konnte aber trotzdem störungsfrei fortgesetzt werden :-)). Nun ist es Freitag, 22:00 Uhr. Bis Montag um 6:00 Uhr hat Larry Zeit, die defekte Platte auszutauschen. Frohen Mutes hat er das Betriebssystem heruntergefahren, die defekte Platte ausgetauscht. Doch dann ... Der Boot-Prozess wird abgebrochen – so ein Mist! Dabei ist das System doch die ganze Zeit mit dem zweiten Teilspiegel gelaufen! Sollte die Platte nun auch defekt sein? Larry überprüft mit Hilfe der Installations-CD die zweite Root-Platte. Sie ist in Ordnung. Nun ist Larry ratlos. Wie bringt er das System dazu, von dieser Platte zu booten? Was hatte er nur beim Root-Spiegel falsch gemacht? Helfen Sie Larry! Senden Sie Ihren Lösungsvorschlag bis zum 20.07.2004 an [email protected]. Larry wird sich wie immer mit einer kleinen Aufmerksamkeit bei seinen Helfern bedanken und einige der eingesendeten Lösungen veröffentlichen. Lösung des Problems der „GROSS- und kleinschreibung“ aus der ORDIX News 1/2004 Folgendes Kommando hätte Larry die Blamage vor seinem Chef in letzter Sekunde erspart: perl -00pi -e ‘s!(<a\s*href=[^>]*>)!lc($1)!gsie;rename $ARGV,lc($ARGV)’* Was passiert hier? Der Stern (*) am Ende des Kommandos sorgt dafür, dass unser Programm eine Liste der Dateien im aktuellen Verzeichnis als Parameter übergeben bekommt. Die Option „-p“ wiederum besagt, dass jeder dieser Parameter eine Datei darstellt und erzeugt implizit eine Schleife der folgenden Art um das komplette Programm: foreach $ARGV (@ARGV) { open(FILEHANDLE,$ARGV); while(<FILEHANDLE>) { # Programmcode print; } close(FILEHANDLE); } 1. Alle HTML-Links werden mit dem Substitute-Kommando in Kleinschreibung umgewandelt: s!(<a\s*href=[^>]*>)!lc($1)!gsie; Die vier Schalter (gsie) bewirken folgendes: g: *Alle* Vorkommnisse des Suchmusters werden ersetzt s: Zeilenumbrüche im zu durchsuchenden String werden ignoriert i: Groß-/Kleinschreibung wird ignoriert e: Die Ersetzung ist keine Zeichenkette, sondern die Ausgabe eines Kommandos 2. Der Dateiname wird ebenfalls in Kleinschreibung gesetzt: rename $ARGV, lc($ARGV); Die Option „-i“ sorgt nun dafür, dass der Inhalt der Dateien nicht an die Standardausgabe übergeben wird, sondern die gerade bearbeitete Datei „on-the-fly“ editiert wird. Der eigentliche Programmcode folgt nach dem Schalter „-e“ und besteht aus zwei Anweisungen: 26 Zu guter Letzt bewirkt der Schalter „-00“, dass Dateien nicht zeilenweise eingelesen werden, sondern „in einem Rutsch“. Das ist notwendig, falls sich die Links über mehrere Zeilen erstrecken. Aktuell Lösungen der Leser: 1. Albrecht Bischoff: Die Lösung von Herrn Bischoff geht in die gleiche Richtung. Diese Variante funktioniert sogar auch dann noch, falls sich im fraglichen Verzeichnis neben den HTML-Seiten noch weitere Dateien befinden (Bilder, etc.). Zu beachten ist lediglich, dass mit dem regulären Ausdruck „\w+.html?“ auch Textstellen geändert werden, bei denen es sich nicht notwendigerweise um Links handeln muss. perl -pi -e ‘s!\w+.html?!lc($&)!gie;rename $ARGV, lc($ARGV)’ *.[Hh][Tt][Mm][Ll] *.[Hh][Tt][Mm] 2. Andreas Mayer: Einen komplett anderen Ansatz verfolgt Herr Mayer mit seiner Lösung. Hier werden nicht einfach alle Links und Dateinamen klein- oder großgeschrieben sondern die Links an die existierenden Dateinamen angepasst: a=‘ls|egrep -i “*.html“‘;for i in $a;do perl -pi -e ‘s/’$i’/’$i’/gi’ $a; done Lediglich der reguläre Ausdruck ist nicht ganz korrekt, sondern sollte lauten: „\.html?$“. Andernfalls würden auch Dateien wie „meinhtmlbild.jpg“ bearbeitet. Unter der Voraussetzung, dass sich in dem Verzeichnis ausschließlich HTML Seiten befinden, lässt sich diese Lösung sogar auf 50 Zeichen reduzieren: for i in ‘ls‘; do perl -pi -e s/$i/$i/i ‘ls‘; done Allerdings ist zu beachten, dass bei dieser Variante sehr häufig Dateien geöffnet und geschlossen werden (n2 Zugriffe) und auch der Perl-Interpreter bei jedem Schleifendurchlauf neu gestartet werden muss. Bei 100 zu bearbeitenden HTML Seiten ist die zuerst genannte Lösung bereits mehr als 100 mal so schnell ... und die Geschwindigkeit war es ja, die zählt! ;-) Sponsoring Behindertensportreiten !"#$%&'()*+, Weitere Unterstützung für Frau Brenner Seit 4 Jahren unterstützt ORDIX inzwischen die erfolgreiche Behindertenreiterin Hannelore Brenner. In vielen Berichten der ORDIX News konnten wir über die zahlreichen Erfolge der engagierten Sportlerin berichten. Deutsche Meisterin, Europameisterin, Platzierungen bei der Weltmeisterschaft. Sie hat nicht nur vor vielen Richtern und Juries ihr Können bewiesen, sondern auch ORDIX auf ganzer Linie überzeugt. Deshalb hat ORDIX den auslaufenden Sponsoringvertrag jetzt um drei weitere Jahre verlängert. Mit dieser Unterstützung möchte ORDIX der Erfolgsreiterin auch für die Zukunft den Weg ebnen. Ihr aktuelles Ziel sind die Paralympics – die Olympischen Spiele für Behinderte – die vom 17. - 28. September in Athen stattfinden. Zur Vorbereitung auf Athen startete Frau Brenner im Mai bereits auf dem ersten internationalen Reitturnier für körperbehinderte Reiter in Deutschland, dem „Maimarktturnier“ in Mannheim. Dort erkämpften sie und acht weitere Behindertensportreiter die Qualifikation für die Paralympics. Darüber hinaus wird sie vom 5. 8. August auf dem internationalen Dressurfestival in Lingen ihren Titel als Deutsche Meisterin verteidigen. ORDIX wünscht Frau Brenner viel Glück und Erfolg für die anstehenden Herausforderungen! 27 Java/XML Kurz betrachtet: IBM Websphere Application Server Wer einen Application Server sucht, kann mittlerweile aus vielen Möglichkeiten wählen. Eine kurze Betrachtung von IBM Websphere Application Server (WSAS) soll einige hervorstechende Merkmale aufzeigen und als Entscheidungshilfe dienen. In diesem Artikel sprechen wir über die Network Deployment Version des WSAS. Die Adminstrationsoberfläche Der WSAS bringt eine browsergestützte Oberfläche mit. Diese bietet Zugriff auf alle Komponenten und deren Einstellung. Der Administrator einer Webspherefarm hat somit einen zentralen Anlaufpunkt und findet alles unter einem Dach wieder (siehe Abbildung 1). Abb. 1: Die Administrationsoberfläche bietet Zugriff auf ganze Serverfarmen. oder tägliche Aufgaben effizient und ohne ständigen Zugriff auf ein GUI zu erledigen. Der Ressourcenhunger Unter [1] findet man die Hardwareanforderungen des WSAS. Diese sollte man, besonders was den Hauptspeicher angeht (256 MB empfohlen), respektieren bzw. an dieser Stelle besser sogar mehr Speicher als gewünscht „spendieren“. Kleines Beispiel: Der Hauptspeicherbedarf belief sich auf einem Win2K Testsystem mit der Network Deployment Version, einem Application Server und lediglich einer Test-JSP bereits auf ca. 400 MB. Das gleiche Setup, jedoch als Cluster mit zwei Application Servern sorgte dann für einen Bedarf von ca. 750 - 800 MB. Hintergrund dieses Ressourcenhungers ist die Architektur des WSAS, die wir uns im nächsten Abschnitt ansehen. Die Architektur Von der Definition von Datasources bis zum Deployment von Enterprise Applications ist alles innerhalb der Oberfläche möglich. Auch wenn die Oberfläche durch die vielen Möglichkeiten zunächst etwas unübersichtlich erscheint, ist sie nach einer kurzen Eingewöhnungsphase sehr gut zu bedienen. Aus Sicht des WSAS entspricht eine Hardwareplattform jeweils einer Node. Nodes können mehrere Application Server enthalten (siehe Beispiel in Abbildung 2). Neben dieser Oberfläche bietet das Kommandozeilenprogramm wsadmin die Möglichkeit, auch Skripte zu erstellen, um Monitoring Auf einer Maschine läuft zusätzlich noch der Deployment Manager, der die Verwaltung der Nodes übernimmt. Für die Kommunikation läuft auf jeder Node ein Node Agent. Dessen Aufgabe ist es, die vom Deployment Manager kommunizierten Einstellungen auf den Nodes umzusetzen. Der oben erwähnte Ressourcenhunger ergibt sich nun aus der Tatsache, dass alle Komponenten jeweils in einer eigenen JVM laufen. Eine Node mit zwei Application Servern und einem Nodeagent benötigt also bereits drei JVMs. Die Sessions Abb. 2: Aufbau eines WSAS Clusters mit zwei Nodes. 28 Oftmals bereiten Sessioninformationen in geclusterten Webanwendungen Probleme. Die Java/XML Sessions werden in einer bestimmten JVM erzeugt, und stehen nur dort zur Verfügung. Mit Hilfe von Cookies oder SSL-Session-Tracking wird dann sichergestellt, dass die eingehenden Anfragen immer zur passenden JVM gelangen. Problematisch wird es aber, wenn nun eine Maschine ausfällt. Da die zugeordneten Sessions nur auf diesem Knoten vorlagen, sind diese unwiederbringlich verloren. WSAS bietet für dieses Problem das Konzept der Sessionreplikation. Hierbei werden die Sessioninformationen in eine Datenbank geschrieben und sind somit unabhängig von der jeweiligen JVM. Es können also alle Instanzen alle Clients wahlfrei bedienen und ein Ausfall einer Maschine bleibt für den User transparent. Link [1] http://www-306.ibm.com/software/webservers/ appserv/doc/v50/prereqs/hardware51.htm#ndm Resümee Websphere bietet für den Administrator einer großen Umgebung viele Vereinfachungen, allem voran die Administrationsoberfläche sowie die Möglichkeit zur zentralen Steuerung einer ganzen Farm von Maschinen. Falls nötig vereinfacht die Sessionreplikation den Aufbau der Infrastruktur sowie die Konfiguration vorgeschalteter Loadbalancer. Wer für diese Features Verwendung (und die nötige Hardware zur Verfügung) hat, sollte Websphere durchaus in die engere Wahl ziehen. Michael Heß ([email protected]). Seminarvorstellung: J2EE für Entscheider Der Kurs gibt einen guten Überblick über die Java Enterprise Basiskonzepte. Er erläutert die Technologien und Architekturen der Java 2 Enterprise Edition (J2EE). Weiterhin werden Vor- und Nachteile sowie die Bedeutung und Gründe für den Einsatz der Technologien im Unternehmen behandelt. Seminarinhalte • Überblick: J2EE Einführung und Zielsetzung, J2EE Architektur, Architektur für Web-Anwendungen, J2EE-Übersicht, J2EEDienste, Entwicklungsmethodiken unter J2EE • Das EJB/J2EE Komponentenmodell: Session und Entity Beans, Stateless und Statefull Session Beans, Container Managed Persistence (CMP), Bean Managed Persistence (BMP), Messaging Services (JMS) • J2EE/EJB Transaktionsmanagement: Hintergrund. Warum und wie verwendet man Transaktionen? • JSP/Servlets und EJB: EJB/J2EE-Interaktion mit Servlets, EJB/J2EE-Interaktion mit JSP, Web-Interfaces mit JSP erstellen • J2EE/ELB Sicherheitskonzepte: Einführung, Konfiguration Führungskräfte, Projektleiter, IT-Manager, RZLeiter, Verantwortliche für die strategische Planung. • WebServices: Grundlagen, WDSL (WebService Definition Language), UDDI (Universal Description, Discovery and Integration) Voraussetzungen: Keine. • Weitere Themen: Grundlagen J2EE Design Pattern, XML-Integration, J2EE-Mythen, Austauschbarkeit des Application Servers, Interoperabilität, Skalierbarkeit • Wahl eines J2EE-Servers: Marktübersicht, technische und geschäftliche Kriterien, Open Source Software Neben der technologischen Sicht lernen Sie J2EE aber auch aus geschäftlicher Sicht kennen. Sie profitieren dabei von unserer technologischen Kompetenz und Unabhängigkeit, indem wir alle Technologien und Produkte kritisch betrachten. Das Seminar wird durch Berichte über Praxiserfahrungen abgerundet. Zielgruppe Termine 27.09.2004 in Wiesbaden 29.11.2004 in Wiesbaden Dauer: 1 Tag Kursgebühr/Teilnehmer: 450 € zzgl. MwSt. 29 Unix/Linux/Open Source IBM Tivoli Storage Manager (Teil II): Im Fokus: Interne Datenbank und Recovery Log Im ersten Teil dieser Reihe widmeten wir uns dem Tivoli Storage Manager (TSM) konzeptionell. Diesmal nehmen wir einige zentrale Bestandteile genauer unter die Lupe: die interne Datenbank und das Recovery Log. Im Fokus stehen dabei die Dimensionierung, die Pflege und die Sicherung dieser Elemente. Aufgrund der zentralen Bedeutung dieser TSMElemente sind weitere Maßnahmen ratsam. Sicherheitsvorkehrungen 1. Redundante Datenhaltung (Spiegel) Falls nicht schon mit Hardware- oder Betriebssystem-Mitteln geschehen, kann man alternativ auch mit TSM-Mitteln spiegeln (bis zu 3 Wege-Spiegel; siehe Abbildung 2). Abb. 1: Interne Datenbank und Logfile sind die zentralen Elemente des TSM-Servers. TSM Database - das Herzstück des Storage Managers Die gesamten Informationen, die die Sicherungslandschaft betreffen, sind in der TSM Datenbank gespeichert. Dazu gehören u. a.: • • • • Client Systeme und Administratoren, Policies und Schedules, Servereinstellungen und Activitylogs, Verwaltung der Client-Dateien. Der Verlust der Datenbank würde nicht nur zum Verlust dieser Informationen, sondern auch zum Verlust der dahinterliegenden Sicherungen führen. Dieses Element von TSM sollte also besonders geschützt und natürlich gesichert ;-) werden. 2. Regelmäßige Sicherung der Datenbank TSM kennt 3 Sicherungsarten: • Full Backup • Inkrementelles Backup • Snapshot Die erste Datenbank-Sicherung muss vom Typ Full Backup sein (siehe Abbildung 3). Darauf kann dann im Fehlerfall wieder aufgesetzt werden. Änderungen, die zwischenzeitlich an der Datenbank vorgenommen wurden, gehen dabei aber verloren. Um solche Verluste zu minimieren, sollte man möglichst häufig ein Backup der Datenbank durchführen. Eine andere Möglichkeit ist, den Server im roll-forward Modus zu betreiben. Dabei werden Modifikationen an der Datenbank im Recovery Log mitprotokolliert. Dadurch kann man bis zum Zeitpunkt des Verlustes recovern – vorausgesetzt natürlich, die Recovery Logs sind intakt. Mechanismen gegen Systemabstürze Möglichen Systemabstürzen wird mit internen Mechanismen begegnet: Änderungen in der Datenbank werden zunächst im Datenbankpuffer durchgeführt und regelmäßig auf Platte zurückgeschrieben. Zusätzlich werden die Transaktionen (vor dem Zurückschreiben der Datenbankblöcke auf Platte) in einem Recovery Log (LOG) protokolliert. Nach einer abnormalen Beendigung des Servers kann damit ein konsistenter Zustand wieder hergestellt werden. Das Recovery Log wird daher bei jedem Serverstart in einem dreistufigen Prozess gelesen: • • • 30 nicht beendete Transaktionen erkannt („analysis“) fehlende Transaktionen nachgefahren („redo“) nicht beendete Transaktionen zurückgefahren („undo“). Die nächsten Backups können inkrementell sein, wobei der Vorgang des Backups schneller geht, der des Recoverns langsamer. Die einzige Einschränkung seitens TSM ist, dass maximal 32 inkrementelle Backups aufeinander folgen dürfen. Benötigt man ein Datenbank Backup außer der Reihe, verwendet man den Typ Snapshot. Dies entspricht dem Full Backup, setzt aber im roll-forward Fall keine Loginformationen frei. Insbesondere im roll-forward Modus ist es sinnvoll, das Backup per Trigger anzustoßen Unix/Linux/Open Source („define dbbackuptrigger“). Das schnelle Wachstum der Logs kann hierbei als Auslöser benutzt werden. Doch was ist, wenn der Server „abbrennt“? Woher bekomme ich dann die Informationen, wo das Backup der Datenbank liegt? Über den Parameter VOLUMEHISTORY in der Datei dsmserv.opt kann festgelegt werden, wohin diese (und andere) Informationen herausgeschrieben werden. Die Ausgabe kann durch „backup volhist“ forciert werden. Analog dazu wird der Parameter DEVCONFIG („backup devconfig“) verwendet, über den die Informationen über die Gerätekonfiguration kanalisiert werden. Konsequenterweise sollte man dann noch dafür sorgen, dass die obigen Ausgabedateien vom Server „weg“ kommen, also z. B. auf ein NFS-Dateisystem geschrieben werden. 3. Beobachtung der Auslastung In der „QUERY LOG“ bzw. „QUERY DB“ wird als letzte Spalte eine „Hochwassermarke“ ausgegeben, die die Maximalauslastung seit dem letzten Reset enthält (siehe Abbildung 6). In der ausführlichen Ausgabe der Queries (Option „format=detailed“) ist auch der Zeitstempel des letzten Resets enthalten. Zurücksetzen kann man diese Zähler einfach mit „reset LOGMAXUTILIZATION“ bzw. „reset DBMAXUTILIZATION“. 4. Automatische Erweiterung (Trigger-gesteuert) Mit der Definition eines Space Triggers kann bei der Unterschreitung des verbleibenden Platzes des Recovery-Logs bzw. der Datenbank dieser automatisch vergrößert werden. Beispiel: Das aktuelle Log hat eine Größe von 44 MB. Wenn es zu 75 % voll ist, soll es automatisch um 30 % erweitert werden. Es soll aber auf maximal 100 MB beschränkt bleiben (siehe Abbildung 4). Die richtige Datenbankgröße Zunächst ein Wort zur Arbeitsweise: Die Speicherbereiche, die den Plattenplatz für Datenbank und LOG bereit stellen, können aus einzelnen Dateien zusammengebaut werden. TSM verwaltet diese Dateien als „Volumes“ über einen internen Logical Volume Manager (LVM). (1) Bereitstellen einer Datei der Größe 101 MB. # dsmfmt -db /tsm/tsm2/db0022 101 (2) Diese Datei als Mirror definieren. tsm: HALIX>def dbcopy /tsm/tsm1/db002 /tsm/tsm2/db0022 [AANR2242I Database volume copy /tsm/tsm2/db0022 defined; synchronization process started (process ID 29). ANS8003I Process number 29 started. (3) Während der Synchronisationsphase ist der Status „Stale“. tsm: HALIX>select * from dbvolumes where copy2_name <> ‘’ COPY1_NAME: COPY1_STATUS: COPY2_NAME: COPY2_STATUS: COPY3_NAME: COPY3_STATUS: AVAIL_SPACE_MB: ALLOC_SPACE_MB: FREE_SPACE_MB: /tsm/tsm1/db002 Synchronized /tsm/tsm2/db0012 Synchronized /tsm/tsm2/db0022 Stale 100 100 0 Abb. 2: Spiegeln von Datenbank-Volumes mit TSM-Mitteln. (1) Full Backup der Datenbank auf Band. tsm: HALIX>backup db devclass=dlt7000 type=full ANR2280I Full database backup started as process 31. ANS8003I Process number 31 started. (2) Standardmäßig wird ein Scratch-Band verwendet. tsm: HALIX>q proc Process Number ------31 Process Status Description --------------- -----------------------------------Database Backup Full backup: 0 pages of 66608 backed up. Waiting for mount of scratch volume (6 seconds).\ (3) In der Volume History findet man das verwendete Volume. tsm: HALIX>select * from volhistory where type = ‘BACKUPFULL’ DATE_TIME: UNIQUE: TYPE: BACKUP_SERIES: BACKUP_OPERATION: VOLUME_SEQ: DEVCLASS: VOLUME_NAME: LOCATION: COMMAND: 2004-03-25 17:52:07.000000 0 BACKUPFULL 1 0 1 DLT7000 B0005 Abb. 3: Starten des Full Backups, Abfrage des Prozesses und Volume Auskunft. tsm: HALIX>define spacetrigger log fullpct=75 spaceexpansion=30 expansionprefix=/tsm/tsm1/ maximumsize=100 ANR2279I Recovery Log Space trigger defined and enabled. tsm: HALIX>q spacetr log LOG Full Percentage ---------75 LOG Space Expansion Percentage ---------------30 LOG Expansion prefix ----------/tsm/tsm1/ LOG Maximum Size (Megabytes) ---------------100 Abb. 4: Definition eines Space-Triggers mit anschließender Abfrage. Die kleinste Einheit, mit der der LVM arbeitet, ist 4 MB groß. Zusätzlich wird pro Volume ein 1 MB großer Header für interne Zwecke („Restart Recovery Area“) benötigt. Das heißt, wenn man ein neues Volume der Größe 10 MB anfordert, wird sie von TSM automatisch 31 Unix/Linux/Open Source auf ein Vielfaches von 4 MB erhöht. Anschließend wird der Platz auf Betriebssystemebene allokiert, plus 1 MB für den Header, also in diesem Fall 13 MB. Löschen eines Volumes Achtung: Durch das Löschen eines Volumes („delete dbvolume ...“) bleibt die Datei auf Betriebssystemebene bestehen. Dies ist zunächst nicht weiter schlimm, führt aber zu einem Fehler, wenn man ein zuvor gelöschtes Volume erneut verwenden möchte – selbst bei gleicher Volumegröße! Unglücklicherweise bekommt man davon auf der Kommandozeile nichts mit, wenn man den Job im Hintergrund laufen lässt (standard). Der tatsächliche Speicherbedarf lässt sich abschätzen, wenn man die Anzahl der Dateien kennt, die TSM verwalten soll. Dies ist aber meistens nicht präzise vorher zu sagen bzw. wird sich erst im Laufe der Zeit genauer heraus kristallisieren. Für jede verwaltete Datei werden aber ca. 600 Byte benötigt. Beispielrechnung Backup-Speicherbedarf Für eine Backup-Umgebung, in der 500.000 Client-Dateien mit je drei Versionen gesichert werden sollen, benötigt man damit 500.000 x 3 x 600 Byte = 900.000.000 Byte, also etwa 860 MB. Hinzu kommen bis zu 25 % Overhead, so dass man für diese Datenbank etwa 1,1 GB kalkulieren sollte. Zusätzlich wird die Sicherungsumgebung tendenziell eher wachsen, so dass mit weiterem Platzbedarf zu rechnen ist. Mit 1,5 GB wäre man bei diesem Beispiel also erst einmal gut gerüstet. Zu beachten ist, dass dieses Beispiel rein für Backup-Funktionalität durchgeführt wurde. Für Archivierung und Space Management fällt weiterer Platzbedarf an. TSM> define dbvol /tsm/tsm1/db003 formatsize=100 wait=yes ... TSM> extend db 100 Abb. 5: Vergrößern der DB in 2 Schritten: Hinzufügen eines Volumes als Vordergrundprozess. Erweitern der DB um 100 MB. tsm: HALIX>q db Available Assigned Space Capacity (MB) (MB) --------- -------556 500 Maximum Extension (MB) --------56 Maximum Reduction (MB) --------244 Page Size (bytes) ------4.096 Faustregel Ist die Anzahl der Dateien eine schwer zu handhabende Größe, kann man sich auch mit einer Faustregel behelfen. Diese besagt, dass man etwa 1 - 5 % des aufkommenden Datenvolumens als resultierende Datenbankgröße benötigt. Dies ist natürlich nur eine sehr grobe Abschätzungsmethode. Zu beachten ist, dass Zwischenergebnisse von SQL-Abfragen in temporären Tabellen der Datenbank gespeichert werden und damit den Platzbedarf weiter erhöhen. In der Praxis haben Produktivsysteme Datenbank-Files in der Größenordnung von 3 - 15 GB. Sehr große Installationen können auch in Bereiche von 50 - 80 GB kommen. Die Obergrenze liegt bei 5 TB. Bei der Installation von TSM werden die interne Datenbank und das Recovery-Log als Dateien „db.dsm“ und „log.dsm“ mit einer Größe von 17 MB bzw. 9 MB angelegt. Dies genügt, um den TSM-Server zu starten und etwas zu experimentieren. Für Produktivumgebungen sind diese Werte aber viel zu gering und sollten als erstes nach der Installation angepasst werden. Dadurch, dass der Verwaltung der Speichereinheiten ein LVM-Konzept zugrunde liegt, kann man problemlos im laufenden Betrieb Änderungen vornehmen (siehe Abbildungen 5 und 6). Die Größe des Recovery-Logs Die Größe des Logfiles ist ebenfalls ein kritischer Parameter. Ein zu groß gewähltes Logfile ist „nur“ Platzverschwendung, ein zu klein gewähltes kann hingegen den Server zum Ab- Total Usable Pages ------128.000 Used Pages Util ------65.452 Pct Util Max. Pct ---51,1 ---51,1 tsm: HALIX> select copy1_name,avail_space_mb, alloc_space_mb, free_space_mb from dbvolumes COPY1_NAME --------------/tsm/tsm1/db001 /tsm/tsm1/db002 /tsm/tsm1/db003 /tsm/tsm1/db004 /tsm/tsm1/db005 AVAIL_SPACE_MB -------------144 100 100 200 12 ALLOC_SPACE_MB -------------144 100 100 156 0 FREE_SPACE_MB ------------0 0 0 44 12 Abb. 6: Die Auslastung der Datenbank im Gesamtüberblick (oben) und aufgeschlüsselt nach den einzelnen Volumes (unten). 32 Unix/Linux/Open Source sturz bringen. Daher sollten Füllgrad und Zustand des Logfiles regelmäßig beobachtet werden. Diese lassen sich über BUFFERPOOLSIZE bzw. LOGPOOLSIZE einstellen. Die Auslastung der Buffer kann man sich mit „q db f=d“ bzw. „q log f=d“ anschauen. Da das Recovery-Log wie ein Ringspeicher beschrieben wird, muss man wissen, mit welchem Logging-Aufkommen zu Spitzenzeiten zu rechnen ist. Wichtige Parameter, die das Logging-Volumen bestimmen sind • Transaktionsvolumen • Anzahl der Clients • Betriebsmodus (roll-forward oder normal) Sind hier die Werte „Cache Wait Pct.“ bzw. „Log Pool Pct. Wait“ größer Null, kann das ein Hinweis für zu kleine Puffer sein. Das gleiche gilt, wenn „Cache Hit Pct.“ kleiner als 98 % werden, bzw. „Log Pool Pct. Util“ größer 10 %. Des Weiteren kann über die Eingabe einiger Tuningparameter die Größe des RecoveryLogs beeinflusst werden (TNXGROUPMAX, MAXSESSIONS). Von Zeit zu Zeit kann sich eine Reorganisation der Datenbank positiv auf die Performance auswirken. Dies trifft insbesondere bei sehr großen Datenbanken zu. Dazu muss der Server allerdings heruntergefahren werden, damit die Datenbank entladen werden kann. Anschließend müssen die Volumes neu formatiert werden, bevor die Datenbank wieder geladen werden kann. Performance Neben den zugrunde liegenden Dateien ist aus Performance-Sicht auch die Größe der entsprechenden Puffer zu berücksichtigen. Über den Serverparameter SELFTUNEBUFPOOLSIZE kann eine automatische Anpassung der Datenbank-Buffergrößen erreicht werden. In den nächsten Ausgaben folgen weitere Teile dieser Reihe. Roger Niemeyer ([email protected]). Seminarvorstellung: Oracle Troubleshooting Dieser Workshop vermittelt die Analyse typischer praxisnaher Fehlersituationen im Oracle Administrationsumfeld mit integrierter Wiederholung wichtiger theoretischer Grundlagen. Das Seminar ist als Workshop angelegt und sehr übungsorientiert. Vor Seminarbeginn können auch eigene Themenvorschläge angemeldet werden. Seminarinhalte • Architektur: Transaktionskonzept, Data Dictionary, SGA, Init.ora, Dokumentation, Dba_views, v$views, Oracle Prozesse, Log Files • Logische und physische Datenbank: Max Extents Fehler, Next Extent Fehler, Erzeugen eines neuen Tablespaces, Kalkulation von Plattenplatz, Erzeugen eines neuen Datafiles, lokales Extent Management, Verlagern von Tabellen und Indizes, Raw Devices, Anlegen und Verlagern von Rollback Segmenten • Benutzerkonzept: Anlegen von Benutzern, Sperren/Entsperren, Rollenkonzept, Rechtekonzept, Rechte in Prozeduren • Backup und Recovery: Offline/Online Backup, Recovery-Szenarien, Exp/Imp, LogMiner • SQL: Tables, Indizes, create/rebuild/online/parallel, Constraints (primary key/foreign key/on delete cascade), Deadlocks, Sperren, aktuelle SQL's, Top SQL, Explain plan/autotrace/tkprof, Prozesse (intern/extern), Analyzer/Optimizer • SQL*Net: Listener, Tnsnames, Database links, Global Names, Names Server, tnsping • Übungen Zielgruppe Dieses Seminar richtet sich an fortgeschrittene Datenbankadministratoren. Voraussetzungen Die Teilnahme an den Seminaren „Oracle SQL“ und „Oracle Datenbankadministration Grundlagen“ wird zwingend vorausgesetzt. Termine 20.09.2004 - 24.09.2004 in Wiesbaden 29.11.2004 - 03.12.2004 in Wiesbaden Dauer: 5 Tage Kursgebühr/Teilnehmer: 1.890 € zzgl. MwSt. 33 Datenbanken RMAN-Integration in Backup Tools (Teil I): RMAN-Integration in NetWorker und Tivoli Storage Manager Der Oracle Recovery Manager (RMAN) ist seit Oracle 8 das Oracle Standardwerkzeug für Backup und Recovery. Der folgende Artikel soll die Einbindung des RMAN in die Backup Tools Legato NetWorker und Tivoli Storage Manager (TSM) erläutern. Die Sicherung einer Oracle Datenbank mit RMAN und Veritas Netbackup sowie HP DataProtector (früher Omniback) wird in einer der nächsten Ausgaben der ORDIX News behandelt. Mit diesem Artikel wollen wir unsere Erfahrungen aus verschiedenen Backup Projekten vorstellen und zum Schluss die Backup Tools vergleichen. RMAN und NetWorker Das Einbinden einer Oracle Datenbank Sicherung mit dem Recovery Manager in eine NetWorker Umgebung gliedert sich in verschiedene Teilschritte, die im Folgenden beschrieben werden. 1. Installation Der erste Schritt besteht in der Installation der NetWorker Client Software und des NetWorker Moduls für Oracle als user root bzw. Administrator. Dabei wird im Wesentlichen eine Shared Library auf dem Datenbankserver installiert, über die der RMAN mit dem NetWorker Client kommuniziert. Weiterhin wird ein Template eines Shell Skripts installiert, das bei der Konfiguration der Datenbank Sicherung anzupassen ist. 2. Linken Der folgende Schritt, das Linken der installierten Shared Library mit dem Oracle Binary, ist vom user <ORACLE_OWNER> durchzuführen. Dabei sind je nach Plattform bzw. Oracle Release unterschiedliche Schritte durchzuführen. Bei den verschiedenen Oracle 8.x Releases ist libobk.so unter $ORACLE_HOME/lib auf jeden Fall zu löschen bzw. umzubenennen. Danach ist er durch einen Link auf /usr/lib/ libnwora.so zu ersetzen. Der Link bzw. die Datei $ORACLE_HOME/lib/libobk.so zeigen vorher auf eine Dummy API für Band-Sicherungen. Abb. 1: Das Zusammenspiel der einzelnen Komponenten bei RMAN und NetWorker. Bei älteren Oracle Releases muss der DBA auf der einen oder anderen Plattform anschließend noch in das Verzeichnis $ORACLE_HOME/ rdbms/lib wechseln und beispielsweise folgendes Kommando absetzen: make -f ins_rdbms.mk ioracle. connect target <usr>/<pwd>@<target-alias> connect catalog <usr>/<pwd>@<catalog-alias> run { allocate channel t1 type ’SBT_TAPE’; send ’NSR_ENV=(NSR_SERVER=DASI_PB, NSR_DATA_VOLUME_POOL=ORDIX_DB)’; backup full filesperset 6 (database format ‘%d_%u‘); release channel t1; } Listing 1: Beispiel für ein RMAN Skript mit Anbindung an NetWorker. 34 Datenbanken dsmi_orc_config /usr/tivoli/tsm/client/oracle/bin/dsm.opt dsmi_log /usr/tivoli/tsm/client/oracle/bin tdpo_node <Servername des Oracle Servers> Listing 2: Beispiel für eine tdpo.opt Datei. servername tdpo # Der Name, über den der TSM Server identifiziert wird commmethod tcpip tcpserveraddress <IP Adresse des TSM Servers> passwordaccess prompt #Passwort-Generierung per Abfrage Listing 3: Beispiel für die Datei dsm.sys. Nach dem Linken bzw. dem make ist auf jeden Fall ein Neustart der betroffenen Datenbanken erforderlich. die Sicherung ihrer archivierten Log Dateien sollte ein eigenes Backup Command angelegt werden, da sonst alle RMAN Sessions in ein- und dieselbe msglog-Datei schreiben. Bei Oracle 9i gibt es nach der Installation der Oracle Software den Link $ORACLE_HOME/ lib/libobk.so nicht mehr. Deshalb ist bei Oracle 9i nur noch der Link von /usr/lib/ libnwora.so auf $ORACLE_HOME/lib/ libobk.so zu setzen. 4. Client Konfiguration bzw. Saveset Skript Ein Neustart der betroffenen Datenbanken ist bei Oracle 9i nicht mehr erforderlich. Sollte jedoch bei der Installation der Oracle Software der Legato Storage Manager mitinstalliert worden sein, ist das Verfahren das Gleiche wie bei Oracle 8i. Um automatisch allokierte Channels zu überschreiben und damit einen sicheren RZ Betrieb zu garantieren, sollte in den Sicherungsskripten die manuelle Channel Allocation genutzt werden. Dies wird indirekt auch von den Herstellern der Backup Software empfohlen, da alle Beispiele der Dokumentation darauf aufsetzen. Weiterhin ist für jede Datenbank bzw. ArchiveLog Sicherung ein Skript mit den passenden RMAN Kommandos anzulegen. Diese wird später bei der Client Konfiguration als Saveset eingetragen. Ein Beispielskript zur Sicherung zeigt Listing 1. RMAN und TSM 3. Das Backup Command Das NetWorker Backup Command ist ein Shell Skript, in dem vom Anwender unbedingt die Werte bestimmter Umgebungsvariablen einzutragen sind. Die wichtigsten davon sind hier aufgezählt: ORACLE_HOME: Hier ist der Wert der Umgebungsvariable $ORACLE_HOME einzutragen. Das Einbinden einer Oracle Datenbank Sicherung mit Recovery Manager in eine Tivoli Storage Manager Umgebung gestaltet sich ähnlich wie die Einbindung in eine NetWorker Umgebung. 1. Installieren und Linken Die Schritte Installation und Linken erfolgen analog den bei „RMAN und NetWorker“ beschriebenen. 2. Anpassen der Datei tdpo.opt PATH: Neben dem Standard Pfad der Server ist zusätzlich der Pfad zu den Oracle Binaries einzutragen, also $ORACLE_HOME/bin. Dabei sollte der Pfad zu den Oracle Binaries vor dem restlichen Suchpfad stehen. Im Verzeichnis /usr/tivoli/tsm/client/oracle/bin liegt die Beispieldatei tdpo.opt.smp. Die tatsächliche Konfigurationsdatei muss tdpo.opt heißen. Am einfachsten kopiert man tdpo.opt.smp nach tdpo.opt und bearbeitet diese dann. Wie immer bei TSM darf das nur vom Administrator bzw. durch root erfolgen. NSR_RMAN_ARGUMENTS: Mit dieser Variable werden diverse RMANKommandozeilen-Optionen übergeben, wie z. B. msglog zum Mitloggen des RMAN Outputs. Welche Einträge in der Datei enthalten sein müssen, zeigt das Beispiel in Listing 2. Das Template (nsrnmo) für das Backup Command liegt im Verzeichnis der NetWorker Binaries. Für jede Datenbank Sicherung bzw. für Danach ist in demselben Verzeichnis die Datei dsm.opt anzulegen. In dieser ist der Eintrag servername tdpo # Der Name, über den der TSM Server identifiziert wird vorzunehmen. 35 Datenbanken connect target <usr>/<pwd>@<target-alias> connect catalog <usr>/<pwd>@<catalog-alias> run { allocate channel t1 type ’SBT_TAPE’ parms ’ENV=(tdpo_optfile= /usr/tivoli/tsm/client/oracle/bin/tdpo.opt)’; backup full filesperset 6 (database format ‘%d_%u‘); release channel t1; } Listing 4: Beispiel für ein RMAN Skript mit Anbindung an TSM. 3. Bearbeiten von dsm.sys Als nächstes ist im Verzeichnis /usr/tivoli/tsm/client/api/ bin ein Link auf die Datei /usr/tivoli/tsm/client/ba/bin/ dsm.sys anzulegen. Diese Datei ist so zu editieren, dass darin die in Listing 3 abgebildeten Zeilen enthalten sind. 4. Node registrieren Beim nächsten Konfigurationsschritt wird der Node (Datenbank Server) beim TSM Server registriert. Das geschieht mit dem folgenden Kommando: REG NODE <Servername des Oracle Servers> password maxnummp=2 passexp=0 das Password-File TDPO.nodename generiert. 6. Backup Skripte Wie auch bei NetWorker empfiehlt es sich, für jede Datenbank Sicherung bzw. für die Sicherung der dazugehörigen ArchiveLogs ein eigenes Skript mit dem RMAN Aufruf bzw. ein eigenes RMAN Kommando Skript anzulegen. Das RMAN Kommando Skript für TSM (siehe Listing 4) zeigt, dass der Unterschied zwischen einem Kommando Skript für TSM und einem für NetWorker nur in einer Zeile liegt. Während beim NetWorker die Parameter für den NetWorker Server direkt im Kommando Skript notiert werden, liegen sie bei TSM im tdpo_optfile. Dabei ist password das TSM Passwort für diesen Node. 5. Passwort Datei anlegen Anschließend wird im Verzeichnis /usr/tivoli/tsm/client/ oracle/bin mit Hilfe des Kommandos tdpoconf password Dieses Skript wird dem RMAN als Kommando beim Aufruf übergeben: rman cmdfile ’Skriptname’ msglog ’Log-Datei’ append Wird das ganze noch in ein Shell Skript geschrieben, in dem die Umgebungsvariablen für Oracle gesetzt werden und wird dieses Shell Skript vom TSM Scheduler angestoßen, ist die Konfiguration beendet. Fazit und Ausblick In der nächsten Ausgabe werden wir uns mit der Konfiguration für NetBackup und DataProtector beschäftigen und die Stärken und Schwächen der einzelnen Tools gegenüberstellen. Abb. 2: Zusammenspiel der einzelnen Komponenten bei RMAN und TSM. 36 Andreas Kother ([email protected]). Unix/Linux/Open Source Unix/Linux/Open - TitelthemaSource SLOX Let’s work together! Die SuSE Linux AG bietet eine Groupware Lösung an, die größtenteils auf Open Source Technologien basiert und im Wettbewerb zum Microsoft Exchange Server angeboten wird. Der SuSE Linux Openexchange Server (SLOX) stellt in der derzeitigen Version 4.1 zentrale Groupware-Funktionalitäten wie Kalender-, Aufgaben- und Dokumentenmanagement bereit. Architektur des Servers SLOX besteht aus einer Reihe von integrierten Modulen. Eines davon ist z. B. der Apache Webserver, der die Funktionalitäten des Groupware Servers auf HTML Seiten bereitstellt. Die gesamte Benutzerverwaltung erfolgt über den OpenLDAP Server. Die übrigen Daten werden in einer PostgreSQL Datenbank gespeichert. Allein die Groupware Komponente von SLOX ist eine in Java geschriebene, proprietäre Software namens „comFire“. Grundlage ist das mitgelieferte Betriebssystem United Linux 1.0, was in Abbildung 1 verdeutlicht wird. Abb. 2: Das SLOX-Portal. Kalender und Termine Nach dem Login über das Portal bietet SLOX eine Übersicht über Termine, die an dem jeweiligen Tag anfallen (siehe Abbildung 2). Per Link kann man diese auswählen. Der Benutzer gelangt dann direkt in die Maske zur Bearbeitung der Kalenderdaten. Drei verschiedene Ansichten sind einstellbar: die Tages-, Wochen- und Monatsansicht. Zusätzlich stellt eine Teamansicht die Termine der verschiedenen Benutzer gegenüber. Neue Termine lassen sich mit Ort, Anfangs-/Enddatum und Beschreibung erstellen. Die Teilnehmer eines Termins lassen sich eintragen und automatisch per EMail benachrichtigen. Ein flexibles Berechtigungssystem ermöglicht den Teilnehmern lesenden oder schreibenden Zugriff auf die Kalendereinträge. Terminanfrage Möchte ein Mitarbeiter überprüfen, ob ein Teilnehmer an bestimmten Zeiten verfügbar ist, kann eine Terminanfrage erstellt werden. Das System überprüft den Kalender des entsprechenden Teilnehmers. Anschließend werden verfügbare Termine grafisch präsentiert. Über die Maske „Serie“ lässt sich ein Termin periodisch wiederholend anlegen, z. B. täglich oder wöchentlich. Bei Anlage des Termins erfolgt eine automatische Verfügbarkeitsprüfung aller ausgewählten Teilnehmer, sodass das System auf potenzielle Konflikte aufmerksam macht. Aufgaben SLOX zeigt eine Übersicht über die eigenen Aufgaben im Portal an. Über den Reiter Aufgaben gelangt der Benutzer in die entsprechende Aufgabenmaske. Wie bei allen Objekten im Openexchange Server lassen sich die Aufgaben beliebig mit anderen Objekten wie Terminen, Projekten und Dokumenten verknüpfen. Abb. 1: Die Architektur des SLOX. Grundsätzlich wird unterschieden zwischen Projektaufgaben und allgemeinen Aufgaben, die keinem Projekt zugeordnet sind. Aufgaben können delegiert werden – und zwar an andere Gruppen oder Mitarbeiter. Diese Aufgaben werden separat unter dem Reiter „delegierte Aufgaben“ angezeigt. 37 Unix/Linux/Open Source E-Mails, Faxe und Co. Längst wird das Telefon von einer Vielzahl von Kommunikationslösungen in Unternehmen ergänzt. Neben dem klassischen Fax setzen inzwischen viele Unternehmen auf die Kommunikation per E-Mail und Instant Messaging. Diese Funktionalitäten werden auch vom SLOX bereitgestellt: Als Mailserver verwendet Openexchange „Postfix“. Zum Senden wird das Standard Protokoll SMTP verwendet. Die Benutzer bekommen ihre Mails entweder über das POP4 oder das IMAP Protokoll. Die Verwendung dieser Standardprotokolle ermöglicht ein Bearbeiten der E-Mails entweder über das von SLOX bereitgestellte Webfrontend oder über E-Mail Clients, die die o. g. Protokolle unterstützen. Zentrale Einstellungen Der Administrator hat die Möglichkeit, die wichtigsten Einstellungen zentral über ein Webfrontend zu verwalten. So z. B. ob der serverseitige SPAM-Filter aktiv ist, oder ob SMTP verschlüsselt werden soll. Außerdem lässt sich die Größe der Mailboxen einstellen. Für jeden Benutzer kann man zentral automatisierte Abwesenheitsmeldungen generieren und Weiterleitungen einrichten. Neben diesen zentralen Einstellungen hat jeder Benutzer die Möglichkeit, selbst Abwesenheitsmeldungen zu erzeugen und auf SPAM zu reagieren. Auch ist es möglich, Mails nach bestimmten Regeln, z. B. nach Absender zu sortieren. Der webbasierte E-Mail Client wirkt aufgeräumt und ist intuitiv zu bedienen. Die wichtigsten Funktionen gängiger E-Mail Clients, wie das Sortieren, Suchen und Erstellen von Verteilerlisten, werden unterstützt. In der Adresszeile wird dann nicht die E-Mailadresse des Empfängers, sondern die Faxnummer eingetragen. War der Faxversand erfolgreich, bekommt der Benutzer eine Bestätigungs-E-Mail. Faxe lassen sich auch über einen Netzwerk-Faxdrucker versenden. Dies ist dann sinnvoll, wenn Dokumente direkt aus einer Anwendung heraus mit Hilfe eines Druckers gefaxt werden sollen. Administriert werden kann ferrariFAX über eine HTML-basierte Oberfläche. Das ferrariFAX Paket ist in den SLOX integriert. Allerdings fallen bei Verwendung zusätzliche Lizenzgebühren an. Weitere Informationen gibt es auf der Homepage des Herstellers www.officemaster.de. Kurznachrichten in Echtzeit Zum Versenden und Empfangen von Kurznachrichten in Echtzeit kommt das Produkt der Firma go4teams GmbH zum Einsatz. Wie das Paket ferrariFAX ist es bereits in den SLOX integriert. Eine Nutzung von fünf Clients zur gleichen Zeit ist standardmäßig erlaubt. Zusätzliche Lizenzen müssen beim Hersteller erworben werden. Der Vorteil von Instant Messaging ist die Echtzeitkommunikation, so dass die Benutzung oft einfacher und unmittelbarer vonstatten geht als bei E-Mail. Nicht ohne mein Outlook! FerrariFax integriert Im Lieferumfang des Openexchange Servers befindet sich das Paket „ferrariFAX“ zum Senden und Empfangen von Faxen. Der Anwender bekommt die empfangenen Faxe per E-Mail mit beigefügter PDF-Datei. Versenden kann er seine Faxe unabhängig davon, welchen E-Mail Client er benutzt; also auch direkt über den Webmail-Client. SuSE liefert keine Client Komponente mit. Alle Funktionen lassen sich über einen Web-Browser ausführen, so dass keine gesonderten Lizenzgebühren für Clients anfallen und auch der Administrationsaufwand geringer ist. Möchte man jedoch nicht durch Webseiten klicken, bietet „oSLOX“ die Möglichkeit, das vorhandene Outlook zu verwenden. Das hat zusätzlich den Vorteil, dass die Mitarbeiter nicht neu geschult werden müssen. Mit oSLOX kann der Benutzer Kalenderdaten, Aufgaben und Kontakte mit dem Openexchange Server synchronisieren. Auch ein lokales Replizieren der Daten ist möglich, sodass eine stetige Verbindung zum Server nicht erforderlich ist. Sicher ist sicher Abb. 3: Der Webmail Client. 38 Kalenderdaten oder E-Mails können sensible Informationen des Unternehmens enthalten. Eine Absicherung der Verbindung ist daher wünschenswert. Der Openexchange Server stellt das Apache ssl-Modul bereits bei der Standardinstallation bereit. Unix/Linux/Open Source Wenn eine verschlüsselte Verbindung gewünscht ist, kann durch Eingabe von „https:// Adresse-des-Servers“ in die Adressleiste des Browsers signalisiert werden, dass die OpenSSL Bibliothek zur Verschlüsselung der Verbindung verwendet werden soll. Zwischen Browser und dem Apache HTTP Server wird dann eine Verschlüsselungsmethode ausgehandelt, so dass eine sichere Verbindung aufgebaut werden kann. Das Projektmanagement beinhaltet Informationen über Kunden, Teilnehmer, Start- und Enddatum, geplante Aufwände in Stunden sowie Einnahmen. Eine Wissensdatenbank stellt das Know-How des Unternehmens an zentraler Stelle für alle Mitarbeiter zur Verfügung. Fazit SLOX zeigt sich bedienerfreundlich und übersichtlich. Das Portal verbindet alle Funktionalitäten an zentraler Stelle. Es gibt so einen Überblick über Aufgaben, Termine, Projekte und E-Mails. Selbsterklärende Symbole sorgen für eine intuitive Bedienung. Weitere Features Zusätzlich verfügt SLOX über ein Dokumentenmanagement. Dokumente können in Ordnerstrukturen abgelegt und mit Lese- und Schreibrechten für Teams und einzelne Benutzer ausgestattet werden. Eine Historie und Versionierung machen Veränderungen an einem Dokument nachvollziehbar. Über ein Diskussionsforum können sich Mitarbeiter zu unterschiedlichen Themengebieten austauschen. Auch hier besteht die Möglichkeit, Beiträge mit Dokumenten oder Terminen zu verknüpfen. Abonniert man einen Beitrag, erhält der Abonnent eine Benachrichtigung per E-Mail. Die Verwendung von unterschiedlichen, offenen Schnittstellen ermöglicht die Integration von SLOX in die bestehende Unternehmens-Infrastruktur. Die Aministration wird durch ein Webfrontend erleichtert. Flexibel ist der Benutzer in der Wahl des Clients. Sowohl ein Browser als auch Outlook und diverse PDAs werden unterstützt. Insgesamt bietet SuSE mit dem Openexchange Server ein gelungenes Produkt mit viel Funktionalität zu erschwinglichen Preisen an. Jens Stahl ([email protected]). Seminarvorstellung: Java GUI Entwicklung mit Swing Der Teilnehmer erlernt die Erstellung komplexer, grafischer Oberflächen mit Hilfe der Java Bibliothek Swing. Sehr viel Wert wird dabei auf den Praxisteil mit einer durchgehenden Übungsaufgabe gelegt. Seminarinhalte • Entstehung der Grafikbibliothek Swing und Unterschiede zu AWT • Grundlegende Swing-Container und -Komponenten • Einfache und komplexe Layout-Manager • Event-Handling: Interfaces und Adapterklassen • Vorstellung des Model-View-Controller (MVC) Paradigmas und dessen Umsetzung (Observer und Observable) • Komplexe Swing-Container und -Komponenten Voraussetzungen • Nutzung einer Tabelle in Java Teilnahme am Seminar „Java Programmierung Grundlagen“ und Kenntnisse in objektorientierter Programmierung. • Look and Feel • Internationalisierung • Übungen mit Hilfe einer durchgehenden Praxisaufgabe Zielgruppe Dieses Seminar richtet sich an alle, die GUI Programmierung mit Java durchführen wollen und ihre Kenntnisse aus dem Seminar „Java Basics“ vertiefen wollen. Termine 06.09.2004 - 10.09.2004 in Wiesbaden 25.10.2004 - 29.10.2004 in Wiesbaden Dauer: 5 Tage Kursgebühr/Teilnehmer: 1.590 € zzgl. MwSt. 39 Datenbanken IBM Informix Dynamic Server 9.40 (Teil IV): Der „Schlüssel“ zu IBM Informix Dynamic Server In früheren IBM Informix Datenbankversionen bestand nur die Möglichkeit der Verschlüsselung von Passwörtern (Simple Password Encryption). Mit dem aktuellen Release sind weitere wichtige Security Features implementiert worden. Die Network Encryption und die externe Authentifizierung hält Einzug in den IBM Informix Dynamic Server. Network Encryption Die Basis der Network Encryption des IBM Informix Dynamic Server 9.40 bildet der OpenSSL Standard in der Version 0.9.6g. (www.openssl.org) Hierbei wird nicht nur wie in früheren Versionen das Passwort verschlüsselt (simple password encryption), sondern der gesamte Datenverkehr zwischen Client und Server. Man unterscheidet zwischen zwei Arten der Network Encryption: 1. Symmetrische Kryptographie 2. Public Key Kryptographie Die Symmetrische Kryptographie verwendet zum Ver- und Entschlüsseln der Daten denselben Key. Das bedeutet, Sender und Receiver verständigen sich zuerst auf einen Key. Bei der Public Key Kryptographie werden unterschiedliche Keys verwendet. Der IBM Informix Dynamic Sever 9.40 verwendet die symmetrische Kryptographie. Grundlagen / Network Encryption Zuerst müssen sich Sender und Receiver, in dem Fall der Client und der DB-Server, auf einen gemeinsamen Key verständigen (1). Dieses geschieht mittels des Diffie-Hellman Algorithmus (Shared Key Exchange). Danach werden die Daten des Senders mittels des vereinbarten Keys verschlüsselt (encrypt) (2). Der Receiver entschlüsselt die Daten (decrypt) wieder (3) (siehe Abbildung 1). Die Network Encryption (ENC) ist im IBM Informix Dynamic Server 9.40 als „pluggable“ Communication Support Module (CSM) implementiert worden. Im Lieferumfang des IBM Informix Dynamic Server 9.40, sowie des IBM Informix Client SDK (Software Development Kid) 2.81 befindet sich eine neue Shared Library ($INFORMIXDIR/ lib/csm/iencs09a.so). Diese übernimmt das Ver- und Entschlüsseln des gesamten Datenverkehrs (siehe Abbildung 2). Die Konfiguration Abb. 1: Network Encryption. Die Konfiguration der IBM Informix Dynamic Server Network Encryption wird mittels einer Konfigurationsdatei durchgeführt. Zur Identifikation dieser Datei kann man die Umgebungsvariable INFORMIXCONCSMCFG verwenden (Angabe des vollen Pfadnamens wie bei der Umgebungsvariablen INFORMIXSQLHOSTS). (Default = $INFORMIXDIR/etc/concsm.cfg) Die Konfigurationsdatei (concsm.cfg) Die Datei concsm.cfg ist standardmäßig nicht vorhanden und muss „neu“ angelegt werden. Abb. 2: Beispiel einer Client → Server Verbindung. 40 Die Auflösung der Encryption Konfiguration und des DB-Server Namens erfolgt einfach über eine „weitere“ Spalte in der SQLHOSTS. Datenbanken ids940fc2_enc ids940fc2 onsoctcp onsoctcp halix halix ids940fc2_enc ids940fc2 csm=(ENCCSM1) Abb. 3: SQLHOSTS-Einträge für Server und Alias mit verschlüsselter und unverschlüsselter Verbindung. Hier wird nun die Encryption-Einstellung einem DB-Server zugewiesen. Mittels des DB-Server Aliases besteht im Übrigen die Möglichkeit, auf „dieselbe“ DBInstanz eine verschlüsselte Verbindung und eine unverschlüsselte Verbindung einzurichten (siehe Abbildung 3). ENCCSM1 („/ifx/ids940fc2/lib/csm/iencs09a.so“, cipher[all], mac[levels:high, files:/tmp/Mac_Key_1.dat], switch[cipher:20,key:20]) Abb. 4: concsm.cfg Konfiguration. Wie Abbildung 4 zeigt, muss die CSM Konfigurationsdatei folgenden Aufbau haben: CONCSM.CFG: ENCCSM1( “/ifx/ids940fc2/lib/csm/iencs09a.so“, “/ifx/ids940fc2/etc/enccsm1.cfg“,““) 1. Name der CSM-Konfiguration 2. Pfad und Name der CSM Library ($INFORMIXDIR/lib/csm/iencs09a.so) 3. Verschlüsselungsalgorithmus (Ciphers) ENCCSM1.CFG: ENCCSM_CIPHTERS: ENCCSM_MAC: ENCCSM_MACFILES: ENCCSM_SWITCH: 4. MAC (Message Authentication Code) 5. Switch (Änderungsfrequenz von Cipher und MAC Keys) Eine weitere Möglichkeit der Konfiguration zeigt Abbildung 5. Abb. 5: Alternatives Konfigurationsbeispiel concsm.cfg. Ciphers Als Cipher bezeichnet man den eigentlichen Verschlüsselungsalgorithmus. In Abbildung 6 sind die unterstützten Verschlüsselungsmechanismen aufgelistet. Mit der Einstellung cipher[all] lässt man alle zur Verfügung stehenden Algorithmen zu. Des Weiteren besteht die Möglichkeit, Verschlüsselungsalgorithmen auszuschließen bzw. sich auf einen bestimmten Algorithmus festzulegen. Beispiel: cipher[allbut:bf-1] cipher[des3] all high /tmp/MacKey_1.dat 30,3 Algorithmus Beschreibung des DES (64 Bit Key) des3 Triple DES desx Extended DES (128 Bit Key) bf-1 Blow Fish (64 Bit Key) bf-2 Blow Fish (128 Bit Key) bf-3 Blow Fish (192 Bit Key) Modes Beschreibung ecb Electronic Code Book cbc Cipher Block Chaining cfb Cipher Feedback ofb Output Feedback Abb. 6: Verschlüsselungsalgorithmen/Modes. CSM / Library Message Authentication Codes (MAC) Die CSM Library ist im Lieferumfang des IBM Informix Dynamic Servers und des IBM Informix Client (SDK/Connect) enthalten. Clientseitig muss mindestens der CSDK/Connect 2.81 installiert werden. Der MAC wird zur Kontrolle der Integrität einer Information benötigt. Dieses geschieht mit Hilfe einer „Prüfsumme“. Diese Prüfsumme wird wiederum verschlüsselt übertragen. Zur Chiffrierung der Prüfsumme wird ebenfalls ein Key generiert. Folgende Einstellungen können hier vorgenommen werden: • • Server: $INFORMIXDIR/lib/csm/iencs09a.so (Windows-)Client: %INFORMIXDIR%\lib\client\csm\ iencs09a.dll • • • off low medium • high Keine Verwendung Verwendung von XOR zur MAC Erstellung wenn Nachricht > 20 Byte, wird SHA1 MAC verwendet, ansonsten XOR Verwendung von SHA1 MAC 41 Datenbanken tcpdump: listening on lo 18:04:52.911158 linux.local.32774 > linux.local.ncube-lm: P 1036309464:1036309500(36) ack 1029114099 win 32767 <nop,nop,timestamp 48887 47942> (DF) 0x0000 4500 0058 0115 4000 4006 3b87 7f00 0002 E..X..@.@.;..... 0x0010 7f00 0002 8006 05f1 3dc4 d3d8 3d57 08f3 ........=...=W.. 0x0020 8018 7fff 14ef 0000 0101 080a 0000 bef7 ................ 0x0030 0000 bb46 0002 0000 0017 7365 6c65 6374 ...F...... select 0x0040 202a 2066 726f 6d20 7379 7374 6162 6c65 .*.from.systable 0x0050 7300 s. tcpdump: listening on lo 18:05:51.240489 linux.local.32776 > linux.local.ncube-lm: P 1086282302:1086282370(68) ack 1087587982 win 32767 <nop,nop,timestamp 54720 53782> (DF) 0x0000 4500 0078 0161 4000 4006 3b1b 7f00 0002 E..x.a@.@.;..... 0x0010 7f00 0002 8008 05f1 40bf 5a3e 40d3 468e [email protected]>@.F. 0x0020 8018 7fff d23a 0000 0101 080a 0000 d5c0 .....:.......... 0x0030 0000 d216 0300 0040 f776 319a 4b84 a1fb [email protected]... 0x0040 0cd5 b6e3 afe0 b67e d535 9fb7 b157 cb53 .......~.5...W.S 0x0050 6cd6 l. Abb. 7: TCPDUMP Klartext / Chiffretext. Der MAC Key wird wie der (Cipher) Key, der für die eigentliche Verschlüsselung der Daten zuständig ist, ausgehandelt. Mit Hilfe eines Shell Tools kann dieser manuell geändert werden. ($INFORMIXDIR/bin/GenMacKey) Switch Die Switch-Option gibt die Änderungshäufigkeit des Ciphers, also des Verschlüsselungsalgorithmus und des MAC Keys, an. Der Wert wird hierbei in Minuten angegeben. Beispiel: switch[ciphers:30,key:30] ENCRYPT_CDR <0=keine Verschlüsselung, 1=wenn möglich nutze Verschlüsselung, 2=Verschlüsselung wird vorausgesetzt>, ENCRYPT_CIPHER, ENCRYPT_MAC, ENCRYPT_MACFILE, ENCRYPT_SWITCH). In einer der nächsten ORDIX News Ausgaben werden wir Ihnen die externe Authentifizierung mittels PAM (Pluggable Authentication Method) vorstellen. Auch über Performance beim Einsatz dieser zusätzlichen Sicherheitsmodule werden wir an dieser Stelle demnächst berichten. Software-Voraussetzungen Für den Einsatz der Network Encryption müssen folgende Softwareversionen installiert sein: • • Server: >= IBM Informix Dynamic Server 9.40[U/F]C1 Client: >= Informix Client SDK/Connect 2.81 oder >= JDBC 2.21JC5 (jedoch erst ab 9.40[U/F]C3 implementiert) Haben wir Ihr Interesse geweckt? Dann steht einer Migration auf den IBM Informix Dynamic Server 9.40 wohl nichts mehr im Wege. Fragen Sie uns, wir helfen Ihnen gerne, den richtigen „Schlüssel“ zu finden! Fazit Die Implementierung der Network Encryption mittels des Communication Support Modules ermöglicht eine einfache Konfiguration. Der modulare Aufbau über die SQLHOSTS lässt verschlüsselte und unverschlüsselte Verbindungen auf denselben Datenbankserver zu. Auch der gesamte Datenverkehr der Enterprise Replication (ER) kann über eine sichere Verbindung replizieren (ONCONFIG: 42 Guido Saxler ([email protected]). Unix/Linux/Open Source ORDIX Kurzreferenz Suchen und Ersetzen Der vi-Editor /Zeichenfolge ?Zeichenfolge n N www.ordix.de Cursorpositionierung l h w W b B e E ^ 0 $ k j + H M L <Strg>u <Strg>d <Strg>b <Strg>f } { nG G eine Position nach rechts eine Position nach links nächstes Wort oder Sonderzeichen nächstes Wort vorheriges Wort oder Sonderzeichen vorheriges Wort Ende des aktuellen oder nächsten Wortes oder Sonderzeichens Ende des aktuellen oder nächsten Wortes an den Anfang der Zeile (1. sichtbares Zeichen) an den Anfang der Zeile (1. Zeichen) an das Ende der Zeile eine Zeile nach oben, gleiche Spalte eine Zeile nach oben, zum 1. sichtbaren Zeichen eine Zeile nach unten, gleiche Spalte eine Zeile nach unten, zum 1. sichtbaren Zeichen an den Anfang des Bildschirms in die Mitte des Bildschirms zur letzten Zeile des Bildschirms Bildschirm um eine halbe Seite rückwärts Bildschirm um eine halbe Seite vorwärts vorherige Seite nächste Seite nächster Absatz vorhergehender Absatz zur Zeile n an das Ende der Datei Löschen, Sichern und Kopieren dObjekt :e+ datei dw dd ndd dG D x nx u U yObjekt “ayObjekt Y “aY nY p P “ap “ad Objekt löschen Editieren der angegebenen Datei; der Cursor steht am Dateiende. Wort löschen Zeile löschen ab Cursorposition n Zeilen löschen Löschen ab der aktuellen Zeile bis zum Ende Rest der Zeile löschen Zeichen unter dem Cursor löschen n Zeichen löschen letzte Änderung aufheben Änderungen in einer Zeile aufheben Objekt im Arbeitspuffer sichern Objekt im Puffer ‘a’ sichern Zeile im Arbeitspuffer sichern Zeile im Puffer ‘a’ sichern n Zeilen ab aktueller Zeile sichern gesicherten bzw. zuletzt gelöschten Text nach der Cursorzeile einfügen gesicherten bzw. zuletzt gelöschten Text vor der Cursorzeile einfügen gesicherten Text aus dem Puffer ‘a’ einfügen Objekt löschen und im Puffer ‘a’ sichern Zeichenfolge vorwärts suchen Zeichenfolge rückwärts suchen letztes Suchen wiederholen letztes Suchen in umgekehrter Richtung wiederholen % entsprechende Klammer ‘(..)’, ‘{..}’ oder ‘[..]’ suchen :s/alt/neu/ die erste Zeichenfolge ‘alt’ in einer Zeile in der Datei durch ‘neu’ ersetzen :s/alt/neu/g alle Zeichenfolgen ‘alt’ durch ‘neu’ in der aktuellen Zeile ersetzen :1,$s/alt/neu/gc alle Zeichenfolgen ‘alt’ durch ‘neu’ ersetzen mit Abfrage Einfügen und Ersetzen a A i I J o O rx R cObjekt C s S . >> << <ESC> nach dem Cursor einfügen am Zeilenende einfügen vor dem Cursor einfügen am Zeilenanfang einfügen nachfolgende Zeile an aktuelle anfügen unter der aktuellen Zeile anfügen über der aktuellen Zeile anfügen einzelnes Zeichen durch ‘x’ ersetzen Überschreibemodus bis Eingabe von <ESC> Objekt ersetzen restlichen Text in der Zeile ersetzen Zeichen unter Cursor durch Eingabe ersetzen Zeile ersetzen letzte Änderung wiederholen Zeile nach rechts verschieben Zeile nach links verschieben Eingabemodus beenden Dateimanipulation vi datei(en) ZZ :w :w datei :w! datei :q :wq :q! :r datei :r! kommando :! kommando :so datei :e datei :e! :e+ datei :e# :e+n :sh :n Editor aufrufen und erste Datei in den Arbeitspuffer einlesen Änderungen sichern und Editor verlassen Änderungen sichern Schreiben in die angegebene Datei Überschreiben der angegebenen Datei Dateibearbeitung beenden Sichern und Dateibearbeitung beenden Dateibearbeitung abbrechen; Änderungen werden nicht gesichert Einfügen der genannten Datei in die aktuelle Datei Einfügen der Befehlsausgabe in die aktuelle Datei Ausführen des angegebenen Unix Befehls Befehle aus der angegebenen Datei ausführen Editieren der angegebenen Datei erneutes Einlesen der Datei ohne Berücksichtigung der vorgenommenen Änderungen Editieren der angegebenen Datei Der Cursor steht am Dateiende Editieren der vorher bearbeiteten Datei Editieren der Datei. Der Cursor steht auf Zeile n Start einer neuen Shell Editieren der nächsten Datei aus der aufgerufenen Dateiliste 43 Datenbanken ... auf dass niemand des anderen Sprache verstehe Übersetzung Genesis 11,7 „Wohlauf, lasst uns herniederfahren und ihre Sprache daselbst verwirren, dass keiner des andern Sprache verstehe!“ (Genesis 11,7) Oracle hat den (wirtschafts-)politischen Paradigmenwechsel in seiner Produktpolitik nachvollzogen. Betonte bislang der Begriff National Language Support, dass Oracle weltweit einsetzbar ist, wird jetzt der Akzent Globalisierung viel stärker fokussiert. Der folgende Artikel beschreibt, wie und wieweit Oracle das Arbeiten in verschiedenen Sprachen und mit verschiedenen Zeichensystemen unterstützt und wie fehlende Möglichkeiten erweitert werden können. Nahezu alle Zeichensätze verfügbar Zum gegenwärtigen Zeitpunkt kann mit den Möglichkeiten der Oracle-Datenbank jede sinnvoll denkbare Kombination von Sprachund Zeichensystemen abgebildet werden. Problematisch wird es, wenn bereits eine Datenbank betrieben wird und nachträglich die Notwendigkeit entsteht, auf ein anderes Zeichensystem bzw. ein anderes Character Set zu migrieren. Einsatzgebiete verschiedener Character Sets Da Umlaute oder akzentuierte Zeichen früher kein Thema waren, arbeiten noch heute viele ältere amerikanische Datenbanken mit ASCII, das mit jeweils 7 Bit Breite für ein einzelnes Zeichen alle nötigen Zeichen abbildet. Insgesamt 128 Zeichen können so dargestellt werden. Änderungen der Randbedingungen Kulturelle oder politische Änderungen verlangen beispielsweise, den bislang genutzten Zeichensatz auszuweiten, wie etwa die €Einführung, oder die Zusammenarbeit mit Menschen oder Firmen jenseits des Horizonts der lateinischen Schrift (z. B. Russland, die arabischen Staaten, aber auch das neue EU-Mitglied Zypern) stellt neue Anforderungen an die „Sprachmächtigkeit“ der Datenbank. Dann wird es sehr schnell nötig, Daten unterschiedlicher Sprachen zu speichern, die bei der Erstellung der Datenbank noch nicht vorgesehen waren und die das bei der Installation gewählte Character Set möglicherweise nicht abbilden kann. Die heutigen, darüber hinausgehenden Anforderungen der europäischen Sprachen, z. B. akzentuierte Buchstaben, führten zu einigen Character Sets, die mit 8 Bit Breite alle nötigen Zeichen (insgesamt 256) der verschiedenen europäischen Sprachen abbilden – die von ASCII abgebildeten Zeichen als Untermenge (Sub Set). Multi Byte Character Sets Die silbenorientierte Welt der asiatischen Sprachen ist mit den Möglichkeiten eines 1 Byte breiten Zeichensatzes nicht mehr abzubilden und führte zur Entstehung der Multi Byte Character Sets, die wiederum als Untermenge ASCII mit abbilden. Die Auswahl des Character Sets bildete bei der Erstellung der Datenbanken immer das möglichst beste Mittel zwischen Vielfalt der Darstellung und Performance: ein Single Byte Character ist natürlich schneller verarbeitet als ein Character, der mehrere Byte groß ist. Abb. 1: Probleme der Zeichenauflösung. 44 Sollen verschiedene Datenbanken zusammenarbeiten, die mit unterschiedlichen Character Sets installiert wurden, wäre die Migration auf ein Character Set notwendig, das alle Zeichen der zuvor verwendeten Zeichensätze enthält, also für diese Zeichensätze ein Super Set darstellt. Datenbanken Auswahl des richtigen Character Sets Es gibt bei der Vielfalt der Character Sets immer verschiedene Möglichkeiten. Wenn aber die Migration durchgeführt wird, sollte so entschieden werden, dass mit dieser Migration auch zukünftige Entwicklungen und mögliche Anforderungen weitgehend abgebildet werden können. Wenn also in Aussicht steht, dass weitere Sprachen unterstützt werden sollen, sollten diese möglichst schon im ausgewählten Character Set vorhanden sein. Exkurs: à la Recherche du € perdu Single Byte Character Sets bieten bessere Performance und brauchen weniger Speicherplatz als Multi Byte Character Sets, begrenzen aber die Anzahl der verfügbaren Zeichen und damit die Bandbreite der zur Verfügung stehenden Sprachen. Wenn bei einer Abfrage das Character Set der Datenbank und das des Client nicht identisch sind, konvertiert Oracle die Zeichen in die passenden Werte. Deshalb muss in der Registry-Variable in HKEY_LOCAL_MACHINE\ SOFTWARE \ORACLE\NLS_LANG unter Windows 2000 und unter Unix in der Umgebungsvariable NLS_LANG das Character Set des Client-Rechners eingetragen sein - für Windows-Rechner ist das zumeist WE8MSWIN1252. Konvertierungen Zu bedenken ist auch, dass es bei Clients mit verschiedenen Character Sets zu Konvertierungen kommen kann. Da eine solche Konvertierung Performance kostet, sollten bei solchen Konstellationen möglichst Character Sets ausgewählt werden, die solche Konvertierungen unnötig machen und die effektivste Verschlüsselung für alle genutzten Sprachen oder Zeichensätze bieten. Deshalb sollte ein Character Set gewählt werden, das den Anforderungen der verschiedenen Clients möglichst ohne Konvertierung begegnet. Zudem sollte das Character Set Super Set für die vorher genutzten Character Sets sein, also für jedes Zeichen ein Äquivalent bieten. Ansonsten besteht die Gefahr des Datenverlustes. Das Character Set der Datenbank sollte möglichst für alle von den Clients verwendeten Character Sets Super Set sein. Wird nur ein Teil der Zeichen eines Character Sets eines Clients genutzt, sollte dieser Teil im Character Set der Datenbank abgebildet sein. Insbesondere dann, wenn z. B. die Character Sets sehr ähnlich sind, wie WE8MSWIN1252 und WE8ISO8859P1. Wenn man das €-Symbol nicht braucht, kann ohne Datenverlust von WE8MSWIN1252 zu WE8ISO8859P1 konvertiert werden. Jedes nicht in WE8ISO8859P1 verfügbare Zeichen konvertiert Oracle in ein Ersatzzeichen (siehe nebenstehender Exkurs). Wenn alle Clients das gleiche Character Set nutzen, ist dieses Character Set oder ein entsprechendes Super Set die beste Wahl. Für Clients mit verschiedenen Character Sets soll Das Character Set, das Oracle verwendet, ist unabhängig vom Betriebssystem, auf dem die Datenbank läuft. Eine Oracle-Datenbank, die von einem russischen Client angesprochen wird, kann auf einem rein englischen Windows laufen: die Globalisierung liefert Oracle intern. Nur das Betriebssystem, auf dem der Client läuft, muss Kyrillisch „können“ – d. h. mit einer entsprechenden Codepage des Betriebssystems diese Sprache unterstützen. Falscheintrag Ein falscher Eintrag in dieser Variable kann zu erheblichen Darstellungsproblemen führen (siehe Abb. 1): In unserem Beispiel arbeitet die Datenbank mit dem Character Set WE8ISO8859P1, das kein €-Zeichen enthält. Der Client, für den in die NLS_LANG-Variable fälschlich WE8ISO8859P1 eingegeben wurde, um scheinbar der Datenbank zu genügen, läuft auf NT. Vom Client aus wird € in die Datenbank eingegeben. Da bei Client und Server die Character Sets gleich sind, findet keine Konvertierung statt. Zeichen, die nicht im Character Set enthalten sind, ersetzt Oracle mit einem Ersatzzeichen, HEX 80. Wenn der Client den Inhalt der entsprechenden Zelle wieder ausliest, wird wiederum nicht konvertiert, der Client erhält HEX 80 zurück und löst es zu € auf. Ein anderer Client, auch unter NT, ist mit WE8ISO8859P15 oder WE8MSWIN1252 konfiguriert, weil er damit die Microsoft Code Pages den Anforderungen entsprechend nutzen kann. Beide enthalten das €-Zeichen. Er fragt den Inhalt der Zelle ab, der Wert HEX 80 wird in diesem Fall konvertiert, und der Client stellt das Zeichen š dar. Obwohl der P1-Client scheinbar mit € arbeiten konnte, kommt dieses Zeichen in der Datenbank nicht vor: Bei systemübergreifendem Arbeiten kommt es somit zu Inkonsistenzen. Die Clients müssen also passend zu ihrer Betriebssystemumgebung und den damit zusammenhängenden Code Pages konfiguriert werden, damit die sachgemäße Konvertierung beim Eingeben, Ändern oder Lesen von Daten stattfinden kann. 45 Datenbanken te das neue Character Set für alle schon vorhandenen Super Set sein. • Ändert sich der Code des Characters in dieser Zeile, wenn die Datenbank auf ein neues Character Set umgestellt wird? • Kann die Datenzeile erfolgreich in das neue Character Set konvertiert werden? • Passen die Daten nach der Konvertierung in die gegenwärtige Größe der Spalte? UNICODE als neues Character Set Wenn in einer Oracle-Datenbank mit Daten aus verschiedenen Sprach- und Zeichensystemen gearbeitet wird, empfiehlt Oracle als Character Set UNICODE. UNICODE ist ein universales Character Set, in dem die Zeichen jeder Sprache abgebildet sind. Für jedes Zeichen bietet UNICODE einen eindeutig zugeordneten, binären Wert in verschiedenen Längen – also zum Teil Single Byte, zum Teil Multi Byte. In einer Datenbank mit dem Character Set UNICODE können Daten in den verschiedensten Sprachen vorgehalten, verarbeitet und von verschiedensprachigen Clients abgefragt werden. Die jeweils neueste Version von CSSCAN kann im Oracle technet für die entsprechende Plattform heruntergeladen werden. CSSCAN benötigt das Schema CMIG in der Datenbank. Dafür liefert Oracle das Skript cminst.sql. Nach erfolgreichem Durchlaufen des Skriptes sind die Voraussetzungen für einen Einsatz von CSSCAN gegeben. CSSCAN kann auf drei verschiedene Arten aufgerufen werden: • UNICODE bildet für alle in Oracle möglichen Character Sets ein Super Set und ist damit für Globalisierung oder Konsolidierung verschiedener Datenbanken eine sinnvolle Wahl. • • Angabe einer Parameter-Datei, die alle Optionen beinhaltet In der Kommandozeile mit allen nötigen Parametern Interaktiv Performance Hinsichtlich der Performance gibt Oracle als ungefähre Größe einen Overhead von 10 % gegenüber einer Datenbank mit einem Single Byte Character Set an. Das kann abhängig von der Art und Anzahl der SQL-Funktionen, die den Datenbankbetrieb ausmachen, noch ansteigen. Sollen verschiedene Zeichensätze, vor allem auch aus dem asiatischen Sprachraum, abgedeckt werden, gibt es zu UNICODE aber wohl keine Alternative. Wenn nicht alle Daten in UNICODE gespeichert werden sollen, bietet Oracle mit dem NCHAR-Datentyp ab Oracle 9i die Möglichkeit, nur ausgewählte Daten als UNICODE zu speichern. Wenn nur bestimmte Spalten UNICODE als Character Set benötigen, können diese Spalten mit ALTER TABLE MODIFY COLUMN von CHAR auf NCHAR geändert werden. Das wäre ein sinnvoller Kompromiss zwischen Performance und Breite der Darstellungsmöglichkeiten. Mit CSSCAN mögliche Migrationsauswirkungen testen Mit dem Character Set Scanner (CSSCAN) liefert Oracle ein Programm, mit dessen Hilfe die Auswirkungen einer Änderung des Character Sets einer Datenbank prognostiziert werden können. CSSCAN bietet die Möglichkeiten, die komplette Datenbank, ein Schema oder einzelne Tabellen zu scannen. Der Scanner liest für den vorgegebenen Bereich alle Daten mit der Eigenschaft „character“ und testet jede Datenzeile auf die folgenden Bedingungen: 46 Der folgende Kommandozeilenaufruf testet die Tabelle books auf die Auswirkungen einer Migration von US7ASCII zu WE8ISO8859P15. Wenn der Parameter fromchar nicht angegeben wird, wird als Default der Character Set der Datenbank angenommen: csscan system/**** \ table=books \ fromchar=US7ASCII \ tochar=WE8ISO8859P15 \ array=40960 process=1 Das Character Set der Datenbank kann mit der Abfrage SELECT * FROM sys.props$ WHERE name LIKE ‘NLS%’; ausgelesen werden. Die Ergebnisse der Simulation gibt Oracle in Dateien aus. Die wichtigsten Details enthält scan.txt: [Scan Summary] All character type application data remain the same in the new character set Dieses Ergebnis bedeutet, dass durch die Migration des Character Sets keine Daten geändert werden. In diesem Fall sollte die Migration problemlos mit dem Kommando ALTER DATABASE CHARACTER SET durchgeführt werden können. Datenbanken Gibt CSSCAN den folgenden Satz aus: [Scan Summary] Some character type application data are not convertible to the new character set ist damit zu rechnen, dass es bei einer Migration des Character Sets zu Problemen kommen wird. Der CSSCAN teilt die Daten in 4 verschiedene Kategorien ein: • • • • Changeless Convertible Truncation Data Loss Die Länge der Datentypen VARCHAR2 und CHAR wird in Bytes angegeben, bei Multi Byte Character ist das nicht die Anzahl der Zeichen. Ändert sich durch die Veränderung die Länge eines Zeichens (siehe Abbildung 2), gehen in der Datenbank gespeicherte Werte mit ihrem Speicherbedarf über das hinaus, was der definierte Datentyp einer Tabelle gestattet. Stellt CSSCAN solche Probleme fest, müssen vor der Änderung des Character Sets die Spaltenbreiten für die betroffenen Bereiche verändert werden, da sonst ein Datenverlust eintritt. Ab Oracle 9i bestehen zwei alternative Möglichkeiten, die Längendefinition für eine Spalte zu definieren: 1. mit byte semantics, also einer festen Anzahl von Bytes, oder 2. dynamisch mit character semantics und damit einer Anzahl von Zeichen gleich welcher Länge. Changeless Data Loss Daten, die durch die Migration nicht verändert werden, werden als Changeless (Daten ohne Veränderung) bezeichnet. Die binäre Repräsentation bleibt die gleiche. Das ist dann der Fall, wenn das alte Character Set hinsichtlich der vorhandenen Zeichen und den ihnen zugeordneten binären Werten Sub Set des neuen Character Sets ist. Das ist der ideale Ausgangspunkt einer Migration. Convertible Convertible umfasst die Menge der Daten, für die es eine eindeutige Konvertierung gibt und die deshalb bei einer Migration erfolgreich konvertiert werden können. Convertible ist zum Beispiel der Buchstabe ‘A’, wenn er in US7ASCII mit 0x41 repräsentiert wird und nach der Migration in WE8EBCDIC37C mit 0xc1. Alle Zeichen des alten Character Sets sind auch im neuen enthalten, wenn auch nicht mit der gleichen Zuordnung der binären Werte: ein logisches Sub Set. Truncation tritt dann ein, wenn es keinen gleichen Buchstaben nach der Migration gibt. Kann ein Zeichen nicht ersetzt werden, tritt ein DefaultZeichen an seine Stelle. Nach der Migration ist es dann unmöglich, die verschiedenen, nicht konvertierten Zeichen aus einem Default-Character zu konvertieren. Wenn CSSCAN diesen Fall meldet, ist eine manuelle Änderung in der Datenbank unumgänglich. Aus diesem Grund sollte das Ziel-Character Set immer ein binäres oder logisches Super Set des Ausgangs-Character Sets sein. Andernfalls werden die im Ziel-Character Set nicht verfügbaren Zeichen von Oracle zu Ersatzzeichen konvertiert, etwa „?“, „¿“ o. ä. Aus diesem Grund empfiehlt Oracle immer wieder die Migration zu UNICODE, da UTF8 Super Set für die meisten gebräuchlichen Character Sets ist. Fazit Gerade „historisch gewachsene“ Oracle-Datenbanken sollten überprüft werden, ob das bei der Installation gewählte Character Set noch den Anforderungen entspricht. Das Werkzeug CSSCAN erlaubt es, durch Simulation mögliche Probleme einer Migration des Character Sets im Vorfeld zu erkennen. Truncation tritt dann auf, wenn nach der Migration die Spalte nicht breit genug ist, um die Daten der Zelle aufzunehmen. Etwa nach der Migration von einem Character Set mit Single Byte zu UNICODE, bei der sich die Zeichen von einem auf zwei oder mehr Byte ausdehnen. Hier muss eine Vergrößerung der Spalten vorgenommen werden, ansonsten gehen Daten verloren. Char WE8MSWIN1252 UTF8 ä ö © € E4 F6 A9 80 C3 A4 C3 B6 C2 A9 E2 82 AC Abb. 2: Größenveränderung von Zeichen. Uwe Rübesamen ([email protected]). 47