
| NetInfo Directory Interner Verzeichnisdienst,der unter Mac OS unteranderem zur Verwaltung der lokalen Benutzer und Gruppen dient. |
| LDAP3 Verzeichnisdienst unter Unix, ähnlich NetInfo Directory unter Mac OS. |
| Open Flexible Architecture (OFA) Genormte Verzeichnisstruktur für den Aufbau eines Oracle DB Servers. |
| SystemStarter Daemon unter Mac OS zum Starten von Diensten, vergleichbar mit inetd unter Unix. |
Schon seit der Oracle Version 9i existiert ein Release für das Betriebssystem Mac OS X, das jedoch nie den Entwicklungsstatus verlassen hat. Erst mit Version 10 schaffte Oracle den kompletten Sprung auf den Mac.
Zuvor hatten Anwender nur die Wahl zwischen den beiden "Datenbanksystemen": FileMaker Pro und Sybase. Um der Konkurrenz das Feld nicht kampflos zu überlassen, fiel bei Oracle Anfang 2000 die Entscheidung, auch Mac OS X in das Portfolio der zu unterstützenden Architekturen aufzunehmen.
Ob Larry Ellison schon damals von Steve Jobs Plänen wusste, zur Intel Plattform zu wechseln, bleibt wohl ein Geheimnis der beiden Freunde und Geschäftspartner.
Zur Zeit ist ausschließlich Oracle 10g Release 1 für Mac OS Server 10.3 verfügbar. Doch auch die Installation unter der Standard Mac OS 10.4 Version ist möglich, wenngleich diese nicht vom Oracle Support abgedeckt wird. Vorausgesetzt wird die Installation der Apple Developer Tools [1].
Die Installation von Oracle auf Mac OS X unterscheidet sich nicht fundamental von der bisherigen Herangehensweise. Vielmehr gibt es kleine Unterschiede, vergleichbar mit einer Installation unter Windows zu einer Installation unter Solaris.
Dies fängt beim Einrichten der Benutzer gleich an. Mac OS X verwaltet die lokalen Benutzer-Accounts und Gruppen nicht, wie üblich, in der /etc/passwd bzw. der /etc/group.
Diese werden bei Mac OS zentral in einem Verzeichnis (NetInfo Directory) hinterlegt, vergleichbar mit einem LDAP3-Dienst. Zum Erstellen des Benutzers "oracle" und der beiden Gruppen "oinstall" und "dba" kann die grafische Oberfläche "NetInfo Manager" herangezogen werden. Effizienter geschieht dies über das Terminal.
sudo nicl . -create /groups/oinstall sudo nicl . -append /groups/oinstall gid 600 sudo nicl . -append /groups/oinstall passwd "*" sudo nicl . -create /groups/dba sudo nicl . -append /groups/dba gid 600 sudo nicl . -append /groups/dba passwd "*"
sudo nicl . -create /users/oracle sudo nicl . -append /users/oracle uid 500 sudo nicl . -append /users/oracle gid 600 sudo nicl . -append /users/oracle shell /bin/bash sudo nicl . -append /users/oracle home /Users/oracle
Im Anschluss erfolgt das Erstellen des Home-Verzeichnisses unter /Users/oracle und die Zuweisung eines Passworts in gewohnter Unix-Manier.
sudo mkdir /Users/oracle sudo chown oracle:oinstall /Users/oracle sudo passwd oracle
Zu den weiteren Vorbereitungen zählen das Anlegen der OFA-Verzeichnisstruktur und das Überprüfen von Kernel-Parametern. Vorgaben für letztere können dem Dokument "Oracle Installation Guide for Mac OS X" entnommen werden, welches im Installationsarchiv liegt und unter [2] heruntergeladen werden kann.
Die Kernel-Parameter können mit dem Kommando sysctl abgefragt und gesetzt werden, wie auf den meisten Unix-Systemen. Auf unserem Testrechner mussten nur zwei Parameter erhöht werden:
sudo sysctl -a | grep maxproc sudo sysctl -w kern.maxproc=2048 sudo sysctl -w kern.macprocperuid=2048
Damit die Änderungen auch nach einem Reboot gesetzt bleiben, ist es ratsam, diese unter /etc/sysctl.conf zu hinterlegen.
Das Setzen der Shell Limits ist wiederum Mac OS spezifisch. Die Limits werden in der Datei /System/Library/StartupItems/IPServices eingetragen. Abbildung 1 zeigt diese Datei. Die eingetragenen Erweiterungen sind rot markiert.
StartService() ( if [ -a /etc/com.apple.named.conf.proxy ] then echo "Starting Internet address sharing" /usr/libexec/InternetSharing fi ulimit -Hu 2068 ulimit -Su 2068 ulimit -Hn 65536 ulimit -Sn 65536 } |
Damit ist der größte Teil der Vorbereitungen getroffen. Als nächstes sollte nach Möglichkeit die Benutzerumgebung des Benutzers Oracle definiert werden, indem die folgenden Variabeln in der Konfigurationsdatei .bash_profile gesetzt werden:
umask 022 export ORACLE_BASE=/Users/oracle/install export ORACLE_HOME=/oracle/product/10g export ORACLE_SID=BOSKOP export PATH=$PATH:$ORACLE_HOME/bin
Nun kann die Installation der Software unter dem Benutzer Oracle erfolgen. Dazu muss man das heruntergeladene cpio-Archiv entpacken und den Installer starten. Die nachfolgenden Java Dialoge dürften nun jedem DBA vertraut sein (siehe Abbildung 2).
![]() |
| Abb. 2: Der bekannte Oracle Installer. (vergrößern) |
Die einzelnen Schritte der Installation sind identisch mit denen unter Unix bzw. Windows. Ist die Software erfolgreich installiert, kann anschließend mit Hilfe des Database Configuration Assistant (dbca) die Datenbank erstellt werden. Das Einrichten von Oracle Net wird vom Net Configuration Assistant (netca) im Anschluss übernommen. Abbildung 3 zeigt Oracle unter Mac OS X im Einsatz.
![]() |
| Abb. 3: Nach der Installation: Oracle unter Mac OS X in Aktion. (vergrößern) |
Mac OS X nutzt für das Starten und Stoppen von Diensten den SystemStarter und nicht, wie auf anderen Unix Systemen, den inet Daemon. Der SystemStarter sucht die Start-/Stoppskripte unter den folgenden Verzeichnissen:
Um eine Oracle Instanz nun automatisch beim Booten hochzufahren, können die in Abbildung 4 und 5 abgedruckten Beispielskripte verwendet werden. Hierfür müssen diese im Verzeichnis
#!/bin/bash
# Globale Variabeln
ORACLE_HOME=/oracle/product/10g
PATH=$PATH:$ORACLE_HOME/bin
ORACLE_OWNER=oracle
ORACLE_OWNER_PATH=/Users/oracle
ORACLE_SID=BOSKOP
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_HOME PATH ORACLE_SID LD_LIBRARY_PATH
StartService()
{
ConsoleMessage 'Starting Oracle listener...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
ConsoleMessage 'Started Listener.'
ConsoleMessage 'Starting Oracle databases...'
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
ConsoleMessage 'Started Oracle database.'
}
StopService()
{
ConsoleMessage 'Stopping Oracle databases...'
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
ConsoleMessage 'Stopped Oracle database.'
ConsoleMessage 'Stopping Oracle listener...'
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/onsctl start"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/onsctl stop"
ConsoleMessage 'Stopped Listener.'
}
RestartService()
{
StopService
StartService
}
RunService "$1"
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Description</key>
<string>Oracle 10g Database Server</string>
<key>Provides</key>
<array>
<string>Oracle 10g Database</string>
</array>
<key>Requires</key>
<array>
<string>Disks</string>
</array>
<key>Uses</key>
<array>
<string>Disks</string>
<string>Network</string>
<string>NFS</string>
</array>
<key>OrderPreference</key>
<string>Late</string>
</dict>
</plist>
|
Während ich diesen Artikel schreibe, läuft die Datenbank nun schon seit drei Wochen unter Mac OS X. Bis auf die Schwierigkeiten bei der Installation (siehe Kasten "Wurm im Apfel"), läuft das System stabil.
Wurm im Apfel - Mögliche Fehler während der InstallationBei der Installation von Oracle, insbesondere beim Erstellen der Datenbank mit Hilfe des Database Configuration Assistants, kann es unter Mac OS X 10.4 zu Problemen kommen. Bricht der Installer mit einer Fehlermeldung ab, so kann dies über die Wahl des richtigen C-Compilers "gefixt" werden. Hierfür ist vor der Installation von Oracle der folgende Befehl abzusetzen: sudo gcc_select 3.3 Da Oracle die Version 10g offiziell nur bis Mac OS Server 10.3.4 unterstützt, kommt es beim Linken zu Problemen mit der gcc Version 4, die den Mac OS X Versionen > 10.4.x beiliegt. Danach sollte die Installation sauber verlaufen. Treten dann beim Erstellen der Datenbank folgende charakteristische Fehler auf, dyld: Symbol not found: _SSL_ALG_CLIENT_AUTH_MODE_RSA_SIGN_CLIENTSIDE_BS Referenced from: /oracle/product/10g/lib/libnnz10.dylib Expected in: flat namespace ORA-12547: TNS: lost contact errorso kann dies durch einen kleinen Workaround behoben werden: mv $ORACLE_HOME/lib/libnnzLC.dylib $ORACLE_HOME/lib/libnnzLC.dylib.bak cd $ORACLE_HOME/bin relink all mv $ORACLE_HOME/lib/libnnzLC.dylib.bak $ORACLE_HOME/lib/libnnzLC.dylib Dieses Problem taucht jedoch nur bei Mac OS X Version 10.4.x auf und wird hoffentlich durch das nächste Oracle Release behoben. Ein bekannter Fehler schlägt beim Stoppen des Listeners zu. Der Befehl wird abgesetzt, bleibt jedoch hängen. Der Listener ist anschließend in einem unbrauchbaren Zustand. Er lässt sich weder Stoppen noch Starten. Auch hierfür gibt es einen Workaround: onsctl start lsnrctl stop onsctl stop |
Zu wünschen wäre, dass Oracle die Weiterentwicklung vorantreibt, so dass auch das zweite Release von Oracle 10g für die Mac Plattform erscheint - ohne die Kinderkrankheiten eines ersten Releases.
Die Zahlen sprechen dafür: Apple konnte nicht nur im Konsumentenbereich bei Desktop-Systemen und iPods einen Zuwachs verzeichnen, sondern auch im Storage- und Server-Markt. Wie Gartner berichtete, hat Apple den Umsatz mit Speichersystemen im letzten Jahr verdoppeln können und liegt damit auf Platz 10 der Rangliste. Der Umstieg von Apple zur Intel Architektur könnte weitere Portierungen bei Oracle vereinfachen und gleichzeitig die Kosten hierfür senken.
Michael Lindermann (info@ordix.de).