ORDIX News Kosten senken mit VMware Tanz den

Transcrição

ORDIX News Kosten senken mit VMware Tanz den
www.ordix.de
ORDIX News
Das IT-Magazin der ORDIX AG
Ausgabe 4/2004
€ 2,20
Tanz den REORG
Reorganisierung und Defragmentieren
mit Oracle 10g S. 8
Der Tiger
ist los
Spracherweiterungen
von Java 1.5.0. S. 20
ORDIX erweitert
Vorstand und
Aufsichtsrat
Benedikt Georgi wird neues
Vorstandsmitglied,
Wolfgang Raum Mitglied
im Aufsichtsrat S. 14
Kosten
senken mit
VMware
Virtuelle Maschinen
in der Praxis S. 14
ORDIX bei T-Systems:
System Management
mit PATROL live
S. 5
Editorial
Paderborn, Dezember 2004
Happy New Year
Über vieles hätte ich dieses Mal schreiben können: Über Bush’s Wiederwahl (Uaah – dieses Mal sogar tatsächlich
wieder gewählt, die Amis werden einfach nicht schlau!), über Powell’s Rücktritt (Warum eigentlich nicht Rumsfeld?)
oder die Gesundheitsreform der Union (Wenn man davon nur nicht krank wird ...).
Nichts von alledem. Da ich auch dieses Editorial mal wieder mitten in der Nacht schreibe, wie schon so viele zuvor,
ist für mich das wichtigste in dieser News die Erweiterung des ORDIX Vorstandes. Vielleicht schaffe ich es ja mit der
News 1/2005 einmal, diese Seite zu normalen Arbeitszeiten zu schreiben.
Ab dem 1.1.2005 (naja vermutlich 3.1.2005 :-) ) steht mir mit Herrn Benedikt Georgi ein neuer Kollege zur Seite (s.
Seite 16), der sukzessive viele meiner Tätigkeiten übernehmen wird. Keine Angst, das heißt nicht, dass ich mich zur
Ruhe setzen werde. Aber es werden Herrn Röber und mir dadurch Freiräume geschaffen, die wir weitestgehend
nutzen werden, um sie Ihnen, unseren Kunden, zu Gute kommen zu lassen.
Ich gehe davon aus, Sie werden das in den nächsten Wochen oder Monaten erfahren können. Neben Herrn Georgi
habe ich mit Herrn Wolfgang Raum ein neues Aufsichtsratsmitglied gefunden, das ebenfalls aktiv in das ORDIX
Leben eingreifen soll. Mit seiner Erfahrung ist er für uns ein guter Ratgeber. Dass ORDIX ohne ihn in dieser Form
(und zumindest in Paderborn) nicht entstanden wäre, ist vielen (darunter auch Herrn Raum selbst) sicher nicht so
bewusst gewesen.
So muss ich mich als Franke in Nordrhein Westfalen „herumschlagen“ und Zeitungsartikel präsentieren: Dazu gehören ein paar sehr interessante Informationen zum Thema Konsolidierung – Konsolidieren ist ja mit Sparen gleichzusetzen (VMware, “gewachsene Serverfarm”), die ITIL-Zertifizierung von ORDIX Mitarbeitern und ein Projektbericht
über den nutzbringenden Einsatz von PATROL. Daneben berichten wir viel über Oracle 10g, Reorganisation (mit IBM
Informix und Oracle 10g) und natürlich, für die Entwickler unter Ihnen, über Java und Application Server.
Unser Java Tiger auf dem Titelbild tanzt im Übrigen Jive (sagte mir unsere Grafikerin). Zwei Spuren im Schnee ...
Obwohl, bei Tigerspuren würde ich mir schon Gedanken machen: Ich hoffe, wenn ich über Weihnachten zum Skifahren entschwinde, treffe ich höchstens auf Pisten präparierende Schneekatzen!
Bleibt nur noch was über den Kanzler- und Bundespräsidenten-Konflikt zu sagen: Also der Kanzler spricht zu Neujahr, der Bundespräsident zu Weihnachten (oder umgekehrt?). Hauptsache man packt nicht wieder Helmut Kohls
zweimal gezeigte Rede aus.
In diesem Sinne wünsche ich Ihnen geschäftlich alles Gute zum Jahresendspurt, schöne Weihnachten, etwas Erholung zwischen den “arbeitgeberfreundlichen” Feiertagen, um dann mit Anlauf in ein hoffentlich in jeder Beziehung
gutes Jahr 2005 zu starten.
Wolfgang Kögler
3
Inhaltsverzeichnis
Aus- & Weiterbildung
Standards
15 ... Seminar: Linux Hochverfügbarkeits-Cluster
36 ... Seminar: Oracle Troubleshooting
03 ...
04 ...
23 ...
45 ...
Unix/Linux/Open Source
System Management
24 ... Seminarübersicht: Preise, Termine ... bis August 2005.
10 ... Serverkonsolidierung der etwas anderen Art
Projektbericht über die Konsolidierung einer Kunden-DMZ,
die unter bestimmten Kriterien zu einer Minimierung der administrativen Aufgaben führen soll.
Titel-
14 ... Virtuelle Maschinen in der Praxis thema
Mit dem VMware ESX Server bringen Sie mehr Effizienz in
Ihr Rechenzentrum und senken deutlich die Betriebskosten.
Aktuell
Editorial
Inhalt
Leserinformation
Impressum
05 ... System Management im Sauerland
Projektbericht zum Einsatz von „Distribution Server“ und „Configuration Manager“ bei der T-Systems.
Java/XML
16 ... Neue Mitglieder im Vorstand und Aufsichtsrat der
ORDIX AG: Benedikt Georgi und Wolfgang Raum
Titelthema
23 ... ORDIX Mitarbeiter ITIL-zertifiziert
Durch die Zertifizierung stellt die ORDIX AG ihre langjährige
Erfahrung jetzt auf ein offiziell anerkanntes Fundament.
26 ... Rückblick: 1. ORDIX Benefiz Golf Open
Charity Golfen für notleidende Kinder.
31 ... Larry Ratlos in „Larry, Wildcards und rm“
42 ... Rückblick: ORDIX auf der Linux World Expo
43 ... Einladung zum „META-DOK“ Testday
Erarbeiten Sie am 22.02.05 Ihr individuelles Szenario für
Dokumenten- und Informationsmanagement selbst am PC.
Titel-
20 ... Der Tiger ist los thema
Die neuen Spracherweiterungen von
Java 1.5.0.
37 ... J2EE und Persistenz:
Ein heißes Eisen (Teil I)
Darstellung der Persistenzstrategie in einem größeren, auf J2EE basierenden
Softwareprojekt.
44 ... Reihe Application Server im Vergleich
(Teil II): JBoss
Mittlerweile gehört JBoss weltweit zu
den am meisten verbreiteten J2EE Application Servern.
Datenbanken
itel-
T
08 ... Oracle 10g (Teil III): Tanz den REORG th
ema
Neue Features dbms_redefinition und Segment Shrink helfen bei der Reorganisation von Tabellen und bei der Defragmentierung von Segmenten.
32 ... Oracle Internet Directory (Teil III)
Der Einsatz des OID zur zentralen Benutzer- und Rollenverwaltung für Oracle
Datenbanken.
12 ... Dokumentieren mit PLDoc
PLDoc untersucht den Programmcode und generiert daraus
eine anschauliche Dokumentation auf Basis von HTML.
40 ... Integriertes Reporting für OracleAnwendungen
Mit dem Oracle AS Discoverer können
u. a. die Berichte im Intra- oder Internet
veröffentlicht werden.
18 ... Alles neu macht 10g (Teil I)
Backup und Recovery mit Oracle 10g.
28 ... IBM IDS Reorganisation (Teil I): Interne Architektur
Mit dem Mythos „Viele Extents bedeuten schlechte Performance wegen schlechterem I/O Verhalten“ wird aufgeräumt.
4
46 ... Oracle 10g RAC 380V
So sicher wie das Stromnetz?
Titelthema
System Management - Titelthema System
T-Systems,
Management
Meschede
Projektbericht: ORDIX unterstützt T-Systems, Meschede
System Management im Sauerland
Die Installation und die Konfiguration von PATROL Agenten stellt in größeren Umgebungen eine nicht zu
unterschätzende organisatorische und technische Herausforderung dar – insbesondere in einer FirewallUmgebung.
Dieser Projektbericht beschreibt den Aufbau einer PATROL 7 Architektur bei der T-Systems und wie die beiden
BMC Produkte „Distribution Server“ und „Configuration Manager“ das Leben eines PATROL Administrators
erleichtern können, wenn man sie richtig einsetzt.
Großer Aufwand in einer FirewallUmgebung
Werden sehr viele Agenten und Knowledge
Module manuell installiert und konfiguriert, ist
das nicht nur sehr zeitaufwändig, sondern führt
auch sehr schnell zu einem unübersichtlichen
Durcheinander. Der Einsatz des Distribution
Servers und des Configuration Managers erleichtern das Leben des PATROL Administrators.
Der Einsatz erfordert aber auch große Vorbereitungsmaßnahmen, die in einer engen Zusammenarbeit mit den Netzwerkprofis des Unternehmens erfolgen. In einer Firewall-Umgebung sind diese Aufgaben besonders aufwändig, da diese Produkte teilweise unterschiedliche Kommunikationswege verwenden.
Eine solche Umgebung trafen wir auch bei der
T-Systems in Meschede an. Es sollten ungefähr 300 Agenten mit entsprechenden Knowledge Modulen (KMs) und PATROL 7 Konsolen zur Überwachung eingesetzt werden. In
Zusammenarbeit mit den Mitarbeitern der
T-Systems, Meschede, entwickelte die ORDIX
AG ein Konzept und setzte dieses auch um.
Eine Übersicht über die realisierte Architektur
zeigt Abbildung 1.
Eingesetzte BMC Produkte
Distribution Server
Der Distribution Server wird eingesetzt, um
Software von einer zentralen Stelle installieren
und verteilen zu können. Dies vereinfacht und
beschleunigt die Installation der PATROL Software sehr. Die Software wird von einem zentralen Rechner auf den zu überwachenden
Rechner per „Mausklick“ installiert oder auf den
neuesten Stand gebracht. Die Verteilung erfolgt
auf beliebige Windows- und Unix-Rechner. Dort
wird die Software vom Distribution Client entgegengenommen und installiert.
Configuration Manager
Mit Hilfe des Configuration Managers werden die PATROL Agenten konfiguriert. Der Configuration Manager bietet die Möglichkeit, organisatorische Strukturen (Agentengruppen) für gleiche
oder ähnliche Agenten zu erstellen. Dies vereinfacht die Konfiguration erheblich. Ab Version 1.5.00 verfügt der Configuration Manager auch über eine Reporting-Funktionalität, welche die Dokumentation der Agentenkonfiguration unterstützt.
Notification Server
Notification Server nehmen die Alarm-Events von den Agenten
entgegen, leiten die Informationen an die entsprechenden verantwortlichen Personen per E-Mail weiter und legen die Events in
einer Datenbank ab. Das Versenden der Events per E-Mail ist an
dieser Stelle eine Zwischenlösung. Die Mitarbeiter der T-Systems
arbeiten gerade an einem Konzept für ein Benachrichtigungsverfahren. Das Ziel ist, die Benachrichtigungswege sicherer und
vor allem konfigurierbar zu machen. Zur Zeit sind zwei Notification
Server im Einsatz.
PATROL Console Server
Der PATROL Console Server hält die Verbindung zu den Agenten
und speichert die Informationen darüber ab. Beim Console Server bestand unsere Hauptaufgabe darin, die bis dato angelegten
Management Profile zu konsolidieren.
Um hier Abhilfe zu schaffen, ermittelten wir zuerst, welche unterschiedlichen Management Profile überhaupt notwendig waren und
erstellten dann wenige, allgemeingültige Profile, die den entsprechenden Mitarbeitern zugeordnet wurden.
Es wurde ein Benutzerkonzept erstellt, welches die Rechte der
einzelnen Benutzer stark einschränkte. So können Änderungen
an den Management Profilen jetzt nur noch von den PATROL Administratoren vorgenommen werden.
RT-Server
Die Real Time Server (RT-Server) übertragen die Daten zwischen
den PATROL Agenten und dem PATROL Console Server. Zur Zeit
sind 5 RT-Server im Einsatz. Die Anzahl resultiert zum einen aus
der Firewall-Umgebung und zum anderen aus der geforderten
Hochverfügbarkeit. Jeweils zwei RT-Server sind für eine Seite der
5
System Management
%DFNXSZHJ
):
):
&HQWUDO
1RWLILFDWLRQ
6HUYHU
:HE&HQWUDO
$JH QWH Q
,QWHUQHW
&RQVROH
6HUYHU
1)6
576HUYHU
&RQVROH
6HUYHU
576HUYHU
$JHQWHQ
,QWHUQHW
576HUYHU
'6&
'6&
):
1RWLILFDWLRQ
6HUYHU
6HUYLFH
5HSRUWLQJ
$JH QWH Q
,QWUDQHW
'6&
'DWD
6WRUH
):
,QWHUQHW
,QWHUQHW
,QWUDQHW
,QWUDQHW
):
$JHQWHQ
,QWUDQHW
576HUYHU
'6&
'LVWULEX WLRQ
6HU YHU
&RQILJXUDWLRQ
0DQDJ HU
576HUYHU
):
(UVWZHJ
$JHQWHQ3RU WV
576HU YHU3RUWV
'6 :DNHXS3RUW
6HUYLFH5HSR UWLQ J
Abb.1: Die PATROL 7 Architektur bei der T-Systems.
Firewall zuständig. Beim Ausfall eines RT-Servers übernimmt der
andere die Agenten, Konsolen und den Console Server des anderen PATROL Base Reporting.
Firewall
Um die oben genannten Produkte und den damit verbundenen
Dienst in einer Firewall-Umgebung einzusetzen, ist es notwendig,
eine Reihe von Netzwerkports freizuschalten.
Jeder Dienst verfügt über eine eigene, virtuelle IP-Adresse, sodass
nach der eventuellen Verlagerung des Dienstes auf einen anderen Server keine Anpassungen in der Firewallkonfiguration notwendig sind.
Agenten und Konsolen
Agenten und Konsolen kommunizieren mit dem Console Server
über RT-Server. Da die Verbindung jeweils von der Konsole, dem
Agenten und dem Console Server aufgebaut wird, ist es notwendig, dass sich alle diese Komponenten direkt mit einem RT-Server verbinden.
Um die Kommunikation durch die Firewall zu ermöglichen, muss
der von den RT-Servern verwendete Port in der Firewall freigeschaltet werden. Die RT-Server auf den verschiedenen Seiten der
Firewall müssen so konfiguriert werden, dass sie eine „RT-Server-Wolke“ bilden.
6
Distribution Server
Die Kommunikationswege zwischen dem Distribution Server und dem Distribution Client
müssen freigegeben werden. Es handelt sich
um die Ports für:
• Installation des Distribution Clients, Richtung Distribution Client
• den „wake up“ Port, Richtung Distribution
Client
• den „antwort“ Port, Richtung Distribution
Server
Configuration Manager
Der Configuration Manager benutzt den Agentenport, um die Konfigurationen auf den Agenten zu verteilen bzw. von den Agenten zu holen. Dieser Port ist in beide Richtungen freigeschaltet. Es ist also der vom PATROL Agenten verwendete Port vom Rechner mit dem
Configuration Manager zu allen Agenten frei
zu schalten.
Notification Server
Der Weg von den Agenten zum Notification
Server muss freigeschaltet werden. Ebenso
System Management
muss der Kommunikationsport zwischen den
RT-Servern und den Agenten in beide Richtungen freigeschaltet sein.
Teilweise stößt diese Vorgehensweise bei
Kunden auf Unverständnis und lässt die Frage nach dem Sinn der RT-Server aufkommen.
Zuerst installiert man die RT-Server, um die
Kommunikation zwischen den PATROL Komponenten zu vereinheitlichen. Beim Einsatz
des Notification Servers, des Configuration
Managers und des Distribution Servers müssen aber zusätzlich noch weitere Ports in der
Firewall freigeschaltet werden. Es bleibt zu
hoffen, dass BMC dieses Manko schnell beseitigt und die Kommunikation aller Komponenten auch über den RT-Server ermöglicht.
Softwareverteilung mit dem Distribution
Server
Die neue Software wird in den Distribution Server importiert und zu einer Collection zusammengefasst. Die importierten Softwarekomponenten verfügen meistens über eine Installationsroutine, die bei der Konfiguration der
Collection durchgeführt wird. So entsteht ein
so genanntes Image für die neue Software,
das später auf dem Zielrechner installiert wird.
Hauptproblem:
Installation des Distribution Clients
Das Hauptproblem beim Distribution Server
liegt in der Installation des Distribution Clients.
tigungen und Profile zugeordnet. Dann wird die Installation des
Clients gestartet. Während der Installation bekommt der Client
die Informationen mitgeteilt, bei welchem Distribution Server er
sich melden soll.
Nach der erfolgreichen Installation meldet sich der Client beim
Distribution Server und kann registriert werden.
Sind alle Distribution Clients bereit, können die zu installierenden
Rechner zu einer Gruppe zusammengefasst werden. Bei der Definition einer „Distribution“ wird festgelegt, welche Softwarekomponenten/Images zu welcher Zeit auf die Zielrechner einer Gruppe verteilt werden. Die Verteilung kann über die Reports verfolgt
werden.
Konfigurationsverteilung mit dem Configuration Manager
Es gibt leider keinen Mechanismus, der es ermöglicht, die in den
Distribution Server eingepflegten Agenten in den Configuration
Manager zu übernehmen. Die Agenten müssen daher im Configuration Manager nochmals manuell erfasst werden. Ab Version
1.5.00 gibt es allerdings die Möglichkeit, Agenten im Netzwerk
bzw. im Subnetz suchen zu lassen und in den Configuration Manager zu übernehmen.
Gruppierung der Agenten
Die Struktur des Configuration Managers wurde analog zum Reiter „Systems“ im Distribution Server gestaltet und verfeinert, da
spezifische Anforderungen je System für die KMs notwendig sind.
Bei der Gruppierung der Agenten im Configuration Manager wurden die im Distribution Server verwendeten Gruppen des Reiters
„Systems“ als Basis genommen und entsprechend den Anforderungen der einzelnen Rechner verfeinert.
In der Praxis hat sich die folgende Vorgehensweise bewährt: Wenn auf dem Rechner schon
ein PATROL Agent installiert ist, wird der Distribution Client über den PATROL Agenten installiert. Ist der Distribution Server auf dem
gleichen Rechner installiert wie der Configuration Manager, sind die Ports zu den Agenten schon freigeschaltet und können auch vom
Distribution Server verwendet werden.
Verschiedene RuleSets wurden definiert:
Manuelle Installation
Die Verteilung von Agentenkonfigurationen erfolgt nur über den
Configuration Manager. Auch das Customizing der Parameter erfolgt ausschließlich über den Configuration Manager. Die Änderungen der Parameter durch Konsolen sind nicht zugelassen.
Dadurch ist sichergestellt, dass alle Konfigurationseinstellungen
und Parameteranpassungen von einer zentralen Stelle aus vorgenommen werden und somit auch dokumentiert sind.
Ist noch kein Agent installiert, muss überlegt
werden, ob eine manuelle Installation des Distribution Clients einfacher ist als eine Installation durch den Distribution Server. Für diese
Installation ist es notwendig, einige Voraussetzungen auf dem Zielrechner zu schaffen.
Es muss der Zugang mit sftp und ssh oder ftp
und telnet auf den Zielrechner möglich sein.
•
•
•
•
•
•
Liste der RT-Server
Informationen über den Notification Server
Konfiguration für den Notification Server
Grundeinstellungen für die Unix bzw. Windows Agenten
Grundeinstellungen für die Oracle Überwachung (Produktion
und Testumgebung)
Konfigurationen für BEA Weblogic usw.
Und ...
Die Softwareverteilung
nachdem diese Maßnahmen alle umgesetzt wurden, konnte die
PATROL Überwachung erfolgreich in den Produktivbetrieb gehen!
Die neu zu installierenden Agenten werden als
erstes in den Distribution Server eingepflegt.
Sie bekommen entsprechende Zugriffsberech-
Irina Hochhalter und Holger Demuth ([email protected]).
7
Datenbanken - Titelthema Oracle 10g
Oracle 10g (Teil III):
Tanz den REORG
Reorganisation ist ein immer wiederkehrendes Thema bei Datenbanken und wird aus unterschiedlichen Gründen notwendig. Wichtig beim Durchführen von Reorganisationen sind Dauer und gegebenenfalls damit verbundene Einschränkungen für den Betrieb der Datenbank. In diesem Artikel stellen wir Ihnen zwei neue
Features von Oracle 10g vor und zeigen deren Einsatzmöglichkeiten.
Die Features
Wichtigstes Merkmal beider Reorganisationspraktiken ist, dass
sie online durchgeführt werden können, ohne dass ein exklusiver
Tabellenzugriff gewährleistet sein muss.
Die Möglichkeiten 1 - 3 setzen voraus, dass
die Tabelle exklusiv für die Reorganisation zur
Verfügung steht. Sprich: Parallel im Hintergrund
laufende DML- oder DDL Statements müssen
ausgeschlossen werden. Die vierte Möglichkeit
wurde mit Oracle 9i eingeführt und hebt diese
Einschränkung auf. Während der Reorganisation kann auf der zu reorganisierenden Tabelle ohne Einschränkungen weitergearbeitet
werden. Das genaue Vorgehen hierbei führt
uns zum nächsten Schritt.
Ausgangsstellung
Step Two: „Jive – Viele Schritte pro Takt“
Hauptgründe für die Reorganisation einer Tabelle sind meistens
schlechter Blockfüllgrad und/oder migrierte Datensätze. Die Ursachen hierfür liegen z. B. bei einer zu geringen Oracle Blockgröße
oder schlecht gewählten Storage Parametern bis hin zu stark flukturierenden Tabelleninhalten (ständige insert- und delete-Befehle).
Dies sind nur einige Beispiele für die zuvor genannten Indizien. So
wird mit der Zeit der Ruf nach Reorganisation immer lauter.
Abbildung 1 zeigt das Vorgehen bis Oracle 9i
beim Einsatz von dbms_redefinition. Zunächst wird eine leere Tabelle T1X erzeugt,
die den gleichen Aufbau wie die zu reorganisierende Tabelle T1 besitzt. Dann wird über
dbms_redefinition.start_redef_table
automatisch eine Log-Tabelle erstellt, die alle
parallel auftretenden DML Operationen auf der
Tabelle T1 protokolliert.
Während dbms_redefinition schon in Oracle 9i vorhanden war,
ist Segment Shrink ein neues Feature. dbms_redefinition
wurde für Oracle 10g erweitert und hilft dem DBA bei der Reorganisation von Tabellen. Das Feature Segment Shrink wird bei der
Reorganisation für die Defragmentierung von Segmenten genutzt.
Step One: „Slow Fox – Ein langsamer Schritt, zwei Schnelle“
Folgende Möglichkeiten standen dem DBA für die Reorganisation
bisher zur Verfügung:
1. Ex- und Import der Tabelle mit manueller Anpassung der
Storageparameter
2. create table as select – Statement
3. alter table move – Statement
Seit Oracle 9i wurden diese Möglichkeiten um eine vierte erweitert:
4. Der Einsatz des Packages dbms_redefinition
Gleichzeitig wird damit begonnen, sämtliche
Daten aus der Tabelle T1 in die Tabelle T1X zu
kopieren. Hierfür muss natürlich ausreichend
Speicherplatz im Tablespace vorhanden sein.
Als nächstes greift der Administrator ein, denn
sämtliche Objekte, die von der Tabelle T1 abhängig sind, müssen nun manuell für die Tabelle T1X erstellt werden. Dies ist die größte
Stolperfalle und gleichzeitig der Grund, weshalb viele DBAs diesen „Ausfallschritt“ nicht
setzen und stattdessen auf alte Methoden zurückgreifen. Durchaus verständlich, wenn man
bedenkt, welcher Aufwand für eine Tabelle dabei betrieben werden muss: Feststellen, welche Objekte direkt von der Tabelle T1 abhängig sind, Erstellen dieser abhängigen Objekte (Synonyme, Trigger, Indizes, Grants) und
Kontrolle der durchgeführten Arbeiten, um ja
kein Objekt zu vergessen.
Sicherlich können Skripte und der Einsatz von
dbms_metadata die Zeit verkürzen, aber der
Aufwand für n-Tabellen ist weiterhin relativ hoch.
Abb. 1: Vorgehen beim Einsatz von rdbms_redefinition bis Oracle 9i.
8
Diese Objekte müssen mit neuen Namen versehen werden, da die Namen eines Objekttyps im
Schema eindeutig sein müssen.
Datenbanken
Abschließend wird die Reorganisation über
dbms_redefinition.finish_redef_table
abgeschlossen. Hierbei werden die DML Operationen aus der Log-Tabelle nachgefahren
und die Namen der zu reorganisierenden Tabelle (T1) und der reorganisierten Tabelle (T1X)
getauscht. Hierfür wird für einen sehr kurzen
Zeitraum ein DML-Lock auf beide Tabellen gesetzt. Anschließend kann die Tabelle T1X gelöscht werden. Damit ist die Reorganisation
abgeschlossen.
Warum nicht automatisch?
Nun stellt sich berechtigterweise die Frage,
aus welchem Grund Oracle nicht automatisch
alle abhängigen Objekte erzeugt, damit der
DBA an dieser Stelle nicht manuell eingreifen
muss. Die Informationen hierfür stehen schließlich im Data Dictionary. Genau dies wird jetzt
mit Oracle 10g ermöglicht: mit der Prozedur
dbms_redefinition.copy_table_dependents
Abb. 2: Die Abfolge der aufzurufenden Prozeduren unter Oracle 10g.
Diese Prozedur erstellt alle von einer Tabelle
abhängigen Objekte und erleichtert so den Umgang mit dem Package dbms_redefinition
um ein Vielfaches. Abbildung 2 zeigt nun die
Abfolge der aufzurufenden Prozeduren unter
Oracle 10g.
Step Three: „Quickstep – Schnelle,
dynamische Bewegungen“
Eine weitere Möglichkeit, eine Online-Reorganisation vorzunehmen, ist das „Segment
Shrink“. Mit Hilfe von Segment Shrink können
Daten in einer Tabelle verdichtet und die High
Water Mark zurückgesetzt werden.
Voraussetzung für den Einsatz dieser neuen
Technik ist die Verwendung von „Automatischem Segment Space Management“, kurz
ASSM (siehe ORDIX News 2/2003, S. 20). Da
bei dem Vorgang des Verdichtens die ROWIDs
verändert werden, muss die entsprechende
Tabelle über den Befehl ALTER TABLE tab
ENABLE ROW MOVEMENT; hierfür vorbereitet
werden. Für das Segment Shrink wurde der
ALTER TABLE Befehl in der Syntax erweitert:
ALTER TABLE tab SHRINK SPACE COMPACT;
bzw.
ALTER TABLE tab SHRINK SPACE CASCADE;
Beide Befehle führen dazu, dass die Daten in
vordere, nicht vollständig gefüllte Blöcke verdichtet werden. Im Falle von SPACE COMPACT
bleibt die High Water Mark am alten Platz. Es
werden also keine Extents freigegeben. Im
Falle CASCADE wird die High Water Mark auf
den tatsächlich letzten, belegten Block gesetzt. Frei gewordene Extents werden zurück-
Abb. 3: Unterschiede zwischen SHRINK COMPACT und SHRINK CASCADE.
gegeben. Die Funktionalität wird intern mittels Insert/Delete ohne
Auslösen von Triggern durchgeführt (siehe Abbildung 3). Dieses
wird durch ein implizites ALTER TABLE enable/disable all
triggers gewährleistet.
Was ist nun der Sinn der Funktionalität COMPACT?
Bei ASSM wird bei einem Full Table Scan nur bis zur Low High
Water Mark gelesen. Die High High Water Mark ist hier irrelevant.
Die Low High Water Mark ist der tatsächlich letzte Block, also
derselbe Block, wie im Falle CASCADE. COMPACT sollte also verwendet werden, wenn davon ausgegangen werden kann, dass
der freie Platz in kurzer Zeit wieder belegt wird.
Fazit
Die Erweiterung von dbms_redefinition war überfällig und macht
erst jetzt das Paket wirklich einsetzbar. Segment Shrink bietet eine
neue, sehr einfache Möglichkeit, eine Tabelle zu defragmentieren.
Beide Reorganisationspraktiken sind online durchführbar, um den
Anwendern beim Reorg-Tanz nicht auf „die Füße zu treten“.
Michael Lindermann ([email protected]).
9
Unix/Linux/Open Source
Serverkonsolidierung der etwas
anderen Art
Wenn der Begriff Serverkonsolidierung fällt, denkt man in der Regel an große Systemkonfigurationen, bei
denen eine Menge von Anwendungen auf einem partitionierbaren System zusammengefasst werden. Nicht
selten findet man dann Systeme wie PRIMEPOWER 2500, Sun Fire E25K oder IBM pseries 690. Serverkonsolidierung kann aber schon in viel kleinerem Rahmen stattfinden. Der Artikel beschreibt die Konsolidierung einer Kunden-DMZ (DMZ = demilitarisierte Zone), bei der die ORDIX AG mitwirkte.
Die Ausgangssituation:
Eine schnell gewachsene Webserver-Farm
•
Zentraler Storage
Durch einen zentralen, externen Storage
sollen Speicherplatz-Engpässe flexibler
behoben werden können. Eine jeweils lokale Plattennachrüstung entfällt. Die zentrale Datenhaltung ist weiterhin für die
Hochverfügbarkeit der Anwendung von
großer Bedeutung.
•
Skalierbarkeit
Steigende Anforderungen sollen durch
Auf- oder Nachrüstung möglich sein, ohne
dass die anderen Ziele davon betroffen
sind.
•
Stabilität
Die Lösung sollte insbesondere für die
wichtigen, zentralen Komponenten Stabilität garantieren.
•
Kosten
Die bisher genannten Ziele müssen so weit
wie möglich mit geringen Kosten realisiert
werden. Daher ist der Einsatz von Open
Source Lösungen wie auch von preisgünstiger Hardware zu prüfen.
Zur Realisierung der Internetpräsenz (bestehend aus ca. 50 Internetangeboten) wurde eine Vielzahl von unterschiedlichen Systemen mit jeweiligen Datenbank- und http-Prozessen eingesetzt.
Als Plattform diente eine heterogene Rechnerlandschaft, bestehend aus ca. 25 Systemen auf Basis von Linux und Solaris.
Die Datenhaltung erfolgte ebenfalls mit unterschiedlichen Datenbank Systemen (Oracle, MySql, PostgreSql). Eine Hochverfügbarkeit der einzelnen Dienste war nicht gewährleistet.
Der Ausfall eines Internetangebots hätte nicht ohne größere Ausfallzeiten abgefangen werden können, was zu einem entsprechenden Image-Verlust geführt hätte. Wie viele Webserver-Farmen,
ist auch diese im Laufe der Jahre „unkontrolliert“ und mit vielen „Insel-Lösungen“ gewachsen.
Primäres Ziel war bisher die möglichst schnelle Bereitstellung eines Webdienstes. Administrationskosten, leichte Pflegbarkeit,
Backup- und Verfügbarkeit spielten bis dato eher eine untergeordnete Rolle.
Die Ziele
Aus dieser etwas unbefriedigenden Situation haben die Mitarbeiter der ORDIX AG in Zusammenarbeit mit dem Kunden folgende
Ziele festgelegt:
•
Hochverfügbarkeit
Der Ausfall einer Hardware-Komponente darf nicht zum Ausfall einer Internetpräsenz führen.
•
Lastverteilung
Bei Bedarf und erhöhter Nachfrage müssen entsprechende
Kapazitäten zur Verfügung stehen, die vom Internet-Anwender
transparent genutzt werden können. Es soll verhindert werden, dass einige Systeme unter Volllast laufen, während andere „unterbeschäftigt“ sind.
•
10
Verringerung der Serveranzahl
Weniger Systeme, die – wenn möglich – identisch aufgebaut
sind, sollen zu einer Minimierung der administrativen Aufgaben führen.
Die Analyse erbrachte eine logische
Aufteilung
Im ersten Schritt haben die ORDIX Mitarbeiter die Struktur der einzelnen Anwendungen
analysiert, woraufhin sie dann die Internet-Angebote in zwei Basisdienste aufteilten:
•
http-server
Die meisten Webdienste wurden auf Basis des Apache-Servers betrieben. Die
Datenhaltung erfolgt nicht auf lokalen
Filesystemen, sondern auf einer Datenbank. Dadurch ist es möglich, die Webserver parallel zu betreiben, was das Erreichen des Ziels „Loadbalancing“ vereinfacht.
Unix/Linux/Open Source
Durch den Loadbalancer wird ebenfalls eine gewisse Hochverfügbarkeit garantiert, da dieser bei Ausfall eines Blades die Anforderungen an einen anderen, laufenden Blade mit gleicher Anwendung weiterreicht. Um trotz eines Ausfalls eines gesamten Rechenzentrums die Verfügbarkeit zu garantieren, sind die beiden Enclosures (die die Blades enthalten) in unterschiedlichen Gebäuden
aufgestellt worden.
... und Datenbankserver.
Zur einfacheren Administration werden ebenfalls alle Datenbanken zentral unter Oracle auf einem System zusammengeführt. Eine
Parallelisierung wie bei den Linux-Blades ist an dieser Stelle nicht
möglich.
Auf Grund der zentralen Funktion (und somit der Möglichkeit des
Single Point of Failure) erhöht sich die Anforderung an die Verfügbarkeit. Der Einsatz eines Clusters mit stabilen und redundanten
Komponenten ist hier unbedingt notwendig:
Abb. 1: Die Systemarchitektur beim Kunden
nach der Konsolidierung.
•
Datenbank
Alle veränderbaren Daten der Webdienste
werden auf jeweils eigenen Datenbanken
gehalten.
... in Webserver
Durch den Einsatz von „gleich aussehenden“
Linux-Blades (mit SLES 8) wird eine vereinfachte Administration der Systeme erreicht. Auf den
Blades befinden sich nur „Betriebssystem-Komponenten“, die für den Einsatz der Webanwendungen notwendig sind. Die Blades können
jederzeit durch einen zentralen „InstallationsBlade“ automatisch und identisch eingerichtet bzw. vervielfältigt werden.
Die Webanwendungen selbst befinden sich
auf einem zentralen Storage (NAS) und werden von den einzelnen Linux-Blades eingebunden. Durch entsprechende Start-/StoppSkripte ist es möglich, jede Anwendung auf
jedem Blade laufen zu lassen.
Durch einen vorgeschalteten Loadbalancer
(BigIP) wird die geforderte Skalierbarkeit erreicht. Engpässe können durch das einfache
Hinzufügen eines weiteren Blades überbrückt
werden.
•
Zwei Sun Fire Server bilden jetzt die beiden Zwei-Knoten-Cluster. Betriebssystemmäßig ist die Entscheidung für Solaris 8
gefallen.
•
Die Datenbanken selbst werden in einem externen SAN-Storage abgelegt. Die eingesetzte EMC-Box ist über Fibre Optik
redundant angeschlossen.
•
OSL Storage Cluster: Auch bei der Auswahl des Clusters ist
von den großen und bekannten HV-Lösungen (wie z. B. VeritasCluster, Sun-Cluster, PrimeCluster, ...) Abstand gehalten worden.
Ziel war es, eine Lösung zu finden, die einerseits kostengünstig
ist (Lizenz und Wartung), anderseits aber auch die geforderte
Stabilität und Robustheit liefert. Um den Administrationsaufwand gering zu halten, sollte sich die Lösung auf die reine
Systemverfügbarkeit konzentrieren. Die Entscheidung fiel auf
den OSL Storage Cluster, der auch gleich einen Volume Manager beinhaltet.
Fazit
Die ORDIX AG hat in diesem Projekt maßgeblich sowohl in beratender als auch in ausführender Funktion mitgewirkt. Von der Konzepterstellung, über die Auswahl der einzelnen Komponenten bis
hin zur Durchführung der Konsolidierung haben die ORDIX Mitarbeiter ihren Kunden begleitet.
Bei der Realisierung der Systemarchitektur wurde eine Referenzanwendung ausgewählt, die von ORDIX komplett auf die neuen
Systeme installiert und migriert wurde. Die restlichen Anwendungen werden nun schrittweise vom Kunden selbst in die neue, konsolidierte Welt umgestellt.
Antonio Salguero ([email protected]).
11
Datenbanken
Dokumentieren mit PLDoc
Dokumentieren ist ja bekanntlich nur etwas für Warmduscher und Hotel-Fluchtplan-Leser. Für eingefleischte
Hardcore-Programmierer bietet das Open Source Werkzeug PLDoc die Möglichkeit, HTML Dokumentationen
aus PL/SQL Programmen zu generieren.
Pate für das Open Source Projekt stand das viel genutzte Javadoc.
Mit ihm ist es möglich, direkt aus dem Programmcode eine Dokumentation zu generieren. Der Programmierer muss mittels spezieller Schlüsselwörter innerhalb der Kommentare des Programmtextes eine Beschreibung von Prozeduren, Funktionen, Parametern und Variablen hinterlegen. Das Programm PLDoc untersucht
den Programmcode und generiert daraus eine anschauliche Dokumentation auf Basis von HTML.
Wie geht’s
Kommentiert kann innerhalb oder außerhalb der PL/SQL Pakete
werden. Der Autor bevorzugt die Kommentierung im Programmcode selbst, so dass dieser nicht verloren gehen kann. Von den
zahlreichen Varianten und Schlüsselwörtern stellt dieser Artikel
eine exemplarische Auswahl vor.
Die Dokumentation von PL/SQL Paketen findet grundsätzlich im
Package Header statt. Der Package Body lässt sich nicht einbinden.
Das Listing 1 zeigt die Dokumentation einer Paket Spezifikation,
welche mit dem Schlüsselwort @headcom abgeschlossen wird.
Das Listing 2 zeigt die wichtigsten Schlüsselwörter zur Beschreibung von Prozeduren und
Funktionen.
Diese sind
@param zur Dokumentation von Übergabeparametern,
• @return für die Beschreibung des Return
Wertes bei Funktionen und
• @throws zur Bekanntmachung von Exceptions.
•
Besonders Vorteilhaft ist die Möglichkeit, in der
Dokumentation selbst HTML Code zu verwenden. So lassen sich einzelne, wichtige Wörter wie commit farblich markieren oder die
Änderungshistorie als Tabelle darstellen (siehe auch Listing 1).
Los geht’s
Mit dem folgenden Aufruf wird die Dokumentation schließlich generiert:
CREATE OR REPLACE PACKAGE PCK_APP_PIPELINE AS
/**
* Paket zur Generierung von laufenden Werten
* <ul>
* <li> get_dates, um eine Reihe von Datumswerten zu generieren </li>
* <li> get_timestamps, um eine Reihe von Timestamps zu generieren </li>
* <li> get_numbers, um eine Reihe von numerischen Werten zu generieren </li>
* </ul>
*
* <table border>
* <tr>
* <th> Version </th><th> Datum </th><th> Autor</th><th> Beschreibung </th>
* </tr>
* <tr>
* <td> 1.0 </td>
* <td> 21.04.2004</td>
* <td><a href="mailto:[email protected]">M. Hoermann</a>
*
<a href="http://www.ordix.de">ORDIX AG</a> </td>
* <td> Initial </td>
* </tr>
* </table>
*
* @headcom
*
*/
Listing 1: Die Dokumentation einer Paket Spezifikation, die mit dem
Schlüsselwort @headcom abgeschlossen wird.
Abb. 1: Ergebnis der Dokumentation aus Listing 1.
12
Datenbanken
/** Funktion liefert eine Reihe von Datumswerten. Beim Aufruf mit
*
* <code> pck_app_pipeline.get_dates( sysdate, 5, 2 ); </code>
*
* werden 5 Datumswerte, beginnend mit Heute aufsteigend in 2 Tagesschritten generiert.
*
* @param p_start_datum Startwert
* @param p_return_werte Anzahl der zu generierenden Werte
* @param p_inkrement Anzahl Tage zwischen zwei generierten Werten
* @return type_date im Format TABLE OF DATE
* @throws pck_errnums.c_abbruch Generische Exception, siehe Fehlerstack.
*
*/
FUNCTION get_dates
( p_start_datum IN DATE,
p_return_werte IN NUMBER,
p_inkrement IN NUMBER
)
RETURN type_date PIPELINED;
Listing 2: Die wichtigsten Schlüsselwörter zur
Beschreibung von Prozeduren und Funktionen.
Abb. 2: Ergebnis der Dokumentation aus Listing 2.
pldoc -d doku -doctitle Project \
-overview main.html pipeline.sql
Die Option –d legt das Verzeichnis fest, in dem
die HTML Dokumente generiert werden. Die
Option –doctitle legt, wie sich leicht erraten lässt, die Überschrift der Dokumentation
fest. –overview legt eine optionale Startseite
fest und der letzte Parameter gibt die Datei
oder die Dateien mit dem dokumentierten Programmcode an.
Das Listing 3 zeigt die Rückgabe des Programmaufrufs. Die Abbildungen 1 und 2 zeigen das Ergebnis der Dokumentation aus
Listing 1 und 2.
Quelle und Installation
Das Programm PLDoc liegt momentan in der
Version 0.8.2 vor. Die 2,6 MB große Installationsdatei pldoc-0.8.2.zip beinhaltet alle
notwendigen Programme und die Dokumentation.
Die jeweils aktuellste Version ist unter der
Adresse
http://pldoc.sourceforge.net/ zu
finden.
Die Installation gestaltet sich ausgesprochen
einfach. Auf dem Rechner muss die Java
Runtime Version 1.2 vorhanden sein. Anschließend ist die ZIP Datei zu entpacken und
los geht’s.
Eine gute Dokumentation wird in der ZIP Datei direkt mitgeliefert.
PLDoc version: 0.8.2
Parsing file M:\changes\aktuell\pipeline.sql ...
Generating HTML files ...
Generating summary.html ...
Generating allpackages.html ...
Generating index.html ...
Generating <unit>.html ...
Done (20.484 seconds).
Listing 3: Die Rückgabe des Programmaufrufs.
Fazit
Das Programm liefert auch bei mehreren Dutzend PL/SQL Paketen und mehreren tausend Zeilen Programmcode in weniger als
einer Minute eine gut strukturierte Dokumentation. Dies allerdings
nur auf Englisch.
Daneben ermöglicht auch die Dokumentation von SQL*Plus Skripten die Verwendung eigener Style Sheets (CSS) und vieles mehr.
Schön wäre es, wenn auch der Code selbst eingebunden werden
könnte. Dies entspricht aber nicht dem Konzept von javadoc und
ist daher auch nicht Bestandteil von PLDoc.
Für den Inhalt der Dokumentation ist nach wie vor der Programmierer verantwortlich, der hoffentlich kalt geduscht hat und mit
kühlem Kopf auch schwierige Sachverhalte anschaulich zu beschreiben weiß.
Martin Hoermann ([email protected]).
13
Unix/Linux/Open Source - Titelthema VMware ESX Server
Serverkonsolidierung im Rechenzentrum mit dem VMware ESX Server – Ein Erfahrungsbericht
Virtuelle Maschinen in der Praxis
In der Ausgabe 4/2002 stellten wir Ihnen die Produkte der Firma VMware vor. Anhand eines Projekterfahrungsberichts wollen wir Ihnen heute zeigen, wie Sie mit dem „VMware ESX Server“, der High-End Variante der
VMware Produktlinie, mehr Effizienz in Ihr Rechenzentrum bringen und damit die Betriebskosten deutlich
reduzieren können.
Ausgangslage
Eine GP7000 mit SunOS 5.7 hatte fast drei Jahre als Datei- und
Datenbankserver gedient. Jetzt aber rückte das Ende des Leasingvertrages immer näher und eine Ablösung des Systems stand
bevor. Eine Entscheidung war zu treffen.
Alternativen
Für die Ablösung der GP7000 wurden drei Alternativen in Betracht
gezogen:
1. Ein neues SPARC-System (Primepower) mit SunOS 5.9
2. Ein hochverfügbarer Linux Cluster mit zwei SUSE Linux Enterprise Servern 8
3. Ein VMware ESX Server inklusive SUSE Linux Enterprise Server 8 als virtuelle Maschine
Die reinen Anschaffungskosten für die drei Varianten waren in etwa
gleich, so dass andere Kriterien zur Entscheidungsfindung herangezogen werden konnten.
Die Entscheidung
Folgende Punkte waren ausschlaggebend bei der Entscheidung
für den ESX Server:
Der Anteil der Windows Systeme an der Serverlandschaft ist in
diesem Rechenzentrum (RZ) recht hoch (ca. 70 %). Die Entscheidung für den ESX Server sorgt dafür, dass deutlich mehr Systeme von der bevorstehenden Hardware-Investition profitieren können und nicht nur der File- und DB-Server. Das Management kann
sich somit über einen besseren Return on Investment freuen und
die Benutzer über bessere Performance, auch bei den WindowsSystemen.
Des Weiteren besteht ein hoher Bedarf an Testsystemen für unterschiedliche Einsatzgebiete. Bisher wurden zu diesem Zweck in
der Regel ausrangierte Rechner „wiederbelebt“. Dies ist allerdings
mit hohem Aufwand verbunden und macht den Benutzern wegen
der typischerweise nicht gerade zeitgemäßen Ausstattung auch
wenig Freude.
Die räumlichen Kapazitäten im RZ waren zudem bereits weitestgehend ausgereizt. Eine Erweiterung der Systemlandschaft bedingte somit in naher Zukunft eine Ausweitung der Räumlichkeiten, was mit erheblichem Aufwand verbunden wäre.
Nebenbei konnten auch etliche Client-Lizenzen für die Notstromversorgung eingespart werden, da die virtuellen Maschinen keine
eigene Anbindung an die USV benötigen.
14
VMware ESX Server
Der ESX Server ist das Flaggschiff der
VMware Produktlinie. Es handelt sich hierbei um ein speziell für den Einsatz als VMware Server angepasstes Linux System,
welches direkt auf der eingesetzten Hardware installiert wird.
Die Vorteile gegenüber dem GSX Server,
welcher als „normale“ Applikation auf einem gegebenen Betriebssystem installiert
wird, sind insbesondere die bessere Performance sowie die erheblich erweiterten
Möglichkeiten zur Ressourcenkontrolle.
Realisierung
Nach der Installation und Konfiguration des
ESX Server wurde eine virtuelle Maschine als
Datei- und Datenbankserver eingerichtet und
mit dem SUSE Linux Enterprise Server 8 bespielt. Die ORDIX AG beriet und unterstützte
bei der Installation des Basissystems sowie
bei der Migration der Oracle Datenbanken und
der mittels Samba bereitgestellten Anwenderdaten. Dabei wurde nebenbei auch gleich die
Samba-Authentifizierung vom alten NT-Domain Controller auf das neue Active Directory
umgestellt.
Nur drei Wochen nach der Lieferung der neuen Hardware konnte die alte GP7000 abgeschaltet werden. Der ESX Server läuft nun seit
ca. 8 Monaten, wobei mittlerweile 9 physikalische Systeme in eine virtuelle Maschine umgewandelt wurden. Insgesamt laufen zur Zeit
13 virtuelle Maschinen auf dem Server (9 x
Windows, 4 x Linux). Weitere Migrationen sind
geplant, denn das System ist bei weitem noch
nicht am Limit.
Was hat es gebracht?
Die Entscheidung für den ESX Server wurde
zunächst nicht von allen Mitarbeitern des Rechenzentrums begrüßt. Skepsis gegenüber
der neuen Technologie war deutlich zu spü-
Unix/Linux/Open Source
Mit dem ESX Server lassen sich die
Betriebskosten deutlich reduzieren,
wenn Sie ...
•
•
•
•
großen Bedarf an Test- und Entwicklungssystemen haben.
z. B. in Schulungsumgebungen viele
unterschiedliche Systeme zur Verfügung stellen müssen.
in einer heterogenen (Intel-)Systemlandschaft viele Einzelsysteme zu betreuen haben, die nur temporär ausgelastet sind.
räumliche Erweiterungen des Rechenzentrums durch die Konsolidierung vermeiden können.
ren. Die guten Erfahrungen nach der Einführung haben jedoch mittlerweile dafür gesorgt,
dass die Entscheidung sowohl vom Management als auch von den Administratoren durchweg positiv eingeschätzt wird.
Laut internem Controlling wurde eine Amortisierung der Investition bereits nach 6 Monaten bzw. nach Ablösung zehn physikalischer
Systeme durch eine virtuelle Maschine erreicht. Von den Systemverwaltern hingegen
wird insbesondere die neue Flexibilität geschätzt. Die Bereitstellung eines Testsystems reduziert sich z. B. nun auf ein paar „Klicks“
in der Administrationsoberfläche.
Die andere Seite der Medaille
Natürlich hat auch die VMware-Medaille zwei Seiten. Es sollte
bedacht werden, dass ein Ausfall des ESX Servers den Ausfall
aller virtuellen Maschinen zur Folge hat. Das System muss also
auf höchste Verfügbarkeit ausgelegt werden. Zum anderen muss
im Zweifelsfall geprüft werden, ob die eingesetzten Betriebssysteme und Anwendungen vom Hersteller für den Betrieb in einer
virtuellen Maschine freigegeben sind, um Supportansprüche geltend zu machen. Viele große Hard- und Softwarehersteller (z. B.
IBM, HP, Microsoft, Oracle, ...) arbeiten jedoch bereits seit einiger
Zeit mit VMware zusammen, so dass hier nur im Einzelfall Probleme auftreten sollten.
Fazit
Das vorgestellte Praxisbeispiel macht deutlich, dass durch den
Einsatz eines VMware ESX Servers sowohl Kostensenkungen als
auch erhebliche Effizienzsteigerungen realisiert werden können.
Die Voraussetzungen waren in dem Szenario allerdings auch
nahezu ideal. Ob sich diese Investition auch in Ihrem Rechenzentrum bezahlt macht, muss im Vorfeld sorgfältig analysiert werden.
Die ORDIX AG unterstützt sie dabei gerne von der Kalkulation bis
zur Realisierung.
Christof Amelunxen ([email protected]).
Seminarvorstellung: Linux Hochverfügbarkeits-Cluster
Der Teilnehmer lernt Grundlagen der Hochverfügbarkeit und der Clustertechnologie kennen sowie deren praktische Umsetzung am
Beispiel der Linux High Availability Software
(heartbeat) und dem Linux Virtual Server Project.
Zielgruppe
Systemadministratoren.
Seminarinhalte
•
Überblick GRID-Computing
•
Grundlagen der Hochverfügbarkeit
•
Grundlagen der Clustertechnologie
•
Logical Volume Management unter Linux (RAID, LVM)
•
Hochverfügbarkeitslösungen unter Linux
•
Linux High Availability Projekt
- Installation
- Konfiguration
- Failover-Szenarien
- Storage-Szenarien
- Monitoring
- Diagnose und Troubleshooting
•
Linux Virtual Server
- Loadbalancing allgemein
- Konzept der LVS
- Installation
- Loadbalancing für eine Webserver Farm mit LVS
- Monitoring
- Diagnose und Troubleshooting
•
Übungen
Voraussetzungen
Gute Unix Kenntnisse.
Dauer: 4 Tage
Kursgebühr/Teilnehmer: 1.390 € zzgl. MwSt.
Termine
21.02. - 24.02.2005 in Wiesbaden
06.06. - 09.06.2005 in Wiesbaden
05.09. - 08.09.2005 in Wiesbaden
21.11. - 24.11.2005 in Wiesbaden
15
Aktuell - Titelthema Neues von Vorstand und Aufsichtsrat
Neues Mitglied im
Vorstand der ORDIX AG:
Benedikt Georgi
Zum 1.1.2005 verstärkt Benedikt Georgi (44) den Vorstand der ORDIX AG.
Herr Georgi wird verantwortlich sein für Vertrieb, Marketing und Projektmanagement.
In seinem beruflichen Werdegang hat er jeweils zur Hälfte für IT-Dienstleister und IT-Anwender gearbeitet. Die Erfahrungen auf der Kunden- und
Lieferantenseite sind für ihn wichtig und er will sie gewinnbringend in die ORDIX AG einbringen.
Wichtige berufliche Stationen
Zukünftigen Aufgaben des Benedikt Georgi
Benedikt Georgi, in Bremen aufgewachsen, studierte Informatik
an der TU Braunschweig bis 1985. Danach startete er seine berufliche Karriere bei der ADV/ORGA Unternehmensberatung in
Wilhelmshaven als Softwareentwickler und Consultant im Bereich
Standardsoftware.
Mit der Übernahme der Vertriebs- und Marketingverantwortung bei ORDIX wird Herr Georgi
dem Unternehmen neue Impulse geben und
sicherlich auch andere Akzente setzen. Herr
Georgi trägt damit vor allem auch zur Entlastung des Vorstandsvorsitzenden Kögler bei,
der wiederum diese gewonnene Zeit in intensivere Betreuung der ORDIX Kunden und einiger ORDIX Projekte investieren kann und wird.
1988 wechselte er zur Nixdorf Computer AG nach Paderborn, um
zunächst übergreifende IT-Sonderprojekte zu leiten und dann als
Abteilungsleiter die Logistik- bzw. die Serviceprozesse zu gestalten. Insbesondere die Harmonisierung der Serviceprozesse und verfahren bei der Fusion von Nixdorf und Siemens DI war eine
besondere Herausforderung.
Von 1993 bis 1996 war Benedikt Georgi verantwortlich für die Architektur, Basistechnologie und Entwicklung bei der weltweiten
Einführung von R/3 bei Siemens Nixdorf.
Ab der Gründung von Siemens Business Services (SBS) 1996
hat er sehr erfolgreich in ständig wachsender Verantwortung die
Übertragung der internen Projekt- und Serviceerfolge auf den externen Markt betrieben.
Im Jahr 2000 wurde Benedikt Georgi zum Mitglied der Geschäftsleitung von SBS Deutschland ernannt und war zunächst verantwortlich für die gesamte Dienstleistungserbringung im Lösungsgeschäft (SAP, Siebel, I2, etc.). Hierbei gelang es ihm, die Verrechenbarkeit des Bereichs auf Rekordniveau zu steigern.
2002 übernahm er dann die ganzheitliche Geschäftsverantwortung
für den produktnahen Service (Wartung, IT-Infrastrukurservice).
In der Geschäftsleitung Deutschland verantwortete er zusätzlich
organisationsübergreifend die Themen Skillsmanagement, Assignmentmanagement, Knowledgemanagement und Projektmanagement. Die hierbei gesammelten Erfahrungen wird er erfolgreich in
die ORDIX AG einbringen.
Darüber hinaus kümmerte sich Benedikt Georgi im Beirat um die
strategische Weiterentwicklung des C-Lab und als Standortleiter
um die Positionierung der SBS am Standort Paderborn.
16
Besonders viel verspricht man sich bei ORDIX
für den seit knapp 2 1/2 Jahren existierenden
Bereich Projektmanagement, für den Georgi
ebenfalls die Verantwortung übernehmen wird.
Die Erfahrungen, die Benedikt Georgi aus der
SBS mit zu ORDIX bringt, werden die Arbeit
der ORDIX Projektmanager sicherlich positiv
beeinflussen.
Herr Georgi erhält zunächst einen 5-Jahres
Vertrag. Man geht aber bei ORDIX von einem
viel längeren Zeitraum sowie einem stetig
wachsenden Verantwortungsbereich aus. „Mit
Herrn Georgi haben wir jemanden gefunden,
dessen Erfahrungen hervorragend zu uns
passen. Gerade weil er mit der SBS aus einem deutlich größeren Unternehmen kommt,
wird unser stetiger Wachstumskurs durch ihn
sicherlich optimal begleitet.“ erklärt Wolfgang
Kögler, Vorstandsvorsitzender.
Zeit für Freizeit
Wenn es seine beruflichen Tätigkeiten zulassen, beschäftigt sich Benedikt Georgi mit
Kunst und Design des 20./21. Jahrhunderts,
mit Malen und Zeichnen. Mit Laufen und Inlineskating hält er sich fit. Benedikt Georgi ist
Familienvater und hat 2 Söhne.
Aktuell
Neues Mitglied im
Aufsichtsrat der ORDIX AG:
Wolfgang Raum
In der Hauptversammlung am 6. August 2004 wurde Wolfgang Raum (63) in den Aufsichtsrat der ORDIX AG gewählt. Er ist seit fast 40 Jahren im IT-Bereich tätig und hat
in der Vergangenheit sowohl große Entwicklungseinheiten im Software-Bereich geleitet als auch nationale und internationale Vertriebseinheiten aufgebaut und geführt.
Wichtige berufliche Stationen
Eine wichtige berufliche Station war die ZUSE
KG in Bad Hersfeld. Hier arbeitete er in den
60er Jahren an der Systementwicklung der
Z25.
1970 kam er zu Nixdorf und war über 10 Jahre als Führungskraft im Entwicklungsbereich
und weitere 10 Jahre im internationalen Vertrieb tätig. Ein Schwerpunkt seiner Tätigkeit
war die Entwicklung und Vermarktung neuer
Bankensysteme und später die Bereitstellung
der Unix Systeme. Nach der Fusion von Siemens und Nixdorf war er für die weltweite Vermarktung der Handelssysteme verantwortlich.
1993 wechselte er zu Oracle. Gemeinsam mit
dem europäischen Management entwickelte
und implementierte er Vertriebsstrategien zur
Erschließung neuer Marktsegmente.
1995 übernahm Wolfgang Raum bei dem amerikanischen Softwareunternehmen BMC die
Geschäftsführung für die Länder Deutschland,
Österreich und Schweiz und baute in den folgenden Jahren die Organisation zum wichtigsten europäischen Umsatzträger aus.
Anfang 2000 zog es Wolfgang Raum in die
Schweiz, wo er sich an Framesoft, einem Softwareunternehmen für Bankenlösungen, beteiligte.
Engagement
Neben seiner beruflichen Verantwortung kümmerte sich Wolfgang Raum in den 80er und
90er Jahren intensiv um Standardisierungen
im IT-Bereich. Er war Gründungsmitglied der
Vorläuferorganisationen der heutigen Open
Group und hat in vielen nationalen und inter-
nationalen Standardisierungsgremien mitgewirkt.
Wolfgang Raum und ORDIX
Wolfgang Raum wird sich mit Engagement in die Aufsichtsratstätigkeit bei ORDIX einbringen, treu nach
dem Motto: „Wem die Arbeit Spaß macht, der kann sich im Leben
viele schöne Stunden machen.“
Neben seiner neuen Tätigkeit verbindet Herrn Raum noch mehr
mit ORDIX – um nicht zu sagen, dass er indirekt verantwortlich für
die Gründung des Paderborner Unternehmens ist.
Herr Raum und der Aufsichtsratsvorsitzende Professor Dr. Hermann Johannes, damals ein Mitarbeiter von Wolfgang Raum, holten im Herbst 1987 Wolfgang Kögler, den Gründer und Vorstandsvorsitzenden der ORDIX AG, nach Paderborn zur Nixdorf Computer AG.
Die Verbindungsachse zwischen Herrn Raum und Herrn Kögler
führte auch zur Partnerbeziehung zwischen BMC und ORDIX.
ORDIX übernahm 1996 als erstes Unternehmen die Ausbildung
von BMC Partnern für das BMC Produkt PATROL. Noch heute ist
ORDIX der führende Schulungsanbieter im deutschsprachigen
Raum für PATROL.
Auch während seiner Framesoft Zeiten hielt der Kontakt zwischen
ORDIX und Herrn Raum an. Mehrere ORDIX Mitarbeiter führten
im Auftrag von Framesoft Kundenprojekte bei namhaften Banken
durch. Und eine Reihe von Framesoft Mitarbeitern erweiterten ihr
Know-how durch die ORDIX Kurse im objektorientierten Umfeld.
So ist es nicht verwunderlich, dass Herr Raum jetzt den Weg in
den ORDIX Aufsichtsrat gefunden hat.
Zeit für Freizeit
... soll Herrn Raum natürlich auch noch bleiben. Neben seinen beruflichen Tätigkeiten spielt er leidenschaftlich gerne Golf, liebt Bergtouren, favorisiert die Weine des Kaiserstuhls und lauscht gerne im
In- und Ausland den großen Interpreten der Klassischen Musik.
17
Datenbanken
Backup und Recovery mit Oracle 10g (Teil I):
Alles neu macht 10g: Backup und
Recovery mit Oracle 10g
In dieser Ausgabe der ORDIX News wollen wir uns mit allgemeinen Erweiterungen bei Backup und Recovery
mit Oracle 10g beschäftigen.
Automatisches Starten des Archive Prozesses
In den Oracle Releases bis einschließlich Oracle 9.2 waren für
das ordnungsgemäße Funktionieren des Archivelog Modes zwei
Schritte notwendig:
•
•
Den Parameter log_archive_start = true in der Parameter-Datei setzen
In der Mount Phase einmalig die Betriebsart der Datenbank
umschalten: alter database archivelog;
Mit Oracle 10g ist der Parameter log_archive_start nicht mehr
notwendig. Die ARCn Prozesse werden automatisch beim Öffnen
(alter database open) gestartet, wenn sich die Datenbank in
der Betriebsart Archivelog befindet. Wird der Parameter noch verwendet, wird eine Warnung ausgegeben (ORA-32004 - obsolete
and/or deprecated parameter(s) specified).
Full DB begin backup
Seit Oracle 9i gibt es das Kommando
alter database end backup;
Zur Vervollständigung gibt es jetzt das Kommando
alter database begin backup;
Beide Kommados zusammen erleichtern das Erstellen von Backup Skripten, mit denen über Plattenspiegelung gesichert wird
(Proxy Copies).
Alle nicht vorhandenen, read only bzw. offline gesetzten Dateien
werden übersprungen. Es wird keine Fehlermeldung ausgegeben!
In der View v$backup stehen read only Dateien auf NOT ACTIVE.
Dateien, die nicht vorhanden sind bzw. offline gesetzt sind, werden in der View v$backup nicht gelistet.
RMAN>
2>
3>
4>
Der init.ora Parameter
ARCHIVE_LOG_FORMAT
Das Format der Dateinamen für die archivierten Redo Log Dateien hat sich geändert. Bisher gab es, außer bei OPS- oder RAC Systemen, nur die Sequenznummer, die in den Namen der Archivdatei eingebaut sein sollte. Mit
Oracle 10g gibt es ein Mindest-Format für die
Dateinamen der archivierten Redo Log Dateien: log_archive_format=%t_%r_%s
Dabei haben %t und %s ihre bisherige Bedeutung behalten:
•
•
%t für den Thread (Instance-Nummer)
%s für die Sequenznummer
Der Parameter %r steht für die neu hinzugekommene Resetlognummer. Optional lässt
sich noch der Parameter %a für die jeweils
neu vergebene Activation-Id hinzufügen. Die
Verwendung von %a empfiehlt sich allerdings
nicht, wie wir noch zeigen werden. Hier stellt
sich natürlich die Frage, wozu die zusätzliche
Information benötigt wird.
Recovery durch Resetlogs
Mit den Releases vor 10g war es nach dem
Öffnen der Datenbank mit der Option resetlogs zwingend erforderlich, ein vollständiges
Backup der Datenbank zu erstellen, da eine
neue Inkarnation der Datenbank erstellt wurde. Eine Inkarnation ist eine neue (interne)
Version.
convert tablespace 'TTS'
to platform "HP-UX (64-bit)"
DB_FILE_NAME_CONVERT =
'/oracle/oradata/tts', '/tmp/transport_tts_hpux';
Starting backup at 29-APR-04
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input datafile fno=00005 name=/oracle/oradata/tts
converted datafile=/tmp/transport_tts_hpux
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:03
Finished backup at 29-APR-04
Abb. 1: Beispiel für die Konvertierung eines Tablespaces auf eine andere Plattform.
18
Datenbanken
SQL> select * from v$transportable_platform order by platform_id;
PLATFORM_ID PLATFORM_NAME
ENDIAN_FORMAT
1
2
3
4
5
6
7
8
9
10
11
12
13
15
16
Solaris[tm] OE (32-bit)
Solaris[tm] OE (64-bit)
HP-UX (64-bit)
HP-UX IA (64-bit)
HP Tru64 UNIX
AIX-Based Systems (64-bit)
Microsoft Windows IA (32-bit)
Microsoft Windows IA (64-bit)
IBM zSeries Based Linux
Linux IA (32-bit)
Linux IA (64-bit)
Microsoft Windows 64-bit for AMD
Linux 64-bit for AMD
HP Open VMS
Apple Mac OS
Big
Big
Big
Big
Little
Big
Little
Little
Big
Little
Little
Little
Little
Little
Big
Abb. 2: Auflistung der unterstützten Plattformen in der View V$TRANSPORTABLE_PLATFORM.
Mit Oracle 10g ist dies nicht mehr erforderlich. Hier wurde ein Mechanismus integriert,
der ein Recovery durch ein Resetlogs hindurch ermöglicht (Erweiterung des Parameters log_archive_format durch %r).
covery Area abgelegt (default $ORACLE_HOME/dbs). Mit dem
Thema Flash Recovery werden wir uns in der nächsten Ausgabe
beschäftigen.
Ein Recovery mit einem alten Backup einer
mit open resetlogs geöffneten Datenbank
stellt sich nun folgendermaßen dar:
•
•
•
•
•
•
Einspielen der defekten Datenbank-Datei
bzw. der defekten Datenbank-Dateien
recover database;
Danach kann auto eingegeben werden.
Das Recovery der Datenbank läuft automatisch bis zur current Redo Log Datei. Bei
Bedarf auch durch mehr als ein Resetlogs.
Ist allerdings im Namen der Archive %a
verwendet, so muss jede einzelne Archivdatei namentlich eingegeben werden. Der
Parameter %a wird jeweils mit 0 vorbelegt.
Transportable Tablespaces
Transportable Tablespaces können nun zwischen verschiedenen Plattformen ausgetauscht werden. Das ist auch dann möglich,
wenn Quell- und Zielsystem unterschiedliche
Byte-Ordnungen aufweisen (endian ordering).
Die Datenkonvertierung von Little-Endian in
Big-Endian und umgekehrt wird mit Hilfe vom
RMAN durchgeführt. Dazu müssen die betreffenden Tablespaces zuvor auf read only
gesetzt werden. Ein Beispiel für diesen Vorgang finden Sie in Abbildung 1.
Wird als Ziel kein absoluter Pfad angegeben,
so wird die konvertierte Datei in der Flash Re-
Einschränkungen:
•
Die beteiligten Datenbanken müssen über den Parameter
COMPATIBLE >=10.0 verfügen.
Die Tablespaces müssen einmal read write geöffnet worden sein.
Die View v$transportable_platform liefert eine Übersicht der
Plattformnamen und des Datenformates (siehe Abbildung 2).
Fazit
Von den hier beschriebenen Neuerungen im Backup und Recovery Umfeld erscheinen das Recovery mit einem alten Backup
durch eine Resetlogssituation und das Kopieren von Tablespaces
über unterschiedliche Betriebssysteme als interessante Optionen.
Ersteres ermöglicht eine sofortige Inbetriebnahme einer Datenbank nach einem unvollständigen Recovery ohne vorheriges Backup, welches je nach Datenmenge und Verfügbarkeitsansprüchen
eine erhebliche Verbesserung darstellt.
Der zweite Punkt vereinfacht z. B. das Zusammenführen mehrerer kleiner Datenbanken, die auf unterschiedlichen Betriebssystemen laufen, zu einer größeren Datenbank.
In den nächsten Ausgaben werden wir uns mit der Flash Recovery Area, dem Recovery Manager und den Neuigkeiten im Data
Guard Umfeld beschäftigen.
Andreas Kother ([email protected]).
19
Java/XML - Titelthema Java 1.5.0
Der Tiger ist los
Nachdem vor kurzem erst das Release Candidate von Java 1.5.0, genannt Tiger, von Sun veröffentlicht wurde, steht seit Ende September 2004 nun die endgültige Version zum Download bereit. Das fast 50 MB große
Paket ist unter Java-Entwicklern seit langem ersehnt. Und das nicht wegen der üblichen Bugfixes und Erweiterungen an der Java-Bibliothek und der JVM, sondern wegen der angekündigten Spracherweiterungen.
Diese sind Gegenstand dieses Artikels.
Ausgangsbasis
Wer schon länger in Java entwickelt, dem sind sicherlich einige
Dinge aufgefallen, die unschön sind, weil sie entweder viel Tipparbeit erfordern, einfach nicht in gutes, objektorientiertes Design
passen oder in anderen Programmiersprachen einfach eleganter
gelöst sind. Und genau hier setzen die erwähnten Spracherweiterungen an. Dazu gehören:
•
•
•
•
•
Generics
Enhanced for-Loop
Autoboxing/Unboxing
Typesafe Enumerations
Static Import
Im folgenden werden diese Spracherweiterungen an konkreten
Beispielen vorgestellt.
Generics
Java besaß bisher kein Sprachkonstrukt, welches mit den Templates in C++ vergleichbar wäre. Mit den Generics hat Sun dieses
Manko behoben. Dahinter verbirgt sich die Möglichkeit, Collection- und Iterator-Instanzen mit Datentypen zu parametrisieren.
Abbildung 1 zeigt als Beispiel im oberen Kasten die Nutzung einer ArrayList im herkömmlichen Sinne. Zu beachten sind die dabei
notwendigen Casts, wenn Elemente direkt aus der ArrayList bzw.
über einen Iterator entnommen werden.
Unter Nutzung der Generics entfällt in beiden Fällen der Cast, da
die Elemente automatisch in den korrekten Datentyp umgewandelt werden. Der untere Kasten der Abbildung 1 stellt den Code
mit Nutzung von Generics dar.
Das Ganze hat allerdings noch einen weiteren Vorteil. Die Typprüfung, also welche Elemente in eine Collection eingefügt werden, führt der Compiler während der Übersetzung durch. Damit
gehört die bekannte java.lang.ClassCastException zur
Laufzeit der Vergangenheit an.
Enhanced for-Loop
Die zweite Spracherweiterung befasst sich mit for-Schleifen, die
zum Iterieren über Array- und Collection-Instanzen genutzt werden. Das ist zum einen mit Hilfe eines Index, zum anderen durch
Nutzung eines Iterators möglich. Beide Fälle sind im oberen Kasten in Abbildung 2 zu sehen.
Greift man auf die neue for-Schleife zurück und kombiniert das
Ganze mit der Verwendung von Generics, kann eine Menge Code
eingespart werden. Die so „optimierten“ for-Schleifen sind auch
20
besser lesbar, wie der Vergleich der beiden
Kästen in Abbildung 2 verdeutlicht.
Autoboxing/Unboxing
Ein Nachteil von Collections war bisher, dass
sie nur Elemente von komplexen Datentypen
aufnehmen konnten. Wollte man Elemente
einfacher Datentypen wie int, long, char etc.
einfügen, war bisher eine passende WrapperInstanz notwendig. Beim Entnehmen mussten die Elemente händisch „entpackt“ werden,
wie im oberen Kasten in Abbildung 3 zu sehen.
Mit dem Autoboxing/Unboxing-Feature ist das
nun alles nicht mehr nötig. Das Einfügen und
Entnehmen von Elementen eines einfachen
Datentyps gestaltet sich so, als ob die Collection auch mit einfachen Datentypen umgehen
könnte. Abbildung 3 zeigt im unteren Kasten
die Vereinfachung.
Zu beachten ist allerdings, dass die verwendete Collection mit der zugehörigen WrapperKlasse, also z. B. Integer, parametrisiert wird.
Dass dann natürlich keine anderen Elemente
als int-Werte eingefügt werden können, ist
einleuchtend.
Typesafe Enumerations
In switch/case-Anweisungen können hinter
dem Schlüsselwort case nur Werte verwendet werden, die sich implizit in int-Werte
wandeln lassen. Da diese wenig aussagekräftig sind, verwenden Entwickler oft int-Werte, die als statische Konstanten unter sprechenden Namen in einer Klasse definiert sind.
Dieses Vorgehen hat jedoch einige Nachteile.
Die so definierten int-Enumerations
• bieten keine Typsicherheit, da die Verwendung der Konstanten nicht überprüft wird,
• bilden keinen “richtigen“ Namensraum,
• werden als int-Werte in die verwendenden Klassen kompiliert, d. h. können nur
durch die Rekompilierung der verwendenden Klassen geändert werden und
• können nicht mit Collection-Instanzen verwendet werden.
Java/XML
Darüber hinaus werden bei Ausgaben die intWerte und nicht, wie eigentlich gewünscht, die
Konstantennamen ausgegeben. Diese Nachteile lassen sich durch den Einsatz des Typesafe Enum Entwurfsmusters umgehen. Dieses muss allerdings immer individuell implementiert werden. Einfacher ist es, ab Java
1.5.0 die Typesafe Enumerations einzusetzen.
Eine Typesafe Enumeration wird durch das
Schlüsselwort enum deklariert. Sie besitzt im
einfachsten Fall einen Namen und besteht aus
einer Element-Menge eben dieses Typs. Hierdurch wird die gewünschte Typsicherheit erreicht. In Abbildung 4 ist eine solche, einfache
Typesafe Enumeration zu sehen.
Da es sich bei einer Typesafe Enumeration
im Grunde um eine Klasse handelt, können
innerhalb einer Typesafe Enumeration zusätzlich Attribute, Methoden und parametrisierte
Konstruktoren definiert werden (siehe Abbildung 5). Damit ist es möglich, den Elementen
weitere Eigenschaften zu zuweisen.
Typesafe Enumerations stellen also eine Implementierung des Typesafe Enum Entwurfsmusters auf Sprachebene dar. Die zugehörigen Elemente sind Instanzen. Sie besitzen einen Namensraum, sind typsicher, können mit
Collection-Instanzen verwendet werden und
geben bei der Ausgabe ihren Namen aus.
Bei der Implementierung von Typesafe Enumerations gilt es aber auch, ein paar Regeln
zu beachten:
•
•
•
•
Ein Defaultkonstruktor darf nicht implementiert werden, da dieser implizit bereitgestellt wird.
Die Typesafe Enumeration besitzt automatisch die beiden Methoden values() und
valueOf(String) sowie die Methoden
der Klasse java.lang.Enum.
Die enum-Klasse ist implizit immer statisch.
Deklarierte Attribute und Methoden sind
automatisch statisch.
Static Import
Fast jede Java-Anwendung verwendet Konstanten. Diese sind oft zentral in einer Klasse
statisch definiert. Das hat allerdings den Nachteil, dass bei der Nutzung dieser Konstanten
der Klassenname vorangestellt werden muss
(z. B. Constants.MAXSIZE).
Um das zu umgehen, besteht die Möglichkeit,
die Konstanten innerhalb von Interfaces zu definieren, die ansonsten nichts deklarieren. Die
Klassen, die diese Konstanten nutzen wollen,
müssen anschließend das Interface imple-
…
List intList = new ArrayList();
intList.add(new Integer(1));
intList.add(new Integer(2));
intList.add(new Integer(3));
Integer value;
for (Iterator it = intList.iterator(); it.hasNext();)
{
// Cast notwendig
value = (Integer) it.next();
System.out.println("value: " + value);
}
…
…
List<Integer> intList = new ArrayList<Integer>();
intList.add(new Integer(1));
intList.add(new Integer(2));
intList.add(new Integer(3));
Integer value;
for (Iterator<Integer> it = intList.iterator();
it.hasNext();)
{
// Zuweisung ohne einen Cast
value = it.next();
System.out.println("value: " + value);
}
…
Abb. 1: Vergleich der Verwendung einer ArrayList und eines Iterators
vor (oben) und nach der Spracherweiterung (unten).
…
List<Integer> intList = new ArrayList<Integer>();
intList.add(new Integer(1));
intList.add(new Integer(2));
intList.add(new Integer(3));
// for-Schleife mit Laufindex
for (int i = 0; i<intList.size(); i++)
{
Integer value = (Integer)intList.get(i);
System.out.println("value: " + value);
}
// for-Schleife mit Iterator
for (Iterator it = intList.iterator(); it.hasNext();)
{
Integer value = (Integer)it.next();
System.out.println("value: " + value);
}
…
…
List<Integer> intList = new ArrayList<Integer>();
intList.add(new Integer(1));
intList.add(new Integer(2));
intList.add(new Integer(3));
for (Integer value : intList)
{
System.out.println("value: " + value);
}
…
Abb. 2: Vergleich einer for-Schleife mit Laufindex bzw. Iterator vor der
Spracherweiterung (oben) und einer Enhanced for-Schleife danach
(unten).
21
Java/XML
inweis:
Seminarh
RDIX ab
n“ bietet O
ite
s Se5.0 Neuhe
ein 2-tägige
Mit „Java
uartal 2005 n.
Q
en
st
er
a
dem
hema
diesem T
minar zu
E, u. a.:
hema J2E
T
auch zum
Servlets“
s
d
e
n
t
u
ib
P
g
inare
mit JS
Neue Sem
ntwicklung
plikationse
JB“
• „Web-Ap sentwicklung mit E
tion
• „Applika
…
List intList = new ArrayList();
intList.add(new Integer(1));
intList.add(new Integer(2));
intList.add(new Integer(3));
List tmpIntList = new ArrayList();
for (Iterator it = intList.iterator(); it.hasNext();)
{
Integer value = (Integer)it.next();
int i = value.intValue();
tmpIntList.add(new Integer(i + 1));
}
…
…
List<Integer> intList = new ArrayList<Integer>();
intList.add(1);
intList.add(2);
intList.add(3);
List<Integer> tmpIntList = new ArrayList<Integer>();
for (Iterator<Integer> it = intList.iterator();
it.hasNext();)
{
// Zuweisung ohne Cast (siehe Generics)
Integer value = it.next();
// Unboxing [Integer->int], Addition,
// Autoboxing [int->Integer]
tmpIntList.add(value + 1);
}
…
Abb. 3: Vergleich des Einsatzes der Autoboxing/Unboxing-Spracherweiterung vor (oben) und nach der Spracherweiterung (unten).
public enum Farbe {
rot, gelb, weiss, violett
};
Abb. 4: Einfache Typesafe Enumeration.
public enum Blume {
Rose("Topf"), Akelei("Garten"), Mohn("Feld");
Blume(String standort) {
this.standort = standort;
}
private final String standort;
public String getStandort() {
return standort;
}
};
Abb. 5: Typesafe Enumeration mit Konstruktor, Methoden und Attributen.
Links
[1] http://java.sun.com/j2se/1.5.0/index.jsp
[2] http://www.jetbrains.com
[3] http://www.ordix.de/download/Java_1.5.0_Test.zip
22
mentieren. Dadurch können
die Konstanten ohne vorangestellten Klassennamen genutzt werden. Obwohl diese Lösung funktioniert, ist sie aus sprachtechnischer Sicht zu verwerfen. Interfaces sind dazu da, um neue Typen zu deklarieren und nicht,
um als Konstanten-Container zu dienen.
Damit solche Konstrukte nicht mehr nötig sind,
gibt es in Java 1.5.0 die Spracherweiterung
Static Import. Darunter versteht man den Import aller in der angegebenen Klasse enthaltenen Konstanten. Diese können anschließend
ohne vorangestellten Klassennamen genutzt
werden.
Um z. B. alle Konstanten, die in der Klasse
de.ordix.java15.Constants definiert
werden, zu importieren, genügt die folgende
Anweisung:
import static de.ordix.java15.Constants.*;
Zu beachten ist das Schlüsselwort static
und die Erweiterung „.*“ hinter dem Klassennamen.
Resümee
Mit den hier vorgestellten Spracherweiterungen nimmt Java dem Entwickler einen großen Teil der immer wiederkehrenden Tipparbeit ab. Und da Entwickler, wie allgemein
bekannt, lieber weniger als mehr tippen, ist
das sicherlich ein Schritt in die richtige Richtung. Das Resultat ist ein schlanker und eleganter Code, der darüber hinaus noch weniger unerwünschtes Laufzeitverhalten (Exceptions etc.) zur Folge hat.
Wer das Ganze schon jetzt ausprobieren will
oder gar sofort umsteigen möchte, braucht die
Java 1.5.0 und eine passende Entwicklungsumgebung. Ersteres stellt Ihnen Sun unter [1]
zum Download zur Verfügung. Als Entwicklungsumgebung bietet sich IntelliJ IDEA 4.5
an. Eine 30 Tage lauffähige Testversion kann
im Internet unter [2] runtergeladen werden.
Zusätzlich finden Sie auf den ORDIX Webseiten [3] das IDEA-Projekt Java_1.5.0_Test
als zip-Datei zum Download. Nach dem Entpacken in ein beliebiges Verzeichnis, kann
das Projekt direkt aus IDEA geöffnet werden.
Zu dem Projekt gehören die beiden Klassen
NewFeatures.java und Constants.java, welche
die hier vorgestellten Spracherweiterungen demonstrieren.
Bleibt uns nur noch, Ihnen viel Spaß mit dem
Tiger zu wünschen!
Christoph Borowski ([email protected]).
Aktuell
ORDIX Mitarbeiter ITIL-zertifiziert
Einige Projektmanager der ORDIX AG haben im April 2004 die Prüfung „Foundation Certificate in IT Service
Management“ nach den Richtlinien des Examination Institute for Information Science (EXIN) und der TÜV
Akademie erfolgreich abgelegt.
ITIL steht für Information Technologie Infrastructure Library und ist eine Sammlung von
Richtlinien, die aus Best-Practices von IT-Organisationen und deren Prozessmodellen entstanden ist.
Change Management und Release Management. Die Prozesse
des Service Delivery sind Service Level Management, Availability
Management, IT Service Continuity Management, Capacity Management, Finance Management für IT Services und Security
Management.
Ende der 80er Jahre wurde ITIL durch die englische Central Computer and Communication
Agency (CCTA) ins Leben gerufen. Bis heute
entwickelt EXIN mit Unterstützung der Mitarbeiter von Rechenzentren, Lieferanten, Beratern und Ausbildern ITIL immer weiter. Somit
werden auch aktuelle Weiterentwicklungen
berücksichtigt.
Im Rahmen eines einheitlichen, übergeordneten Prozessmodells
definiert ITIL Abhängigkeiten, Aktivitäten, Rollen und Modelle der
einzelnen Prozesse und liefert so eine Orientierungshilfe und eine
einheitliche Begriffsdefinition für das IT Service Management.
Heute gilt ITIL als öffentlich zugänglicher Defacto-Standard, um im IT Service Level Management einen hohen Qualitätsstandard zu erreichen. Weltweit haben viele Organisationen
und Unternehmen ITIL mit Erfolg angewandt.
ITIL unterscheidet zwischen Prozessen für
den Service Support und dem Service Delivery. Der Service Support besteht aus den
Prozessen Incident Management, Problem
Management, Configuration Management,
Wie die Praxis gezeigt hat, liefert die Anwendung von ITIL ein
professionelles IT Service Management, eine höhere Kundenzufriedenheit, ein besseres Qualitätsmanagement und Kostensenkungen durch standardisierte Prozesse und deren permanente Optimierung.
Durch die Zertifizierung stellt die ORDIX AG ihre langjährige Erfahrung in diesen Bereichen jetzt auf ein offiziell anerkanntes Fundament und kann Sie beim Erreichen dieser Ziele in Ihrem Unternehmen mindestens so gut wie früher unterstützen, jetzt aber eben
auch mit „TÜV-Stempel“.
Sollten Sie Interesse haben, Ihre Prozesse auf ITIL umzustellen
bzw. unter ITIL Aspekten zu analysieren, helfen wir Ihnen gerne.
Richten Sie Ihre Fragen einfach per E-Mail an [email protected].
Leserinformation
Und nochmal ans Türchen geklopft
Zu dem Artikel „Knocking at your Backdoor“ (ORDIX News 3/2004) erhielten wir sehr
viel Post, so dass sich der eine oder andere Leser ein wenig gedulden musste, bis er
die gewünschten Informationen erhielt.
Bitte haben Sie an dieser Stelle etwas Verständnis, dass wir – wenn schon kostenfrei –
nicht immer sofort reagieren können. Manchmal müssen wir auch Geld verdienen, sonst
könnten wir Ihnen so nützliche Unterlagen wie
z. B. unsere News nicht unentgeltlich zur Verfügung stellen oder für Sie kostenlose Fachtreffs organisieren.
Von einem ehemaligen ORDIX Mitarbeiter,
jetzt bei SAP tätig, erhielten wir eine Information aus dem Hause SAP. Diese möchten wir
Ihnen nicht vorenthalten, da sie eine wichtige Ergänzung zu unserem Artikel darstellt:
Auch SAP hat die – mehr oder weniger schöne – Eigenart, Datenbank Benutzer anzulegen. In älteren R3 Releasen hieß der Benutzer sapr3 mit dem default password sap. Seit MCOD (Multi
Component One Database) und Release >= 610 heißen die Benutzer standardmäßig sap<SCHEMAID> und sap<SCHEMAID>db
für J2EE. Diese Benutzer haben kein Standard Passwort mehr.
Ob es sich dabei um eine offizielle SAP Aussage handelt, entzieht
sich der Kenntnis der Redaktion ;-)
23
Datenbanken
Neue Reihe IBM Informix Dynamic Server Reorganisation (Teil I):
Interne Architektur
Die Gründe, die eine Reorganisation notwendig machen, sind vielseitig. Der Hauptaspekt ist nicht ausschließlich die „starke“ Fragmentierung der DBspaces, sondern vielmehr die „interne“ Verwaltung der Extents.
Denn im Zeitalter von „SAME“ (Stripe And Mirror Everything) wird die Fragmentierung bewusst unterstützt.
Mit dem Mythos „Viele Extents bedeuten schlechte Performance wegen des schlechteren I/O Verhaltens“
möchten wir in dem folgenden Artikel „aufräumen“.
Damals
Betrachten wir die Entwicklung der Festplatten in den vergangenen
Jahren. Vor einigen Jahren war die Festplattenkapazität um ein
Vielfaches kleiner und auch die Zugriffszeiten waren deutlich langsamer als bei den heutigen Plattensubsystemen. Deshalb versuchte man, Tabellen mit wenigen, dafür aber großen Extents anzulegen. Idealerweise wurden RAW Devices in der „Mitte“ des Plattenstapels erzeugt, damit die Positionierungswege des Schreib-/Lesearms möglichst kurz waren.
Der Leitsatz lautete:
„Wenige Extents pro Objekt = bessere Performance“.
Heute
Heute wird der Effekt der Fragmentierung noch zusätzlich unterstützt und gewollt (Volume Manager, RAID 10 usw.). Auch die zusätzliche Fragmentierung von Daten aus der logischen Sicht (z. B.
Fragmentation by Round Robin) ist nichts anderes als ein zusätzliches „Striping“.
Der Leitsatz heute heißt: „SAME, Stripe and Mirror everything =
viele Fragmente = bessere Performance“.
DBspaces werden diese 50 Pages direkt belegt (onspaces). Jedes Tablespace hat eine
Tablespace-Nummer. In diesem Zusammenhang spricht man auch von der Partition Nummer (partnum). Das Wort Tablespace und
Partition sind gleichzusetzen.
Die Partition Nummer (partnum) hat folgenden Aufbau: 0 x DDD LLLLL
Die ersten 3 Halfbytes (1 ½ Bytes) stellen die
DBspace Nummer dar. Die letzten 5 Halfbytes
(2 ½ Bytes) die logical Page Nummer. Insgesamt belegt die Partnum 4 Bytes. Mit Hilfe der
SQL-Funktion DBINFO kann man sich den
DBspace Namen anhand einer Partnum ausgeben lassen (siehe Abbildung 2).
Die Partition Nummer einer Tabelle bzw. eines
Indizes kann man aus dem System Catalog
(Systables) der lokalen Datenbank oder aus
den SMI-Tabellen (Sysmaster Datenbank) entnehmen (siehe Abbildung 3).
Trotzdem sollte man die Anzahl der Extents je Datenbankobjekt
möglichst gering halten. IBM Informix kann pro Objekt nur eine
bestimmte Anzahl an Extents verwalten. Des Weiteren ist der
Verwaltungsaufwand umso größer, je mehr Extents ein Objekt
besitzt. Somit trifft der Leitsatz von früher „Wenige Extents pro
Objekt = bessere Performance“ auch noch heute zu.
Das eigentliche Problem hierbei liegt jedoch nicht ausschließlich
im schlechteren I/O Verhalten, sondern in der Verwaltung der Extents, und zwar in der Struktur des Tablespace-Tablespace.
Tablespace-Tablespace
Das Tablespace-Tablespace verwaltet alle Partitionen/Tablespaces
eines DBspace. Das bedeutet, jede Tabelle belegt genau eine
Page, die Partition Page, innerhalb des Tablespace-Tablespace.
Jedes DBspace beinhaltet ein eigenes Tablespace-Tablespace
(siehe Abbildung 1). Dieses wird in den ersten Pages des initial
Chunks angelegt. Die Extent Größe des Tablespace-Tablespace
beträgt 50 Pages und ist nicht änderbar. Beim Neuanlegen eines
28
Abb. 1: Tablespace-Tablespace Struktur.
select dbinfo("DBSPACE",partnum)
from systables
where tabid = 1
Abb. 2: DBINFO Funktion.
Datenbanken
Abbildung 4 zeigt die Ausgabe des Befehls
onstat –d, nachdem ein „neuer“ DBspace
erzeugt wurde.
database UserDB;
select partnum,tabname
from systables;-- lokaler System Catalog
database sysmaster;
select partnum,dbsname,tabname
from systabnames;-- Sicht auf alle Tablespace-Tablespaces
Alle weiteren Chunks, die zu einem DBspace
hinzugefügt werden, belegen anfänglich nur
3 Pages (1 + 2 Chunk Page + Page 3, die Free
Chunk Page). Die maximale Größe eines Extents ist durch die Größe eines Chunks begrenzt. Ein Tablespace hingegen kann sich
über mehrere Chunks erstrecken, wie in Abbildung 6 zu sehen ist.
Abb. 3: Partitions-Nummer innerhalb der lokalen System- und SMITabellen.
•
•
Die Partition Page
Eine Page im Tablespace-Tablespace wird
auch Partition Page genannt.
Time Stamp (am Ende der Page) mit 4 Bytes
Slot Table – Einträge mit jeweils 4 Bytes (4 Bytes * 5 Slots = 20
Bytes)
Slot 1: Partitionsstruktur
Informationen zur Partitionsstruktur (56 Bytes).
Der Aufbau einer Partition Page entspricht einer ganz „normalen“ Daten Page. Der Unterschied besteht lediglich darin, dass die Informationen, die in dieser Page gespeichert sind,
keine Daten bzw. Indexdaten sind, sondern
Informationen zu der Tabelle, die sie beschreibt.
Des Weiteren besteht eine Partition Page ausschließlich aus 5 Slots (siehe Abbildung 7).
Slot 2: Objekt-Namen
Informationen zu DBspace Namen, Table Owner, Table Name und
NLS Collations.
Slot 3: Special Columns
Informationen über Special Columns. Dieses sind z. B. VARCHAR,
TEXT, BYTE, CLOB, BLOB Datentypen.
Der Page Header belegt immer eine feste Größe von 24 Bytes. Folgende „interne“ Page Felder müssen noch berücksichtigt werden:
Slot 4: Index Informationen
Infomationen zu allen Indizes, die auf dieser Tabelle hinterlegt sind.
IBM Informix Dynamic Server Version 9.40.FC2
-- On-Line -- Up 02:02:06 -- 47408 Kbytes
Dbspaces
address
number
700000010180e58 1
70000001062f028 2
2 active, 2047 maximum
flags
0x20001
0x20001
fchunk
1
2
nchunks
1
2
flags
N
N
owner
informix
informix
name
rootdbs
newdbspace
Chunks
address
chunk/dbs
700000010181028 1
1
70000001062f1a8 2
2
70000001062f8c8 3
3
3 active, 2047 maximum
offset
0
0
0
size
7500
2500
2500
free
1396
2447
2497
bpages
flags
PO-PO-PO--
pathname
/informix/ifxdata/inf00/rootdbs_01
/informix/ifxdata/inf00/new_chunk_01
/informix/ifxdata/inf00/new_chunk_02
Expanded chunk capacity mode: disabled
Abb. 4: Ausgabe onstat –d.
------------------------------------------Chunk - Größe :
2500 Pages
Chunk - Free :
2447 Pages
---------Belegt
:
53 Pages
1 + 2 Page im Chunk
--> Chunk Pages sind reserviert
3
Page im Chunk
--> Free Chunk Page
50
Pages
--> Tablespace - Tablespace
------------------------------------------53 Pages belegt beim Neuanlegen eines DBspaces im initial Chunk.
Abb. 5: Beispielerklärung einer onstat –d Ausgabe.
29
Datenbanken
PAGE HEADER
24 Bytes
SLOT1: Tablespace Informationen
SLOT2: DBspace Name, Table Name
SLOT3: Special Columns
SLOT4: Index Informationen
SLOT5: Extent Liste
Slot 5 Slot 3 Slot 2 Slot 1 Time Stamp
4 Bytes 4 Bytes 4 Bytes 4 Bytes 4 Bytes
Abb. 6: Zusammenhang DBspaces, Chunks, Tablespace und Pages.
Abb. 7: Aufbau einer Partition Page (Page aus
dem Tablespace-Tablespace).
select
dbsname DB_Name,tabname Tab_NAME,ti_nextns Number_Extents,
ti_nrows Num_Rows, ti_nptotal Total_Pages
from systabinfo, systabnames
where partnum = ti_partnum –- Verknüpfung systabinfo und systabnames
and
dbsname = "DB-NAME"-- Datenbank-Name
and
tabname not like "sys%" – keine Systemtabellen (wie systables, syscolumns ...)
and
ti_npdata > 0 -- nur Tabellen, keine Indizes, ansonsten = 0
order by 3 desc
Abb. 8: SMI – SQL. Sicht auf die Informationen des Tablespace-Tablespace.
Slot 5: Extent Liste
Informationen zu Anzahl, Größe sowie der Position des Extents
innerhalb des Chunks. Jeder Eintrag, also jedes Extent, belegt 8
Bytes.
Daraus resultieren folgende Größenverhältnisse:
Page Header
Slot Table
Slot 1
24 Bytes
20 Bytes (4 Bytes * 5 Slots)
56 Bytes
100 Bytes
Das bedeutet, dass bei einer angenommenen Pagesize von 4096
Bytes für die Slots 2 - 5 3996 Bytes zur Verfügung bleiben.
Wird ein neues Extent erzeugt, bedeutet das
somit auch einen weiteren 8 Byte Eintrag im
Slot 5 in der Partition Page. Der Verwaltungsaufwand wird genau an dieser Stelle sichtbar.
Besteht ein Objekt aus wenigen Extents, ist
der Verwaltungsaufwand geringer. Besteht
eine Tabelle aus vielen Extents, wirkt sich dieses nicht nur negativ auf das I/O Verhalten
aus, sondern der Verwaltungsaufwand der Extents steigt – durch die längere Extent Liste –
deutlich an.
Die maximale Anzahl der Extents pro Tabelle ist, wie oben ersichtlich, in besonderer Weise von folgenden Gegebenheiten abhängig:
Das SQL-Skript in Abbildung 8 gibt Auskunft
über die Anzahl der Extents einer Tabelle. Also
u. a. die Sicht auf unser Tablespace-Tablespace.
•
Fazit
•
•
Wie groß ist die Pagesize?
(2K oder 4K)
Gibt es Special Columns?
(Slot 3)
Wieviele Indizes sind vorhanden?
(Slot 4)
Der Rest des Speicherplatzes in der Partition Page steht somit
dem Slot 5 der Extent Liste zur Verfügung. Die maximale Anzahl
Extents je Tabelle kann somit variieren. Im Durchschnitt können
Tabellen mit einer Pagesize von 2K ca. 250 Extents und bei einer
Pagesize von 4K ca. 400 Extents belegen.
30
Extents
Mit diesem Artikel erläuterten wir Ihnen zunächst die interne Architektur des IBM Informix
Dynamic Servers bezüglich der Verwaltung
der Extents. Im 2. Teil dieser Reihe, der in einer der nächsten ORDIX News Ausgaben erscheint, lesen Sie, welche Mittel und Möglichkeiten Sie haben, um eine Reorganisation
„performant“ durchzuführen.
Guido Saxler ([email protected]).
Unix
Aktuell
Verzeichnisse
Larry Ratlos in
„Larry, Wildcards und rm“
Larry möchte mal wieder eines der Unix Verzeichnisse aufräumen und findet die Situation der Abbildung 1 in seinem Verzeichnis vor.
zur Überwachung per automountd eingetragen hatte,
stellte er erschrocken fest, das sich keine Kommandos
mehr ausführen ließen.
Da er nur die Unterverzeichnisse in diesem Verzeichnis haben möchte und die Datei „-rf“ das
Überbleibsel eines unkundigen Werksstudenten ist, kopiert er die Dateien file1 bis file7 in die richtigen Verzeichnisse.
Unsere Berater zeigten Larry den einzigen Weg, ohne reboot
aus seinem Schlamassel heraus zu kommen:
1. Auf dem System befinden sich
eine Reihe alternativer Binaries. Um sie zu verwenden, muss Larry den Pfad
entsprechend erweitern:
# PATH=/usr/xpg4/bin:/usr/
ucb:$PATH
# export PATH
Anschließend führt er das
Kommando „rm *“ aus (siehe Abbildung 2), das Dateien löscht, Verzeichnisse aber
stehen lässt. Wie sieht das
ganze nach dem Ausführen
von „rm *“ aus? Und warum sieht es so aus?
Wie hätte Larry das
vermeiden können?
(Die Antwort lautet nicht:
Windows einsetzen!)
Für die ersten 10 Einsender
(natürlich mit der richtigen
und vollständigen Lösung)
haben wir dieses Mal als besondere Weihnachtsaktion
einen Gutschein für eine EinTages-Schulung aus unserem Seminar Angebot bzw.
20 % Rabatt für eine 5-Tages-Schulung. Senden Sie
Ihre Lösung also bis zum
31.12.2004 per E-Mail an
[email protected].
2. Dann kann er mit dem vi-Editor die
/etc/auto_master editieren und
die Zeile mit /usr/bin wieder herausnehmen.
Abb. 1: Das Ratlos Verzeichnis.
3. Anschließend muss der Automounter die neue Konfiguration einlesen:
# /usr/lib/fs/automount -v
Der alte Zustand ist nun wieder hergestellt.
Überwachung von /usr
Etwas schwieriger wird die Lösung,
wenn er nicht /usr/bin, sondern /usr
vom Automounter überwachen lässt.
Ganz ohne Reboot kommt Larry wohl
hier nicht aus ...
Damit er beim nächsten Hochfahren
keine Schwierigkeiten bekommt, sollte er die /etc/auto_master bereinigen. Da er nun aber keinen Editor mehr
zur Verfügung hat (sie liegen ja alle unter /usr/*), muss er die
/etc/auto_master wohl oder übel löschen. Wenn er noch eine
Shell laufen hat, kann er vorher zumindest eine Kopie machen:
# while read line
> do
> echo $line
> done < /etc/auto_master > /etc/auto_master.bak
Abb. 2: Aufräumen und löschen – aber wie
sieht es dann aus?
Die Lösung des Rätsels
aus der ORDIX News Ausgabe 3/2004
Das Rätsel in der letzten ORDIX News war
wohl entweder zu schwer oder so einfach,
dass sich niemand dazu entschließen konnte, unserem Larry auf die Sprünge zu helfen.
Somit musste Larry also einen ORDIX Mitarbeiter zu Rate ziehen.
Überwachung von /usr/bin
Larry hatte auf seinem Solaris-System den Automounter ausprobiert. Nachdem er /usr/bin
Anschließendes Löschen und Rebooten (erfordert Root-Berechtigung!):
# > /etc/auto_master
# /sbin/init 6
Damit bekommt er sein System wieder zum Laufen.
31
Datenbanken
Oracle Internet Directory (Teil III)
In den letzten beiden Ausgaben stellten wir die Installation und Konfiguration sowie die Nutzung des Oracle
Internet Directory (OID) als zentrale Stelle der Namensauflösung in einer Oracle Umgebung vor. In dieser Ausgabe beschreiben wir den Einsatz des OID zur zentralen Benutzer- und Rollenverwaltung für Oracle Datenbanken.
Zielsetzung
Enterprise Security Manager
Dieser Beitrag beschreibt, wie zwei Benutzer auf eine Oracle 9i
Datenbank zugreifen können, ohne sie auf der Datenbank mittels
CREATE USER anzulegen. Die Benutzer werden nur als Objekte
im OID angelegt und dort administriert. Die Benutzer werden sich
über den OID an der Datenbank identifizieren.
Die Erstellung einer eigenen Certification Authority geschieht über ein Skript, welches als
ein Wrapper für den Enterprise Security Manager (ESM) dient. Über das Wrapper-Skript
$ORACLE_HOME/bin/esm wird das grafische
Werkzeug gestartet, mit dem wir viele Schritte der nötigen Konfiguration durchführen werden. Unter anderem erstellen wir die Zertifikate
für die Datenbank und die Benutzer damit.
Die Datenbank mit dem OID läuft auf einem Linux Server. Die
Benutzer melden sich also an derselben Instanz an, in der auch
OID installiert wurde. Die beispielhafte Anmeldung geschieht über
die Kommandozeile mittels sqlplus. Wir gehen davon aus, dass
das OID eingerichtet und konfiguriert wurde, wie in den vorigen
beiden Ausgaben der ORDIX News beschrieben.
Enterprise Security
Die Verwaltung von Enterprise Benutzern und Enterprise Rollen
sowie deren Verwaltung im OID und spätere Authentifizierung der
Benutzer an der Datenbank wird mit dem Begriff „Enterprise Security“ bezeichnet.
Enterprise Security kann nur über sichere, d. h. in diesem Fall
SSL-verschlüsselte Verbindungen realisiert werden. Die Datenbank, an der sich die Benutzer anmelden sollen, muss über einen
sicheren Listener erreichbar sein. Der Verzeichnisdienst ist ebenfalls dahingehend zu konfigurieren.
Zertifikate und Wallets
Für eine SSL-verschlüsselte Verbindung zwischen dem Listener
und der Datenbank ist ein sogenanntes X.509 Zertifikat zu erstellen. Diese Art der Zertifikate nutzt man z. B. auch bei geschützten
Webseiten (HTTPS). Damit kann eine verschlüsselte Verbindung
vom Client zum Server aufgebaut werden.
Wird dem Wrapper-Skript die Option –genca
mitgegeben, so ruft dieses Skript den Befehl
$ORACLE_HOME/sysman/admin/mkRootCert
auf, welcher die für unsere CA benötigten Dateien erstellt.
Wir führen also den Befehl esm –genca an
der Kommandozeile aus. Dabei wird die Eingabe eines Passwortes verlangt, welches zum
Beglaubigen der Zertifikate benötigt wird. Die
Dateien der CA werden im Dateisystem standardmäßig unter /etc/ORACLE/WALLETS/CA
abgelegt.
Nach dem Start des ESM und der Anmeldung
an der OID-Instanz muss die Datenbank, an
der sich die Benutzer anmelden wollen, in einem Oracle Kontext registriert werden. Dazu
wird unter Vorgänge „Datenbank registrieren“
ausgewählt.
Im folgenden Dialog (siehe Abbildung 1) werden die nötigen Informationen eingetragen,
Die Zertifikate werden von einer Certification Authority (CA, Zertifizierungsstelle) ausgestellt. Man geht davon aus, dass Client und
Server den von der CA ausgegebenen Zertifikaten bedenkenlos
vertrauen können.
Bei Oracle werden auch Zertifikate zur sicheren Kommunikation
eingesetzt. Jedes Zertifikat wird in einem sogenannten Wallet
verwaltet. Das Wallet ist durch ein Passwort geschützt. In einem
Wallet können mehrere Zertifikate für verschiedene Kommunikationspartner gespeichert und verwaltet werden. Zur Verwaltung
wird der Oracle Wallet Manager (OWM) benutzt. Dazu später mehr.
In unserem Beispielfall werden wir selbst eine CA erstellen, unsere Zertifikate signieren und in einem Wallet verwalten. In größeren Unternehmen existiert in der Regel eine CA. Bei dieser müssen die Zertifikate beglaubigt werden, bevor sie eingesetzt werden können.
32
Abb. 1: Datenbank im ESM registrieren.
Datenbanken
das Häkchen „Wallet generieren“ gewählt und
ein Passwort vergeben. Im aufkommenden Dialog muss das Passwort der eben eingerichteten CA eingegeben werden, um das Datenbank-Zertifikat zu beglaubigen.
der sqlnet.ora werden in Abbildung 5 dargestellt. Sind Client
und Server nicht identisch, d. h. sollen sich die Benutzer von einem
anderen Computer aus mittels sqlplus anmelden, so sind die Einstellungen im Oracle Net Manager auf diesem Client zu tätigen.
Es wurde nun ein Wallet mit gültigem Zertifikat für die Datenbank erstellt. Das Wallet wurde direkt im OID abgelegt. Zum Aufbau einer verschlüsselten Verbindung über
einen sicheren Listener benötigen wir es
allerdings auch im Dateisystem des Linux
Servers, damit der Listener es zur verschlüsselten Verbindung zur Datenbank nutzen
kann.
Um das erstellte Wallet aus dem OID ins
Dateisystem herunterzuladen, starten wir
den Oracle Wallet Manager (OWM), ein grafisches Werkzeug zur Bearbeitung von Oracle Wallets (siehe Abbildung 2) und darin
enthaltenen Zertifikaten. Mit dem OWM la- Abb. 2: Walletverwaltung mit dem Oracle Wallet Manager.
den wir das eben erstellte Wallet aus dem
OID herunter. Dazu wird das Passwort benötigt, welches im Dialog aus Abbildung 1 einlistener.ora:
gegeben wurde.
SSL_LISTENER =
Nun speichern wir das Wallet im Verzeichnis
/etc/ORACLE/WALLETS/oracle. Hier kann prinzipiell jedes beliebige Verzeichnis angegeben
werden, allerdings konnte in unseren Tests der
sichere Listener nur gestartet werden, wenn
das Wallet sich im o. g. Verzeichnis befand.
Konfiguration eines SSL-DatenbankListeners
Um die Datenbank über eine sichere Verbindung anzusprechen, muss ein Listener eingerichtet werden, mit dem wir die Datenbank
über ein sicheres Protokoll erreichen können.
Mittels des Oracle Net Managers richten wir
einen Listener ein, der über das TCPS Protokoll und den Port 1575 angesprochen wird.
Die daraus resultierenden Einträge für die
listener.ora sind in Abbildung 3 zu sehen.
(DESCRIPTION =
(ADDRESS=
(PROTOCOL = TCPS)(HOST = localhost)(PORT = 1575)
)
)
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /etc/ORACLE/WALLETS/oracle)
)
)
SSL_CLIENT_AUTHENTICATION=FALSE
Abb. 3: SSL-Listener und andere Einträge des Net Managers.
Der SSL-Listener muss nun nur noch wissen,
wo das Wallet für die Datenbank liegt. Dazu
nutzen wir wieder den Oracle Net Manager.
Für die Konfiguration des Servers wird der
Pfad zu dem Datenbankwallet, welches der
Listener benutzen soll, angegeben (siehe Abbildung 4).
In unserem Beispiel sind Client und Server
identisch, so dass noch die Einstellung für den
Client erfasst werden muss. Hierzu ist der Pfad
zum Wallet wieder zu entfernen und nur der
Radiobutton „Client“ auszuwählen. Die Konfiguration muss in beiden Fällen gespeichert
werden. Die resultierenden Änderungen an
Abb. 4: Konfiguration eines SSL-Listeners mit dem Oracle Net Manager.
33
Datenbanken
Der SSL-Listener muss für die Datenbank als local_listener
in der init.ora eingetragen werden. Damit der Name aufgelöst werden kann, ist er zudem in der tnsnames.ora einzutragen (siehe
Abbildung 6). Zudem ist in der init.ora ein Eintrag für den Parameter rdbms_server_dn hinzuzufügen.
In unserem Fall lautet der Eintrag:
rdbms_server_dn=“cn=oiddb,cn=OracleContext,dc=ordix,dc=de“
Dieser muss dem Distinguished Name (DN) entsprechen, auf den
das Zertifikat im Enterprise Security Manager ausgestellt wurde.
Dieser Eintrag wurde vom ESM auch im OID angelegt. Damit ist
eine Zuordnung der Datenbank zu genau diesem Eintrag im Verzeichnisdienst möglich, um dort später globale Rollen und Enterprise Rollen miteinander verknüpfen zu können.
Damit die Änderungen in der init.ora wirksam werden, müssen
die Instanz und der Listener neu gestartet werden.
sqlnet.ora:
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /etc/ORACLE/WALLETS/oracle)
)
)
SQLNET.AUTHENTICATION_SERVICES= (all)
SSL_CLIENT_AUTHENTICATION = TRUE
SSL_VERSION = 0
Abb. 5: Einträge des Net Managers in der sqlnet.ora.
init.ora:
local_listener=SSL_LISTENER
tnsnames.ora:
SSL_LISTENER =
(DESCRIPTION =
(ADDRESS=
(PROTOCOL = TCPS)(HOST = localhost)(PORT = 1575)
)
)
Konfiguration eines SSL-OID-Listeners
Für die Bereitstellung eines SSL-Zugangs zum
Verzeichnisdienst muss jetzt der OID-Listener
konfiguriert werden, um einen sicheren Kanal
zwischen Client und Datenbank bereitzustellen.
Hierzu wird der Oracle Directory Manager verwendet, in dem ein zusätzliches Configset definiert wird. Dies geschieht am besten durch
die Bearbeitung einer Kopie des bestehenden
Haupt-Configsets. Die Option „SSL aktivieren“
muss ausgewählt werden. Weitere Parameter wie der Pfad zum Datenbankwallet, der SSL
Port des OID-Listeners und die Berechtigungsprüfungsart müssen eingestellt werden (siehe Abbildung 7).
Zum Abschluss muss der OID-Server mit diesem Configset neu gestartet werden.
oracle@linux:~> oidctl \
connect=oiddb server=oidldapd \
instance=1 configset=1 start
Zwischenstand
Wir haben einen DB-Listener eingerichtet, mit
dem wir über das TCPS Protokoll auf eine Datenbank zugreifen können. Für diese DB haben wir ein Zertifikat erstellt, das sowohl im OID
als auch im Dateisystem in einem Wallet vorliegt. Der SSL-DB-Listener mit TCPS auf Port
1575 sowie der SSL-OID-Listener auf Port 636
benutzen dieses Wallet, um die Kommunikation mit der Datenbank zu verschlüsseln.
Alle Einstellungen für die sqlnet.ora, listener.ora
und tnsnames.ora wurden beschrieben und
die grundlegende Konfiguration ist damit abgeschlossen.
Jetzt werden nur noch die Benutzer und Rollen im OID und in der Datenbank eingerichtet.
Abb. 6: Einträge der init.ora und tnsnames.ora.
Abb. 7: Erstellung eines SSL-Configsets mit dem oidadmin.
34
Abb. 8: Hinzufügen einer Enterprise Rolle im
ESM.
Datenbanken
globale Rollen nur durch Zuordnungen mit dem OID genutzt
werden können. Sie können nicht an Datenbank Benutzer
vergeben werden.
create role g_roleA identified globally;
create role g_roleB identified globally;
grant create table to g_roleA;
grant create view to g_roleB;
Enterprise Rollen
Enterprise Rollen sind nicht in der Datenbank definiert, sondern sind Objekte im OID. Dort werden sie mit globalen
Rollen aus einer oder aus mehreren Datenbanken verknüpft.
Hier findet auch die Zuweisung von Enterprise Benutzern
an Enterprise Rollen statt.
Enterprise Benutzer
Abb. 9: Hinzufügen eines Enterprise-Benutzers im
ESM.
Zum weiteren Verständnis werden nun einige
Begriffe erläutert, die im Zusammenhang mit
Enterprise Security eine Rolle spielen:
Shared Schema
Als Shared Schema wird ein Schema in der
Datenbank bezeichnet, welches ohne einen
DN als Identifizierungskriterium angelegt wurde. Wird ein Benutzer mit einem DN angelegt, so wäre lediglich eine 1-zu-1 Beziehung
zwischen einem Zertifikat und einem Benutzer in der Datenbank möglich. Ein derartiger
Benutzer wird auch „globaler Benutzer“ genannt und existiert direkt in der DB und nicht
als Objekt im OID. Das Shared Schema wird
mit folgendem Kommando erstellt.
CREATE USER \
s_schema identified globally as ’’;
Enterprise Benutzer existieren nicht in der Datenbank, sondern werden als Einträge im OID angelegt. Sie sind dort
einem Shared Schema zugeordnet und bekommen eine oder
mehreren Enterprise Rollen zugewiesen.
Enterprise Rollen und -Benutzer werden über den Enterprise Security Manager angelegt. Er erstellt dabei automatisch die entsprechenden Einträge im OID. Auf diese Weise werden nun die Enterprise Rollen e_role1 und e_role2 sowie die beiden Enterprise
Benutzer lk und ml in der OracleDefaultDomain angelegt.
Beim Anlegen der Benutzer sind Angaben, wie z. B. der vollständige Name der Person, die E-Mail-Adresse und natürlich ein Passwort für die spätere Anmeldung an der Datenbank zu machen.
Beim Anlegen des Benutzers ordnen wir ihm auch gleich eine der
eben erstellten Enterprise Rollen zu. Das geschieht über den Reiter
„Enterprise-Rollen“ im Dialog „Benutzer erstellen“. Der Benutzer
lk wird der e_role1 und ml wird der e_role2 zugeordnet (siehe Abbildungen 8 und 9).
Als nächstes muss unserem benutzten Oracle Context unter
dc=ordix,dc=de eine sogenannte Benutzersuchbasis zugeordnet
Auf diese Weise besteht später die Möglichkeit, dem Shared Schema über den ESM einen oder mehrere Enterprise Benutzer zuzuweisen, die mit diesem Schema auf der Datenbank arbeiten. Dem Schema können mittels GRANT Zugriffsrechte innerhalb der Datenbank erteilt werden. Es ist sinnvoll, dieses
Schema mit einer sehr geringen Anzahl von
Rechten auszustatten und alle weiteren Rechte über die globalen Rollen zu vergeben.
grant create session to s_schema;
Globale Rollen
Globale Rollen ähneln in einer Oracle Datenbank normalen Rollen. Ihnen werden auf üblichem Weg Rechte zugewiesen. Der Unterschied zu einer herkömmlichen Rolle ist, dass
Abb. 10: Zuordnung einer Benutzersuchbasis zu einem Oracle
Context.
35
Datenbanken
werden. Unter dieser sucht der OID die Enterprise Benutzer. Unsere Enterprise Benutzer wurden unter cn=Users,dc=ordix,dc=de
(siehe Abbildung 10) angelegt. Somit ist dieser DN als Benutzersuchbasis im Reiter „Allgemein“ unseres Oracle Contextes hinzuzufügen.
Alle unsere Enterprise Benutzer sollen auf der Datenbank mit demselben Shared Schema (s_schema) arbeiten. Die Einträge für die
Enterprise Benutzer müssen dazu dem Shared Schema zugeordnet werden. Wir wählen in unserem Context unter dem Punkt „Datenbanken“ unsere oradb aus und wählen unter dem Reiter „Datenbankschema-Zuordnung“ die Benutzer aus und tragen das
Schema ein.
Privilegien
Die endgültigen Privilegien, die die Benutzer später in der Datenbank haben werden, ergeben sich aus den erstellten globalen
Rollen in der Datenbank. Im ESM werden die globalen Rollen unseren Enterprise Rollen zugeordnet. Die jeweilige Enterprise Rolle wird unter der OracleDefaultDomain ausgewählt. Unter dem
Reiter „Globale Datenbankrollen“ nehmen wir die Zuordnung zu
den globalen Rollen vor.
Auf diese Weise richten wir es ein, dass g_roleA den beiden
Rollen e_role1 und e_role2 zugeordnet wird, während g_roleB
nur der Rolle e_role2 zugeordnet wird. Daraus ergibt sich die
in Abbildung 11 gezeigte Zuordnung.
Nun sind alle Konfigurationen und Zuordnungen durchgeführt. Die
Benutzer können sich jetzt über den OID an der Datenbank anmelden, ohne darin mit einem CREATE USER Befehl angelegt
worden zu sein. Es wird das Passwort benutzt, welches beim Erstellen des Enterprise Benutzers angegeben wurde. Dies ist in
unserem Fall das Standardpasswort welcome1, welches der ESM
beim Anlegen eines Enterprise Benutzers vorgibt. Dieses kann
natürlich beliebig geändert werden kann.
Der Benutzer lk meldet sich an der Datenbank z. B. mit dem
Befehl sqlplus lk/welcome1@oradb mit dem Netservicenamen
oradb an.
Abb. 11: Zuordnungen zwischen Enterprise Benutzern, Enterprise Rollen, globalen Rollen und
einem Shared Schema.
Fazit
In dieser Artikelreihe haben wir Ihnen zwei
Haupteinsatzgebiete für das Oracle Internet
Directory beschrieben. Zum einen wurde eine
Möglichkeit aufgezeigt, die Auflösung von
Netservicenamen vom Oracle Names zu trennen, indem diese nun im OID abgelegt und
damit von einer zentralen Stelle aus im Netzwerk genutzt und gepflegt werden können.
Zum anderen haben wir Ihnen in diesem Artikel die Benutzer- und Rollenverwaltung mit
dem OID vorgestellt. Benutzer müssen nicht
mehr in einer Instanz angelegt werden, sondern liegen als Objekte im LDAP-Verzeichnisdienst. Dies erleichtert den Administrationsaufwand ungemein. Die Installation und Konfiguration des OID und die Einbindung von
SSL für die Absicherung von Verbindungen
ist mit Sicherheit nicht ganz trivial, allerdings
sind dies einmalige Schritte und die im Nachhinein gesparte Zeit ist sehr groß.
Michael Lindermann, Lars Hendrik Korte
([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.
Voraussetzungen
Die Teilnahme an den Seminaren „Oracle SQL“ (DB-ORA-01) und
„Oracle Datenbankadministration Grundlagen“ (DB-ORA-03) wird
zwingend vorausgesetzt.
36
Zielgruppe
Fortgeschrittene Datenbankadministratoren.
Dauer: 5 Tage
Kursgebühr/Teilnehmer: 1.890 € zzgl. MwSt.
Termine
17.01.
25.04.
25.07.
17.10.
-
21.01.2005
29.04.2005
29.07.2005
21.10.2005
in
in
in
in
Wiesbaden
Wiesbaden
Wiesbaden
Wiesbaden
Java/XML
J2EE und Persistenz:
Ein heißes Eisen (Teil I)
Mit dieser Artikelserie packen wir ein „heißes Eisen“ an. Denn wir wollen die Persistenzstrategie in einem
größeren, aktuellen Softwareprojekt, das auf J2EE Technologie basiert, darstellen. Das berührt die „uralte“
Frage – uralt in den Zeitmaßstäben der Softwarebranche gerechnet – „Wie kommen die Daten aus der Datenbank in die Objekte des Hauptspeichers?“
Im ersten Beitrag steht die Entscheidungsfindung im Mittelpunkt. Wir sehen uns an, wie die Ausgangslage
war, welche Alternativen für eine geeignete Persistenzstrategie zur Auswahl standen und wie bzw. anhand
welcher Kriterien eine Entscheidung getroffen wurde.
Ausgangslage
sierte sich die grundlegende Schichtenarchitektur nach klassischem Muster für J2EE Anwendungen sehr schnell heraus.
In dem Softwareprojekt hat ORDIX zusammen
mit dem Kunden ein sehr ehrgeiziges Ziel
verfolgt: Das Modernisieren einer klassischen
Client Server Anwendung zur Auftragsbearbeitung für Außendienstmitarbeiter eines großen Serviceunternehmens.
In nahezu allen ernst zu nehmenden J2EE Anwendungen – also
auch in unserem neu zu erstellenden System – existiert in der Architektur eine Schicht oder ein abgrenzbarer Bereich für die Persistenz, der als Nahtstelle zwischen der eigentlichen Geschäftslogik
und der relationalen Datenbank fungiert (siehe Abbildung 1).
Das ließ sich nur mit einer kompletten Neuarchitektur realisieren. Aus so genannten „Fat
Clients“ mit komplexer GUI und Geschäftslogik
auf Laptops sollten „Thin Clients“ werden, die
auf Kleingeräten (PDA, Handheld) mit minimaler Systemausstattung ablauffähig sind.
Dafür war es notwendig, nahezu die gesamte
Geschäftslogik der alten Clients zu bündeln
und auf die Serverseite zu verschieben. Und
da, wo Geschäftslogik auf Serverseite gefragt
ist, kommt man „ruckzuck“ zu Geschäftsobjekten – „Auftrag“, „Benutzer“, „Leistung“, „Produkt“, etc. Die müssen natürlich dauerhaft
gespeichert, d. h. „persistent“ gemacht werden.
Rahmenbedingungen und
Projektvorgaben
Zu Anfang setzten wir uns mit allen Projektmitgliedern zusammen, als da wären: Entwickler, Architekt, Projektleiter,
QS Beauftragte und wer sich sonst noch
so im Projektumfeld tummelte. Die technischen Rahmenbedingungen wurden
zügig geklärt. Durch eine Vorgabe des
Kunden hatte der Borland Enterprise Server 5.2 (BES), der im JBuilder Enterprise
Edition 9 enthalten ist, überraschenderweise als Application Server die Nase
vorn (wer dazu mehr wissen will, dem
sei unsere Reihe Application Server im
Vergleich, Seite 44 in dieser News empfohlen – Anmerkung der Redaktion).
Den Datenbank Part sollte Oracle in der
Version 9.2i ausfüllen. Zudem kristalli-
Alternativen für die Persistenzlogik
Alsdann ging es an die Aufstellung der Möglichkeiten, welcher
Speicherstrategie innerhalb der Serverimplementierung der Vorzug zu geben sei. Es kristallisierten sich vier Alternativen heraus,
die prinzipiell in die engere Auswahl kamen (eine lose Aufzählung
ohne Anspruch auf Vollständigkeit):
1. Stateful Session Beans und JDBC
Stateful Session Beans (SFB) spielen in diesem Ansatz die Rolle
der datenhaltenden Objekte. Per JDBC (Java Database Connectivity) hat der Entwickler selbst dafür zu sorgen, wie die Daten
aus der Datenbank in die Java Objekte gelangen. Und er muss
definieren und entscheiden, wann das zu geschehen hat. Der
Ansatz entspricht der Philosophie „Ich mache mal lieber alles
selbst, dann hab ich wenigstens alles in der Hand“.
$SSOLFDWLRQ6HUYHU%(6
:HE&RQWDLQHU
(-%&RQWDLQHU
6HVVLRQ
%HDQV
-63
6HUYOHWV
&OLHQW
/D\HU
3UHVHQWDWLRQ
/D\HU
3HUVLVWHQ]ORJLN
5'%06
2UDFOHL
(QWLW\
%HDQV
%XVLQHVV
/D\HU
'DWD/D\HU
Abb. 1: Schichtenarchitektur mit Hervorhebung der Persistenzlogik, die den
„Business Layer“ mit dem „Data Layer“ verbindet.
37
Java/XML
Das kann aus vielerlei Gründen problematisch sein. Ein Grundsatz der Programmierung für J2EE Anwendungen lautet: „Nutze
die Technologie und Standards, die dir zur Verfügung stehen und
setze sie für die Zwecke ein, für die sie gemacht wurden“. Und
Session Beans sind in der J2EE Philosophie definitiv nicht für die
Datenhaltung und für Persistenzaufgaben vorgesehen.
gen bieten neben der reinen Umsetzung der
Spezifikation häufig auch noch Zusatztools an
und sprechen von einer nahtlosen Integrationsmöglichkeit in J2EE Umgebungen.
2. Entity Beans mit BMP
In mehreren, teilweise kontrovers geführten
Diskussionsrunden, und nachdem wir einem
JDO Hersteller die Möglichkeit gaben, sein
Tool vorzustellen, wurden dann die maßgeblichen Kriterien, nach denen eine Entscheidung zu treffen war, aufgestellt:
In der Architektur von großen, typischen J2EE Anwendungen sollen nach den Vorstellungen von SUN, dem Initiator und Taktgeber
der J2EE Spezifikation, die datenhaltenden Entitäten von sogenannten „Entity Beans“ repräsentiert werden.
Das sind Java Objekte, die bestimmte Konventionen einhalten und
vorgegebene Interfaces implementieren müssen, damit der Application Server sie ordentlich verwalten kann. Das gilt im Übrigen
auch für alle anderen Arten von Software Komponenten, die im
Application Server in spezialisierten „Containern“ residieren – seien
es JSP und Servlets in Web-Containern oder Enterprise Java
Beans (Session-, Entity-, Message Driven Beans) im EJB-Container.
Der Container entscheidet bei Entity Beans in jedem Fall darüber,
wann Daten zu laden bzw. zu speichern sind. Über das wie kann
noch explizit nachgedacht werden. Bei Entity Beans mit BMP (Bean
Managed Persistence) ist der Entwickler programmatisch dafür
verantwortlich. Er hat mit Hilfe von JDBC dafür zu sorgen, dass
Datenbankinhalte in die passenden Attribute der Entity Beans „geschaufelt“ werden. Die Entity Bean kann also einen Zustand annehmen bzw. umgekehrt den Zustand auch wieder wegschreiben.
3. Entity Beans mit CMP
Mit der Version EJB 2.0 wurde die Alternative Entity Beans mit
CMP (Container Managed Persistence) sehr stark um viele nützliche und zuvor schmerzlich vermisste Eigenschaften erweitert. Der
manchmal etwas umständlichen Benutzung von Entity Beans mit
BMP wurde damit eine echte, komfortablere Alternative zur Seite
gestellt.
Bei diesem Ansatz kümmert sich der EJB-Container auch darum,
wie die persistenten Daten von bzw. in die entsprechenden Attribute gelangen. Das Mapping von Entity Bean Attributen auf Datenbankfelder geschieht deklarativ in sogenannten DDs (Deployment Deskriptoren), die in XML Dateien abgelegt sind.
Will man die volle Bandbreite der J2EE Möglichkeiten in diesem
Bereich nutzen, kann auch CMR (Container Managed Relationships)
Verwendung finden. Bei CMR liegt auch das Management von Beziehungen (1:1, 1:n, m:n) in der Verantwortung des Containers.
4. JDO
JDO steht für Java Data Objects. Es handelt sich um eine noch
relativ neue Spezifikation von SUN, die die prinzipiellen Schwierigkeiten des Object Relational Mapping aufgreift und Lösungsvorschläge bietet.
Dabei wurde sehr viel Wert darauf gelegt, die sehr mächtigen Konzepte der Objektorientierung wie Vererbung und Polymorphie möglichst umfassend umzusetzen. Hersteller von JDO Implementierun-
38
Entscheidungskriterien
Kosten
Die Borland Produkte (BES und JBuilder)
waren von vornherein gesetzt und damit „automatisch“ im Projekt-Budget verplant. Es hätte sehr gewichtiger Gründe bedurft, um für die
Persistenzkomponente ein separates Produkt
mit eigenen Anschaffungs- und Lizenzkosten
zu wählen. Das wäre bei der Verwendung einer JDO Implementierung nötig geworden, so
dass für diese Alternative sehr schnell die Luft
dünn wurde.
Zu erwartende Komplexität
Bei diesem Punkt halfen die Erfahrungen der
ORDIX AG weiter, die in vielen Kundenprojekten immer wieder mit dieser Thematik konfrontiert ist. Des Weiteren hielten wir uns – d. h.
das Projektteam, bestehend aus Mitarbeitern
des Kunden und der ORDIX – an Empfehlungen aus dem Hause Borland, die der Variante „Entity Beans mit CMP“ ein gutes Zeugnis
ausstellten.
Im Projektvorfeld bestätigte sich in RAP (Rapid Prototyping) Versuchen der Eindruck, dass
man mit CMP und CMR zu guten Ergebnissen kommen kann. Aber auch die Eindrücke
und Stellungnahmen, die wir im Projekt zu
JDO sammelten und bekamen, ließen ordentliche Ergebnisse für dieses Kriterium erwarten. Dies spielgelte sich auch in der abschließenden Bewertungsmatrix wieder (siehe Abbildung 2).
Zu erwartende Qualität der Persistenzlösung
Dieser Punkt war am schwierigsten zu beantworten und einzuschätzen. In einem Vorprojekt,
das beim gleichen Kunden ebenfalls in Java
realisiert war, hatte sich gezeigt, dass Eigenentwicklungen in diesem zentralen Bereich ab
einer gewissen Größe sehr leicht zu Problemfällen werden können. Das hört und liest man
häufig in Erfahrungsberichten zu größeren Softwareprojekten und kann von uns auch nur be-
Java/XML
stätigt werden. Dadurch rutschte die Alternative „Stateful Session Beans mit
JDBC“ auch aus der engeren Wahl.
Entwicklungszeiten
Kosten
Zu erwartende
Komplexität
Zu erwartende EntwicklungsQualität
zeiten
Bewertung
Stateful Session Beans
0
-1
-1
0
-2
Entity Beans, BMP
0
0
0
1
1
Entity Beans, CMP
0
2
2
1
5
JDO
-1
2
3
-1
3
Wer den Alltag in größeren SoftwareAbb 2: Entscheidungsmatrix mit Bewertungszahlen.
projekten kennt, weiß, was jetzt kommt.
Wie nicht anders zu erwarten, sahen
auch wir uns mit einem, um es milde auszueiner übersichtlichen Tabelle dar. Wie in den vorhergehenden Abdrücken, ehrgeizigen Terminplan konfrontiert.
schnitten schon angedeutet, konnte die Entscheidung nur zwiD. h. binnen eines halben Jahres musste alschen den Alternativen Entity Beans mit CMP und JDO fallen.
les fertig sein.
Sehr ungünstig für JDO wirkt sich der Faktor Kosten aus. Aber
Das bedeutete, dass die Entscheidung für die
auch die zu erwartenden, längeren Einarbeitungszeiten in diese
Persistenzfrage noch brisanter wurde, denn
für die meisten Projektmitglieder völlig neue Technologie wirkten
eine Fehlentscheidung in diesem zentralen
sich in der Bewertungsmatrix negativ aus.
Segment hätte projektgefährdenden Charakter gehabt.
So haben wir uns auf die Persistenzstrategie „Entity Beans mit
CMP, CMR“ festgelegt und sind mit diesem Ansatz zuversichtlich
Und eine Umkehr auf halbem Weg oder ein
in die Design- und Umsetzungsphase gestartet. Die GrößenordNeuanfang in der Projektmitte hätte ebenfalls
nung des Datenmodells umfasst ca. 70 Tabellen im relationalen
katastrophale Folgen nach sich gezogen und
Schema mit etwa ebenso vielen Beziehungen untereinander.
musste unter allen Umständen vermieden
werden. Es deutete sich bei JDO ein nicht zu
Die erste Designphase und die Initialisierung des Datenmodells
unterschätzender Zeitfaktor für die reine Einerfolgte mit Together Control Center. Das ehemals eigenständige
arbeitung an, was sich in der Bewertung neAnalyse- und Designwerkzeug ist inzwischen in JBuilder Enterprise
gativ auswirkte.
Edition 9 fest integriert.
Entscheidungsmatrix
Nachdem die Alternativen und Kriterien ausgearbeitet und formuliert waren, musste eine
Entscheidung gefällt werden. Ein probates
Hilfsmittel zur transparenten und nachvollziehbaren Entscheidungsfindung stellt die Entscheidungsmatrix dar.
In die Entscheidungsmatrix trägt man nach
bestmöglichem Ermessen für die Frage: „Wie
gut erfüllt die Alternative A das Kriterium K?“
eine Bewertungszahl in die Zelle [K,A] ein. Dabei sollte Folgendes eingetragen werden:
• eine 0, falls keine oder eine neutrale Antwort vorliegt
• eine negative Zahl bei negativer Antwort
• eine positive Zahl bei positiver Antwort
Bei besonders ausgeklügelten Verfahren können die Spalten zusätzlich noch unterschiedliche Gewichtungsfaktoren bekommen. Das ist
in unserem Fall aber nicht passiert. Um nun
eine Maßzahl für die Eignung einer Alternative bezüglich der Entscheidungskriterien zu
erhalten, summiert man die Bewertungszahlen einer Zeile auf und trägt sie in die Spalte
Bewertung ein.
Entscheidungsfindung
Das haben wir für unsere Problemstellung
praktiziert. Das Ergebnis stellt Abbildung 2 in
In der eigentlichen Realisierungsphase wurde dann ausschließlich mit dem JBuilder weitergearbeitet. Auch die Änderungen und
Erweiterungen am Datenmodell, d. h. an den Entity Beans, erfolgten in der Phase im EJB-Designer, einem spezialisierten Designwerkzeug der JBuilder IDE (Integrated Development Environment).
Wie nicht anders zu erwarten war, gab es während der Projektphase kritische Momente, insbesondere als die „CMP Engine“ des
BES einen sehr hässlichen, schwer nachvollziehbaren Fehler zeigte. Der wurde nach sehr mühsamer und anstrengender Suche,
die in der Hauptsache von unserem Projektteam geleistet wurde,
dann vom Application Server Hersteller behoben.
Fazit
Obwohl sich die J2EE Anwendung, auf der dieser Artikel basiert,
beim Kunden noch nicht im realen Einsatz befindet und man daher noch nicht von absoluter Praxistauglichkeit sprechen kann,
zeichnet sich doch eine ordentliche Stabilität der gewählten Persistenzlösung „Entity Beans mit CMP“ ab. Explizite Lasttestszenarien und -durchläufe lassen auch im Hinblick auf die Performance
zufriedenstellende Ergebnisse erwarten.
ORDIX hat während des gesamten Projektverlaufs in allen wichtigen Phasen tatkräftige Unterstützung geleistet und gerade beim
Thema Persistenz geballtes Know-how und Erfahrung eingebracht.
Ein nachfolgender Artikel in Ausgabe 2/2005 wird die Umsetzungsphase und die eigentliche Technologie noch etwas genauer in Augenschein nehmen.
Dr. Hubert Austermeier ([email protected]).
39
Datenbanken
Oracle AS Discoverer 10g:
Integriertes Reporting
für Oracle-Anwendungen
Der Oracle AS Discoverer ist eine integrierte Lösung zum Erstellen von Berichten, ad-hoc-Abfragen, Analysen über alle Arten von in Oracle erfassten und verarbeiteten Daten: OLTP-Systeme, Datawarehouses oder
die Oracle E-Business Suite. Mit dem Discoverer können die Berichte im Intra- oder Internet veröffentlicht
werden oder an die Adressaten gezielt in verschiedenen Formaten übermittelt werden.
Der Discoverer erlaubt es, schnell und komfortabel Abfragen über
Daten in Oracle Anwendungen oder anderen Datenbanken zu erstellen und die erhobenen Daten für Analysen und Berichte zu nutzen. Die zu Grunde liegenden Daten werden in einem so genannten End User Layer durch frei zu benennende Objekte repräsentiert, die die entsprechenden Metadaten und Relationen enthalten
und per drag and drop in die Berichte eingebunden werden können. Diese Berichte können Tabellen und/oder Graphen enthalten.
legenden Prozesse sind J2EE-basiert als Discoverer Services im AS integriert (siehe Abbildung 2). Neben den weiterhin verfügbaren
Client-Server Anwendungen der Version 3.1
gibt es nun als zusätzliche Werkzeuge:
•
Bis zur Version 3.1 bestand der Discoverer aus zwei Client-Server Anwendungen, die unter Windows liefen:
•
1. Dem Discoverer Administrator, in dem der Zugriff zu den Daten gestaltet und administriert wurde und wird. Hier wird ein
End User Layer (EUL) erstellt, in dem die Metadaten für den
Zugriff auf die Datenbasis festgelegt werden, auf die beim Erstellen von Berichten zugegriffen wird.
2. Dem Discoverer Desktop, in dem Berichte entwickelt und ausgeführt wurden (siehe Abbildung 1).
•
Die Veröffentlichung der Berichte wurde über undokumentierte
Funktionen oder selbst erstellte Web-Lösungen abgehandelt. Auch
in der aktuellen Version sind Discoverer Desktop und Administrator weiterhin verfügbar als Teil des Oracle AS Discoverer.
Oracle AS Discoverer und Oracle Application Server 10g
Der Discoverer ist in der neuesten Version in den Oracle Application
Server integriert und als three tier-Architektur ausgelegt: Die grund-
•
Discoverer Plus, zum Einsehen und Erstellen von Berichten. Discoverer Plus ist realisiert als thick client java applet.
Discoverer Viewer, ein HTML-basierter thin
client, dem Standardzugang für die „Endkunden“ der Berichte.
Discoverer Administrator ist zusammen mit
dem Oracle Warehouse Builder und Oracle Reports Teil der Oracle Developer Suite.
Discoverer Portlets erlauben es, Berichte
und Arbeitsmappen im Oracle Portal einzubinden. Alle webbasierten Anwendungen werden von den Discoverer Services,
der „engine“ des Discoverers, koordiniert.
Aufgaben und Struktur der einzelnen
Komponenten: Discoverer Plus
Discoverer Plus ist die Realisierung des Discoverer Desktops als Java Anwendung und
stellt dessen Möglichkeiten komplett zur Verfügung. Darüber hinaus enthält er gegenüber
der alten Version einige neue Funktionen. Discoverer Plus ist das Standard-Werkzeug zum
Erzeugen von Berichten. Neue Funktionen werden in Zukunft hier implementiert.
Bei der grafischen Gestaltung bietet Discoverer Plus gegenüber dem Discoverer Desktop
erheblich mehr. Er nutzt, wie Oracle Reports
und Oracle BI Beans, die BI Beans Graphic
Beans. Plus ist als Java Anwendung realisiert
und wird als HTML-Seite über das Oracle
JInitiator PlugIn aufgerufen. Dadurch wird eine
Kommunikation zwischen dem Abfrage-Werkzeug, dem Application Server als middle tier
und der Oracle Datenbank hergestellt.
Abb. 1: Discoverer Desktop.
40
Ein Vorteil dieser Lösung ist, dass auf dem
Client-PC keine Software installiert sein muss.
(Achtung: beim ersten Aufruf ist unter Windows eine Installationsberechtigung nötig!)
Datenbanken
Allerdings benötigt der entsprechende PC etwas mehr Leistung als der Desktop als ClientServer Anwendung. Beim Arbeiten an komplexen Berichten ist der Desktop als für Windows konzipierte Anwendung etwas schneller als die Java Lösung Discoverer Plus. Auch
in der Druckausgabe hat der Desktop leichte
Vorteile.
Beim Erstellen von Arbeitsmappen, die Graphen enthalten, sollte, wenn als Frontend der
Viewer genutzt wird, immer Discoverer Plus
genutzt werden, da beide – im Unterschied zum
Desktop – mit den BI Beans Graphic Beans
arbeiten.
Bei der Darstellung von mit dem Desktop erstellten Graphen im Viewer kann es zu Unterschieden und Problemen kommen.
Discoverer Plus
Browser
Browser
Discoverer Viewer
HTML
Browser
Browser
Discoverer
Portlet Provider
OracleAS
HTML
Browser
Browser
Discoverer Services
Services
Discoverer
OracleDS
End User
Layer
Discoverer
Discoverer
Administrator
Administrator
Discoverer
Discoverer
Desktop
Desktop
Abb. 2: Komponenten und Aufbau des Oracle AS Discoverer.
Discoverer Viewer
Der Discoverer Viewer ist als thin client realisiert und wird wie Plus als HTML-Seite aufgerufen. Mit dem Viewer können die in Plus oder
Desktop erstellten Berichte aufgerufen und
eingesehen werden.
Die Berichte können auch in Form von Arbeitsmappen (siehe Abbildung 3) zur Verfügung gestellt werden. Mit dem Viewer können keine
Berichte erstellt oder bearbeitet werden, es
können aber Parameter hinzugefügt und ein
einfaches slice and dice der Daten des Reports durchgeführt werden. Die so veränderten Berichte können allerdings nicht abgespeichert werden.
Der Viewer stellt im täglichen Einsatz für die
meisten Endbenutzer den Standardzugriff auf
die Berichte dar. Plus wird denjenigen zur Verfügung gestellt, die Berichte für andere Benutzer erstellen. Wie bei Discoverer Plus wird
auch im Viewer beim Einsehen der Berichte
eine Verbindung zur Oracle Datenbank hergestellt, so dass im Bericht der jeweils aktuelle Datenbestand zu sehen ist.
In einer Preference-Datei können das Aussehen und der Funktionsumfang des Viewers auf
dem Oracle Application Server den Vorgaben
eines Unternehmens für das Intranet angepasst werden.
Über ein einfaches „View“ hinaus bietet der
Viewer Funktionen, die eine flexible Analyse
der Daten erlauben und zum Teil in den operativen Bereich des Discoverer Desktops hineinreichen.
Die reine „View“-Aufgabe nehmen im Oracle
AS Discoverer die Discoverer Portlets wahr:
Abb. 3: Arbeitsmappe als HTML exportiert.
Discoverer Portlets und Application Server
Mit den Discoverer Portlets können Berichte, die mit Discoverer
Plus erstellt wurden, im Oracle Portal angeboten und aufgerufen
werden. Die Berichte übernehmen dabei das Aussehen, das in
Plus oder Viewer festgelegt wurde. In den Kreuztabellen kann aber
kein Drilldown durchgeführt werden. Der Bericht über die Portlets
hat wirklich „View“-Charakter.
Zusätzlich zu den Portlets, die die Arbeitsmappen repräsentieren,
gibt es auch ein Portlet, das die Liste der verfügbaren Arbeitsmappen für eine öffentliche oder für private Discoverer-Verbindungen
anzeigt.
Während Discoverer Plus und der Viewer bei jedem Aufruf einer
Arbeitsmappe die zu Grunde liegenden Daten aktualisieren, bieten die Arbeitmappen über die Portlets einen Snapshot, der zu
bestimmten, festzulegenden Zeiten aktualisiert wird. Es kann aber
ein Link eingepflegt werden, der die entsprechende Arbeitsmappe
im Viewer startet, wenn aktuelle Daten oder die Drilldown-Funktionen benötigt werden.
41
Datenbanken
Funktion
Desktop
PLUS
Viewer
Portlets
Berichte erstellen und
bearbeiten
9
9
8
8
Berichte mit aktuellem
Datenbestand einsehen
9
9
9
8
Berichte mit Snapshot
einsehen
8
8
8
9
Erweiterte graphische
Funktionen
8
9
9
9
Export zu MS Excel
9
9
9
8
Integriert in ORACLE
Single Sign-on
9
9
9
9
8
Bedingungen erstellen
9
9
8
Kalkulationen erstellen
9
9
8
8
Arbeitsmappe speichern
9
9
8
8
Unterstützung von
Unterabfragen
9
8
8
8
Suchen in der Tabelle
9
8
8
8
Alle Zeilen zählen
9
8
8
8
Formatieren der
Darstellung von
Ausnahmen
9
8
8
8
Abb. 4: Möglichkeiten der verschiedenen Komponenten.
Anwendungsbereiche
Mit dem Discoverer bietet Oracle ein User-Interface, mit dem, wenn die Metadaten für die
Datenbasis im EUL festgelegt sind, per „click
and drop“ Berichte erstellt werden können –
ähnlich wie Business Objects oder Actuate.
Dimensionen können flexibel hinzugefügt, Drilldowns sehr schnell erstellt werden. Die Berichte greifen im Viewer immer auf die Basisdaten
zu und bieten so immer ein aktuelles Bild. In
die Berichte können verschiedene mathematische und Datenbank-Funktionen eingebaut
werden. Durch die Metadaten im EUL wird die
Datenbasis abstrahiert. Dem Endbenutzer, der
die Berichte benötigt (z. B. den Fachabteilungen), wird sie in Form von selbsterklärenden
Objekten dargeboten, aus denen der Bericht
zusammengestellt werden kann.
Uwe Rübesamen ([email protected]).
ORDIX auf der Linux World Expo
ORDIX nahm in diesem Jahr das erste Mal als Aussteller auf der 5. Linux World Conference & Expo (26. - 28.
Oktober 2004) teil. Mit 14.600 Besuchern und ca. 150 Ausstellern und Mitausstellern hat sich die Linux World
Expo als Informationsplattform für IT Entscheider und Linux Spezialisten aus Industrie, Handel und dem
öffentlichen Sektor etabliert.
Auf der ORDIX Infoinsel auf dem Novell Stand hatten die LinuxBegeisterten die Möglichkeit, ihre individuellen Linux Themen zu
diskutieren. Dabei war das Themenspektrum weit gefächert: Von
„Linux Hochverfügbarkeits-Cluster“, „Oracle für Linux“ über „Nagios“
und „Serverkonsolidierung“ bis hin zu „Testsystemen mit VMware“.
Neben dem Austausch am Stand stellte ORDIX sein Know-how
auch in einem informativen Fachvortrag zur Verfügung:
„Hochverfügbarkeit mit Open Source Software unter Linux“
Referent Christof Amelunxen, Berater der ORDIX AG, Paderborn,
behandelte in seinem Vortrag Grundlagen der Hochverfügbarkeit
und der Clustertechnologie. Darüber hinaus beschrieb er deren
technische Umsetzung mit Open Source Software als Alternative
zu kommerziellen HV-Lösungen. Die rund 60 Zuhörer lauschten
gespannt den Topics des Vortrags:
•
•
•
•
•
•
Hochverfügbarkeit und Cluster allgemein
Datenintegrität im Cluster / Storageszenarien
Einsatz von DRBD - Distributed Replicated Block Device
Das Linux High Availability Project
Fallbeispiel / Projektbericht
Fragen / Diskussion
Sollten Sie den Vortrag verpasst oder weiterführendes Interesse
haben, schicken Sie einfach eine E-Mail an [email protected].
Wir helfen Ihnen gern!
42
Special-Highlight waren neben dem Vortrag
die beiden attraktiven Sonder-Pakete „Suse
Linux Starter Package“ und „Suse Linux OpenExchange ready-to-run“. Mit der Sonderaktion
für Teilnehmer dieser Messe zeigte das ORDIX
Team Wege auf, wie man Linux mit professioneller Unterstützung kostengünstig und effektiv im Unternehmen zum Einsatz bringt.
Verschaffen auch Sie sich Einblicke in neueste
technologische Entwicklungen. Finden Sie Entscheidungshilfen für Investitionen in linuxbasierten IT-Strukturen. Sprechen Sie uns zum Einsatz von Open Source Software in Ihrem Unternehmen an: [email protected]
Aktuell
Einladung zum
„META-DOK“ Testday
Das entstandene Know-how Ihrer Mitarbeiter – sei es durch Projekttätigkeit oder durch die tägliche Arbeit –
ist die Basis für den nachhaltigen Erfolg Ihres Unternehmens.
Aus diesem Grund ist ein Wissensmanagement heutzutage unerlässlich. Möchten auch Sie in Ihrem Unternehmen ein Dokumenten- und Informationsmanagementsystem einführen? Wir zeigen Ihnen anhand des
Produkts „META-DOK“, wie Sie viel Zeit und somit auch Kosten bei der sinnvollen Archivierung und Verwaltung von Informationen sparen können.
„META-DOK“ Testday
Termin:
Dienstag, 22. Februar 2005
Beginn:
15:00 Uhr
Dauer:
ca. 3 Stunden
Ort:
ORDIX AG
Trainingszentrum
Kreuzberger Ring 13
D-65205 Wiesbaden
Die Aufgabe von META-DOK ist ...
Wissen und Informationen, die in Ihrem Unternehmen existieren und deren Erlangung teuer bezahlt wurde, zu strukturieren, zu verwalten, zu archivieren und allen Mitarbeitern – oder
auch Ihren Kunden – punktgenau zur Verfügung zu stellen.
Die Teilnahme ist kostenlos!
Wissen ist „Wissen, wo was steht“
Herzlich lädt Sie die ORDIX AG am Dienstag,
den 22. Februar zum META-DOK Testday ein.
Bei dieser Gelegenheit können Sie sich selbst
von den Stärken des Dokumenten- und Informationsmanagementsystems „META-DOK“
überzeugen.
Ihres Unternehmens systematisch verwalten, archivieren und für
Anfragen zur Verfügung stellen können.
In Kooperation mit unserem Partner METALEVEL stellen wir Ihnen eine umfassende Lösung zu den Themen Dokumenten-, Informations- und Wissensmanagement vor und
möchten Ihnen veranschaulichen, wie Ihre
interne Organisation von dieser Lösung profitieren kann.
Genießen Sie den Vorzug, sich im Rahmen des META-DOK Testdays von unseren Spezialisten beraten zu lassen und erarbeiten
Sie selbst am PC Ihr individuelles Szenario für die Umsetzung
eines Dokumenten- und Informationsmanagements in Ihrem Unternehmen.
Wir zeigen Ihnen, wie Sie mit Hilfe dieses integrierten Systems wesentliches Know-how
Wir freuen uns darauf, Sie bei uns zu begrüßen. Für einen kleinen Imbiss haben wir gesorgt!
Ihre Anmeldung
Anmeldungen an:
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.
• 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 „Meta-Dok“
• online: http://www.ordix.de/metadok/
Anmeldeschluss: 18.02.2005
Der Rechtsweg ist ausgeschlossen.
43
Java/XML
Reihe Application Server im Vergleich (Teil II):
JBoss
Die Open Source Software „JBoss“ startete 1999 als offener EJB-Container. Damals waren kommerzielle
Systeme im professionellen Umfeld die erste Wahl. Mittlerweile gehört JBoss jedoch weltweit zu den am
meisten verbreiteten J2EE Application Servern. Seit Juli 2004 ist JBoss gar von SUN für J2EE 1.4 zertifiziert
worden. In unserer Reihe zum Vergleich der Application Server darf er daher auf keinen Fall fehlen.
Plattform
Da JBoss in reinem Java implementiert ist, ist er ebenso plattformunabhängig wie Java selbst.
J2EE
JBoss ist der erste Open Source Application Server, der von Sun
für J2EE 1.4 zertifiziert wurde [1].
Ein Teil der unterstützten Standards kann der Abbildung 1 entnommen werden.
Von der Konkurrenz grenzt sich JBoss auch durch das von ihm
unterstützte neue Themenfeld der „aspect orientation“ (AO) ab.
Es verspricht den Entwicklern stark vereinfachte Entwicklungsmodelle, ohne Service-Funktionen zu opfern. Im Kern geht es
darum, auf der Stufe von Application Servern, Java-Objekte dynamisch zur Laufzeit ohne zusätzliche Codierung um Funktionalitäten
anzureichern oder vorhandene Funktionalitäten zu ändern. Dies
können zum Beispiel Funktionen wie Clustering, Persistenz, Transaction, Security oder Distributed Cash sein. Diese und weitere
Spezifikation/
WebSphere 5
JBoss 4.0
Borland ES
BEA
Oracle
Standard
5.2.1
Weblogic
AS
(Stand 05/04)
(Stand 11/04)
Spezifikation/Standard WebSphere 5
JBoss 4.0 Borland ES BEA Weblogic Oracle AS
CORBA
X
v2.3.1
(Stand 05.2004)
EJB
v2.0
v2.1
CORBA
X
v2.3.1
IIOP EJB
X
durch CORBA
v2.0
v2.1
J2EE IIOP
v1.3
X
JAAS J2EE
v1.0
JAF
1.2
JAAS
JAXP JAF
JAXP
JAXR
JAXR
JAX-RPC
JAX-RPC
JCA
JCA
JCE JCE
v1.4
durch
v1.3
v1.0
v1.4
v1.0
v1.0
v1.0
1.1
38018
v1.2
v1.0
X
37987
v1.0
v1.2
1.0
v1.0
X
X
1.0
v1.0
X
v1.1
v1.5
v1.5
durch
J2SE
1.4
durch
J2SE
durch
J2SE
1.4
durch
J2SE
JDBC JDBC
v2.0
v2.0
JMS
JMS
v1.0
v1.0
v1.1
JMX
JMX
X
X
v1.2
JNDI
JNDI
X
X
v1.2.1
JSP
JSSE
JSP
JSSE
JTA
JTA
LDAP
LDAP RMI
RMI
SOAP
UDDI
X
v1.0
X
Java ServletsX
Java Mail
Java Servlets
SAAJ
Java Mail
SAAJ
v1.2
SOAP
UDDI
WSDL
X.509
v1.2
X
v1.0
X
X
v.2.3
v1.0
v1.1
v2.0
X
v1.1
v1.2
v1.2.1
v2.0
X
v1.0.1B
v1.0.1B
durch jndi
durch jndiX
X
v2.4
v2.4
v1.3
v.2.3
38018
1.2
37987
v1.3
v1.2
1.1
37987
v1.2
v1.1
1.1
2.0
2.0
1.0
v1.1
v2
v1.1
WSDL XML
X.509
X
durch JAAS
v1.1
X
durch JAAS
XML
X
X
1.0
X
v2
X
Abb. 1: Überblick über unterstützte Spezifikationen und Standards
bei WebSphere 5 und JBoss. Die anderen Application Server werden
in den nächsten Teilen dieser Reihe analysiert.
44
sogenannte „Aspekte“ stellt JBoss 4.0 dem
Entwickler bereits zur Verfügung.
EJB Container und Bean Feature
Der von JBoss genutzte EJB-Container ist
kompatibel zum EJB Standard 2.1. Da die
JBoss Group im Java Community Process
(JCP) mitwirkt und im Rahmen einer Expertengruppe (JSR 220) an der Gestaltung der neuen EJB 3.0 Spezifikation mitwirkt, ist abzusehen, dass der JBoss Community neue EJBFeatures zeitnah bereitgestellt werden.
Webservices
JBoss implementiert mit dem J2EE 1.4 Standard auch die neuen „J2EE Web Services“.
Dem Entwickler ermöglicht dies z. B. über Firewallgrenzen hinweg über den normalen WebPort Remote-Procedure-Calls als XML-verpackte Nachrichten aufzurufen (JAX-RPC).
Die JBoss-Implementierung (JBossWS) basiert dabei auf dem ausgereiften „Apache Axis“
als unterliegendes „web service framework“.
System Management
Bei der Administration des Systems kommt
immer wieder der Grundgedanke der einfachen Handhabung ins Blickfeld.
Der JBoss-Entwickler muss sich keine Gedanken über RMI-Stubs und -Skeletons machen,
wenn er neue Komponenten verteilen will. Die
Komponenten-Archive müssen lediglich in das
passende Deploy-Verzeichnis des laufenden
JBoss kopiert werden und schon ist die jeweilige EJB zugreifbar. Intern wird dies möglich,
da von Anfang an Features wie dynamische
Proxies und Hot Deploy/Hot Redeploy in den
Application Server integriert wurden.
Der Microkernel von JBoss ist auf dem J2EEStandard zum Management verteilter JavaApplikationen aufgebaut (JMX). Somit können
alle Komponenten von der eigenen EJB bis
zum Verhalten im Cluster über eine einheitliche Schnittstelle gesteuert werden. Einheitliche Standards wie SNMP, WBEM oder HTTP
erleichtern die Steuerung. JBoss entspricht
Java/XML
dabei auch den Anforderungen einer Serviceorientierten Architektur (SOA). Als Beispiel für
deren Akzeptanz sei erwähnt, dass Novell
seinen internen Application Server in seinen
Portallösungen ab 2005 komplett durch JBoss
ablösen will.
Link
[1] http://www.jboss.org/services/press/j2eecertfinal.pdf
[2] http://www.jboss.com/partners/jbossinside
Verfügbarkeit und Skalierung
Im Cluster lässt sich jedes Java-Objekt ausfallsicher und lastverteilt verwalten. Neben
EJBs, JMS und HTTP lassen sich sämtliche
Arten von Java-Objekten verwalten – so auch
die guten alten „POJOs“ (Plain Old Java Objects). Besondere Features sind auch die automatische Erkennung von neuen Knoten im
Cluster, oder „farming“ bzw. „distributed Deployment“ von JBoss-Komponenten.
Lizenzen
JBoss fällt unter die GNU Lesser General Public License (LGPL). Somit fallen für den Anwender keinerlei Lizenzkosten zur Nutzung
des Produkts an. Die „JBoss Group“, die das
Produkt vertreibt, erwirtschaftet ihre Umsätze
durch kommerzielles Coaching und Consulting – Mailinglisten und Foren sind die preiswerte Alternative. Die Handbücher zum Server sind mit weniger als 10 $ kostenpflichtig.
Eine gute Onlinedokumentation und Tutorials erleichtern jedoch
den schnellen Einstieg. Der Support wird durch eine stetig wachsende Schar an „JBoss Authorized Service Partner“-Firmen ständig erweitert. Mehr als 100.000 Downloads verzeichnet die JBoss
Group jeden Monat.
Fazit
Mit dem JBoss 4.0 ist neben Linux und Apache ein weiteres Beispiel für eine gute Open Source-Alternative erwachsen. Kein anderer Application Server hat eine ähnlich hohe Zuwachsrate, gemessen an der Zahl der Produktivinstallationen. Wer sich dafür
interessiert, in welchen kommerziellen Produkten JBoss mit Erfolg eingesetzt wird, sei auf die JBoss-Webseite [2] verwiesen.
Bevor Sie die Entscheidung für einen Application Server treffen,
sollten Sie sich den JBoss einmal näher anschauen.
Lesen Sie als Entscheidungshilfe auch die nächsten Teile unserer Reihe. Wir werden uns mit Borland ES, BEA Weblogic und
natürlich auch mit dem Oracle AS beschäftigen, dessen Bedeutung in den letzten Monaten erheblich zugenommen hat.
Holger Bartnick ([email protected]).
Impressum
Herausgeber:
ORDIX AG
Aktiengesellschaft für
Softwareentwicklung, Beratung,
Schulung und Systemintegration,
Paderborn
Redaktion:
Helma Jenniches, Sascia Brinkmann
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
Autoren dieser Ausgabe:
Christof Amelunxen, Dr. Hubert Austermeier,
Holger Bartnick, Christoph Borowski, Holger
Demuth, Stefanie Heither, Irina Hochhalter,
Martin Hoermann, Ulrike Kögler, Wolfgang
Kögler, Lars Hendrik Korte, Andreas Kother,
Michael Lindermann, Uwe Rübesamen, Antonio Salguero, Guido Saxler, Markus Schreier
Copyright:
ORDIX AG. Alle Rechte vorbehalten. Die Zeitschrift ORDIX News hat
eine Auflage von 8.800 Exemplaren. Sie wird von der ORDIX AG an
ausgesuchte Kunden verteilt und kann für 2,20 Euro 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.
45
Datenbanken
Oracle 10g RAC 380V
Ursprünglich sollte die Kampagne zur Einführung von Oracle 10g etwa wie folgt lauten: „Oracle Grid – so
sicher wie das Stromnetz“. Nach den großen Zusammenbrüchen des Stromnetzes in den USA kurz vor der
Kampagne besann sich das Marketing auf eine andere Strategie. Sicher wie das Netz? Wir stellen Ihnen heute
einen Erfahrungsbericht von Oracle 10g RAC auf Linux vor.
Warum eigentlich RAC
Bevor die Entscheidung für oder gegen RAC fällt, sollte das Projektteam detailliert die Vorteile und die Kosten gegeneinander abwägen. Zweimal 220 Volt gibt auch bei Oracle 380 Volt, aber ob Ihre
Applikation tatsächlich einem Starkstromaggregat gleicht oder doch
einem normalen Elektromotor ähnelt, dessen Spulen bei 380 Volt
verglühen, bedarf in der Regel einer detaillierten Analyse.
Bei diesem Artikel steht die Technologie zum Einsatz von 10g auf
Linux im Mittelpunkt. Schritt für Schritt erläutern wir das Vorgehen
zum erfolgreichen Einsatz von RAC. Änderungen zu Oracle 9i
erläutern wir an gegebener Stelle.
Hardware, Betriebssystem und Oracle
Wie auch bei allen anderen Versionen, läuft 10g nur auf zertifizierten Systemen. Aufgrund der besonderen Komplexität stehen
allerdings bei weitem nicht so viele Plattformen wie etwa für Single Instance Systeme zur Verfügung. Bis Ende Oktober konnte 10g
unter Linux nur auf Redhat 2.1 Enterprise Server installiert werden. Inzwischen hat aber auch Suse Linux die Zertifizierung durchlaufen. De Facto stehen also bisher „magere“ zwei zertifizierte
Linux Systeme zur Verfügung. Die jeweils aktuelle Zertifizierungsmatrix finden Sie unter [1].
Wie üblich bei RAC ist ein Interconnect zwischen den beiden Servern notwendig, um mittels Cache Fusion Datenblöcke und andere Ressourcen zwischen den Instanzen auszutauschen. Mit 10g
steht nun erstmalig auch die Zertifizierung von
Infiniband – einer vielversprechenden Technologie – an.
Ebenfalls eine Neuerung: Mit 10g steht RAC
auch in der Standard Edition zur Verfügung,
sogar ohne Aufpreis. Allerdings werden dabei
nur maximal vier Prozessoren im gesamten
Cluster zugelassen.
Voraussetzungen
Zur knotenübergreifenden Installation von
RAC setzt Oracle eine konfigurierte Secure
Shell (ssh) voraus. Abbildung 2 zeigt die hierzu
notwendigen Schritte. Die erzeugten Dateien
(authorized_keys) müssen „gegenseitig“ auf
jedem Knoten ins Verzeichnis ~oracle/.ssh
kopiert werden, damit der sichere, gegenseitige Zugriff ohne Passwort möglich ist. Zur
Überprüfung kann man z. B. das Kommando
ssh <knoten1> date auf dem Knoten 2
ausführen, was erfolgreich ohne Ausgabe eines Passwortes laufen muss. Genauso aber
auch umgekehrt.
Kernel Parameter
Zum reibungslosen Betrieb der Datenbank ist
die Anpassung zahlreicher Kernelparameter
notwendig. Die wichtigsten sind in Abbildung
3 aufgeführt. Mit dem Linux Befehl sysctl –w
(RedHat) können die Kernelparameter dynamisch geändert werden.
In der Datei /etc/sysctl.conf müssen die
o. a. Parameter eingetragen werden. Dieses
bewirkt bei jedem Reboot ein erneutes Setzen der entsprechenden Parameter.
Insbesondere falsch konfigurierte UDP Parameter können die Performance des RAC Systems dramatisch beeinflussen, ähnlich etwa
wie die Sichtverhältnisse in einem geschlossenen Raum mit einer Leuchtstoffröhre von
180 Volt.
Raw Device versus Cluster Filesystem
Abb. 1: Beispiel einer Oracle 10g RAC Architektur.
46
Auf die Oracle Datenbankdateien – Online
Redo Log Files, Control Files und Data Files
– muss der konkurrierende Zugriff von jeder
Instanz, also von jedem Knoten, möglich sein.
Datenbanken
Hierzu muss ein zentraler Speicher, z. B. SAN,
zur Verfügung stehen, auf dem prinzipiell folgende Zugriffsmöglichkeiten bestehen:
cd ~oracle
mkdir .ssh
chmod 700 .ssh
ssh-keygen –t rsa
ssh-keygen –d dsa
cat id_rsa.pub >>authorized_keys
cat id_dsa.pub >>authorized_keys
Abb. 2: Konfiguration Secure Shell (ssh) auf
beteiligten Cluster-Nodes.
# Disables packet forwarding
net.ipv4.ip_forward = 0
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Disables the magic-sysrq key
kernel.sysrq = 0
# ORACLE RAC
kernel.shmmax= 3000000000
kernel.shmmni= 4096
kernel.sem= 250 32000 100 128
net.ipv4.ip_local_port_range=1024 65000
# UDP Kernelparameter Paket Größe
net.core.rmem_max = 262144
net.core.wmem_max = 262144
net.core.rmem_default = 262144
net.core.wmem_default = 262144
Abb. 3: Oracle 10g RAC Kernel-Parameter für
Linux.
à RAW Devices
à Verwendung eines Logical Volume
Managers (LVM)
à Oracle Cluster Filesystem (OCFS)
Unter Linux (Redhat 2.1 Enterprise Server) bleibt zunächst nur
die Möglichkeit der Verwendung des OCFS oder des ASM (Automated Storage Management), da mit fdisk nur maximal 15 separate Partitionen (SCSI) angelegt werden können und zur Zeit
auch die Unterstützung eines LVM nicht gegeben ist.
Die Installation des OCFS gestaltet sich recht einfach. Die notwendigen RPM Pakete stehen unter [2] für die entsprechenden
Linux- und Hardware-Plattformen zur Verfügung. Mit dem Werkzeug ocfstool lässt sich das OCFS konfigurieren (siehe Abbildung 4). Des Weiteren kann man u. a. über ocfstool die Oracle
Cluster Filesysteme „mounten“ beziehungsweise „unmounten“.
Cluster Ready Service
Der Oracle Cluster Ready Service (CRS) ist die eigentliche Clusterware. Als Oberbegriff enthält dieser Dienst verschiedene Funktionalitäten. Hierzu gehören unter anderem die schon in 9i bekannten Dienste Global Service Daemon (GSD) und Oracle Cluster
Manager.
Neu ist, dass Oracle mit dem CRS auch eine Clusterware für alle
zertifizierten Plattformen liefert und sich hiermit unabhängig von
proprietären Cluster Diensten (Service Guard, HACMP, RMS usw.)
macht. Wird eine proprietäre Cluster Software verwendet, so kann
diese optional auch verwendet werden.
Das Starten des CRS wird durch die inittab initiiert, das Herunterfahren durch ein entsprechendes rc-Skript.
Oracle Installation und Anlegen der Datenbank
Die weiteren Schritte erfolgen nahezu identisch wie schon unter
Oracle 9i. Die Oracle Software wird mit der RAC Option installiert.
Anschließend erfolgt die Konfiguration und Installation der Datenbank mit der entsprechenden Berücksichtigung von RAC.
Fazit
Wie schon unter Oracle 9i besteht die größte Herausforderung in
der sorgfältigen Umsetzung der zahlreichen Installationsschritte.
Vorab ist die gesamte Hard- und Softwarekonfiguration mit der
Kompatibilitätsmatrix zu überprüfen. Die Dokumentation lässt an
einigen Stellen Wünsche offen. Insbesondere der neue Komplex
Cluster Ready Service ist nur sehr spärlich beschrieben.
Abb. 4: OCFS-Tool zur Konfiguration des Oracle
Cluster Filesystems.
Beim Hantieren mit Starkstrom empfehlen wir eine gute Ausbildung. Besuchen Sie unsere RAC Schulung, damit Ihre Motoren
mit 380 Volt ihre volle Leistung entfalten. Infos zu dem Seminar
finden Sie in unserem Trainingsshop unter http://training.ordix.de.
Link
[1] http://metalink.oracle.com
[2] http://otn.oracle.com
Martin Hoermann, Guido Saxler ([email protected]).
47

Documentos relacionados