Oracle-Programmierung - Datenbankprogrammierung Und -Administration

download Oracle-Programmierung - Datenbankprogrammierung Und -Administration

of 503

Transcript of Oracle-Programmierung - Datenbankprogrammierung Und -Administration

Heinz-Gerd Raymans

Oracle-ProgrammierungDatenbankprogrammierung und -administration

Bitte beachten Sie: Der originalen Printversion liegt eine CD-ROM bei. In der vorliegenden elektronischen Version ist die Lieferung einer CD-ROM nicht enthalten. Alle Hinweise und alle Verweise auf die CD-ROM sind ungltig.

ADDISON-WESLEYAn imprint of Pearson EducationMnchen Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam

Die Deutsche Bibliothek CIP-Einheitsaufnahme Ein Titeldatensatz fr diese Publikation ist bei Der Deutschen Bibliothek erhltlich Die Informationen in diesem Produkt werden ohne Rcksicht auf einen eventuellen Patentschutz verffentlicht. Warennamen werden ohne Gewhrleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit grter Sorgfalt vorgegangen. Trotzdem knnen Fehler nicht vollstndig ausgeschlossen werden. Verlag, Herausgeber und Autoren knnen fr fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung bernehmen. Fr Verbesserungsvorschlge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar. Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulssig. Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwhnt werden, sind gleichzeitig auch eingetragene Warenzeichen oder sollten als solche betrachtet werden. Umwelthinweis: Dieses Produkt wurde auf chlorfrei gebleichtem Papier gedruckt. Die Einschrumpffolie zum Schutz vor Verschmutzung ist aus umweltvertrglichem und recyclingfhigem PE-Material.

10 9 8 7 6 5 4 3 2 1 04 03 02 01 ISBN 3-8273-1733-9 2001 by Addison-Wesley Verlag Ein Imprint der Pearson Education Deutschland GmbH Martin-Kollar-Strae 1012, D-81829 Mnchen/Germany Alle Rechte vorbehalten Einbandgestaltung: Lektorat: Herstellung: Korrektorat: Satz: Druck und Verarbeitung: Printed in Germany Hommer Design, Haar bei Mnchen Martin Asbach, [email protected] Elisabeth Egger, [email protected] Christine Depta, Freising mediaService, Siegen Bercker, Kevelaer

InhaltsverzeichnisVorwort .................................................................................................... 9 V.1 Zum Inhalt ...............................................................................................10 1 Oracle erste Schritte ............................................................................ 13 1.1 Grundlagen..............................................................................................13 1.1.1 Klienten und Diener..................................................................14 1.1.2 Aufbau des Oracle-DBMS..........................................................18 1.1.3 Aufbau einer Oracle-Datenbank ................................................20 1.2 Installation ...............................................................................................24 1.2.1 Der Installationsvorgang ...........................................................25 1.2.2 Installation der Version 8 ..........................................................26 1.2.3 Installation von 8i .....................................................................32 1.3 Dienste unter Windows-NT ......................................................................35 1.4 Verbindung zur Datenbank herstellen ......................................................37 1.4.1 Einfhrung in SQL*Net bzw. Net8 ............................................38 1.4.2 Verbindung zur Starterdatenbank herstellen..........................40 1.4.3 Konfiguration mit Hilfe von Net8 Easy Config ...........................48 1.4.4 Oracle-Networking mit Hilfe des Net8 Assistant ........................53 1.4.5 Ausblick ....................................................................................60 1.5 Erstellen einer Datenbank .........................................................................62 1.5.1 Struktur einer Oracle-Datenbank...............................................62 1.5.2 Das manuelle Verfahren ............................................................65 1.5.3 Der Oracle Database Assistant ..................................................72 1.5.4 Automatische Generierung unter NT ........................................86 1.6 Administrierung der Datenbanken............................................................87 1.6.1 Instanz starten und stoppen .....................................................88 1.6.2 Datenbank ffnen und schlieen ..............................................89 1.6.3 Lschen einer Datenbank .........................................................91 1.7 Der Oracle Storage Manager ....................................................................92 1.8 SQL*Plus ..................................................................................................95 1.8.1 Abfragen eingeben und ausfhren............................................97 1.8.2 SQL*Plus als Skriptinterpreter..................................................100 1.9 Das SQL-Worksheet................................................................................105 Datenbankobjekte in einer Oracle-DB ...................................................109 2.1 Der Oracle-Schema-Manager .................................................................109 2.2 Beschreibung der Objekte ......................................................................113 2.2.1 Array-Typ (Array Types) ..........................................................114 2.2.2 Cluster (Clusters) ....................................................................119

2

6

Inhaltsverzeichnis

2.3

2.4

2.2.3 Datenbank-Link (Database Links) ............................................120 2.2.4 Funktion (Functions)...............................................................123 2.2.5 Index (Indexes).......................................................................127 2.2.6 Objekttyp (Object Types) .......................................................132 2.2.7 Paketrumpf (Package bodies)..................................................137 2.2.8 Paket (Packages) .....................................................................138 2.2.9 Prozedur (Procedures) ............................................................149 2.2.10 Warteschlangentabelle (Queue Tables) ...................................151 2.2.11 Abgleichengruppe (Refresh groups)........................................156 2.2.12 Sequenz (Sequences)..............................................................156 2.2.13 Log Materialisierte View (Snapshot logs).................................160 2.2.14 Materialisierte View (Snapshots) .............................................160 2.2.15 Synonym (Synonyms).............................................................170 2.2.16 Tabellentyp (Table Types).......................................................172 2.2.17 Tabelle (Tables) ......................................................................185 2.2.18 Trigger (Triggers) ...................................................................203 2.2.19 Ansicht (Views) .......................................................................212 2.2.20 Zusammenfassung..................................................................216 Die Beispieldatenbank anlegen ...............................................................218 2.3.1 Anlage des Schema-Eigners ....................................................219 2.3.2 Verwalten der Tablespaces......................................................222 2.3.3 Anlegen des Schemas .............................................................223 Datenmigration......................................................................................230 2.4.1 Variationsmglichkeiten..........................................................230 2.4.2 Laden unserer Beispiel-DB.......................................................233 2.4.3 Der Data Manager..................................................................236 2.4.4 Laden der Stammdaten per SQL*Loader .................................239 2.4.5 Wie geht es weiter? ................................................................247

3

Abfragen ...............................................................................................249 3.1 Einfache Auswahlabfragen......................................................................249 3.1.1 Struktur einer Auswahlabfrage ................................................250 3.1.2 Where-Bedingungen...............................................................254 3.1.3 Ergebnisse sortieren ................................................................259 3.1.4 Gruppierungen.......................................................................261 3.1.5 Spalten vertexten ...................................................................265 3.2 Verknpfungen ......................................................................................266 3.2.1 Inner-Joins ..............................................................................268 3.2.2 Unterabfragen ........................................................................271 3.2.3 Outer-Joins .............................................................................278 3.2.4 Mengenoperationen ...............................................................281 3.2.5 Hierarchische Abfragen...........................................................287

Inhaltsverzeichnis

7

3.3

3.4

3.5

nderungsabfragen................................................................................298 3.3.1 ndern von Daten ..................................................................298 3.3.2 Lschen von Daten .................................................................301 3.3.3 Einfgen von Daten ................................................................303 3.3.4 Sperren von Datenstzen ........................................................306 3.3.5 Erstellen eines nderungscursors ............................................309 3.3.6 Transaktionen .........................................................................319 Tuning von Abfragen .............................................................................324 3.4.1 Abfrageoptimierung ...............................................................325 3.4.2 Ausfhrungsplne...................................................................329 3.4.3 Ein paar Grundregeln fr die Erstellung von Abfragen.............336 3.4.4 Verwenden von Hints .............................................................341 Data Dictionary Views ............................................................................346 3.5.1 Analyse der Datenbankobjekte................................................347 3.5.2 Aktivitten in der Datenbank abfragen....................................352 3.5.3 Zugriffsrechte entschlsseln ....................................................355

4

Benutzer und Rollen ..............................................................................357 4.1 Einfhrung in die Benutzerverwaltung....................................................357 4.1.1 Das Rollenkonzept ..................................................................359 4.1.2 Der Oracle Security Manager ..................................................359 4.2 Benutzerverwaltung mit SQL..................................................................361 4.2.1 Einen Benutzer bearbeiten ......................................................361 4.2.2 Rollen anlegen und bearbeiten ...............................................363 4.2.3 Profile anlegen und bearbeiten ...............................................363 4.3 Rechtevergabe mit SQL ..........................................................................366 4.3.1 Vergabe von Einzelrechten und Rollen ....................................366 4.3.2 Zugriffsschutz auf Datensatzebene..........................................370 4.3.3 Benutzerverwaltung in der Praxis ............................................375 4.4 Auswertung der Benutzerprofile .............................................................375 PL/SQL-Programmierung ......................................................................381 5.1 Einfhrung in PL/SQL .............................................................................381 5.1.1 Allgemeines ............................................................................381 5.1.2 Blockstruktur ..........................................................................384 5.1.3 Datentypen ............................................................................386 5.1.4 Funktionen .............................................................................398 5.1.5 Ausgabe von Meldungen........................................................410 5.1.6 Konditionalbedingungen ........................................................412 5.1.7 Schleifen.................................................................................415 5.1.8 Datenbankabfragen ................................................................418 5.1.9 Fehlerbehandlung ..................................................................429 5.1.10 Dateiverarbeitung...................................................................441 5.1.11 Pipes.......................................................................................446 5.1.12 Verwenden von PL/SQL ..........................................................451

5

8

Inhaltsverzeichnis

5.2

Anwendungsbeispiele.............................................................................454 5.2.1 Benutzerverwaltung................................................................454 5.2.2 nderungsprotokollierung ......................................................460 5.2.3 Komplexe Integrittsbedingungen..........................................465 5.2.4 Exporthilfe ..............................................................................475

6

Anwendungsentwicklung ......................................................................481 6.1 Grundlagen............................................................................................481 6.1.1 ODBC-Verbindung .................................................................482 6.1.2 Verwenden der Oracle-Objekte...............................................491 Stichwortverzeichnis .............................................................................495

VorwortNoch ein Buch ber Oracle?! Nun, in einem haben Sie sicher Recht: Bcher ber Oracle gibt es sicherlich eine ganze Menge. Aber als ich im Sommer 1998 intensiveren Kontakt zu diesem Datenbanksystem bekam, htte ich mir ein solches Buch gewnscht. Ich habe es gesucht, aber nicht gefunden das ist einer der Grnde, warum ich es hier schreibe. Als ich als freiberuflicher Berater im Rahmen eines PeopleSoft-Projekts engen Kontakt zu Oracle bekam, da hatte ich neben umfangreicher Programmiererfahrung und detaillierten SQL-Kenntnissen auch weitreichende Erfahrungen mit verschiedenen Datenbanksystemen, beispielsweise Sybase oder dem Microsoft SQL-Server. Wenn Sie auf mein oben genanntes Datum geachtet haben und sich ein wenig auskennen, dann werden Sie jetzt sagen damals waren die beiden Server doch nahezu gleich. Stimmt genau, und damit sind wir der eingangs genannten Fragestellung wieder ein Stckchen nher gekommen. Beim Umgang mit Oracle war nmlich vieles anders, als bei den bisherigen DBMSSystemen. Die Werkzeuge sind andere, die Struktur der Datenbank (Schema, Tablespace) ist anders, Abfragen mssen zum Teil anders gestaltet werden. Anders ausgedrckt: Es gibt andere Restriktionen, aber auch andere Mglichkeiten. Diese auf einem Blick zu erkennen und umzusetzen ist nicht ganz einfach, und genau hier soll dieses Buch helfen. Was hat man denn fr Mglichkeiten, wenn man im Rahmen eines Projekts auf eine Datenbank stt, mit der man sich bisher noch gar nicht oder zumindest nicht regelmig bzw. nicht so oft beschftigt hat? Jedes Mal einen Kurs besuchen? Wohl dem, der diese Mglichkeiten hat. Das Handbuch lesen? Ich wnsche Ihnen bei Oracle viel Spa dabei und glauben Sie mir: Die Bibel knnen Sie leichter lesen; auerdem ist sie auch noch weniger umfangreich. Die einzige Variante ist, sich mal wieder mglichst schnell per Try and Error einzuarbeiten. Ein bisschen Hilfe kann hierbei aber nicht schaden, und genau diese halten Sie gerade in Ihren Hnden. Ich betrachte eine Datenbank immer als Werkzeug, als Mittel zum Zweck, mehr oder weniger Datenstze irgendwo zu speichern und bei Bedarf auch wiederzufinden. Genau wie das komplexe Thema Netzwerk, gehe ich in meinen Projekten immer davon aus, dass diese Dinge funktionieren und sich kompetente Kollegen um die Details kmmern. Ich bin eher fr die Lsung irgendwelcher Anwenderprobleme zustndig. Ich wei, was man mit einer Bohrmaschine alles machen kann, aber muss ich deshalb auch wissen, aus wie vielen Teilen meine Bohrmaschine besteht, wie man sie in alle Einzelteile zerlegen und wieder zusammensetzen kann? Ich denke nicht, Stecker rein muss reichen; danach kann ich ein schnes Loch bohren.

10

Vorwort

Genau aus diesem Blickwinkel ist dieses Buch aufgebaut. Bestimmte Themen, fr die es in der Praxis Datenbankadministratoren und Netzwerkbetreuer gibt, werden ganz bewusst nur grob skizziert oder sogar ganz weggelassen. Gleiches gilt fr Funktionen, die in der Praxis nur selten vorkommen und fr die Sie, wenn Sie die Grundzge von Oracle erst einmal beherrschen, schnell Informationen in den Handbchern finden. Dieser Workshop kooperiert also mit der Dokumentation des Herstellers, er versteht sich also nicht als Ersatz, sondern lediglich als Ergnzung der ziemlich umfangreichen Online-Handbcher. Er soll Ihnen helfen, sich in die wichtigsten Themen schnell und mit Hilfe pragmatischer Beispiele einzuarbeiten. Abschlieend mchte ich in diesem Vorwort natrlich alle erwhnen, die mich zu diesem Buch inspiriert oder bei der Erstellung untersttzt haben. Da sind zunchst einmal die netten Kollegen des letzten Deutschen Bank-Projekts: warum soll ich nicht mal all das aufschreiben, was ich in den letzten dreiig Monaten erzhlt habe. Dem letzten Projekt, der Einfhrung von PeopleSoft, kommt natrlich insgesamt eine tragende Rolle zu, denn es lieferte einige der in diesem Buch aufgearbeiteten Anregungen und Beispiele. Erwhnen mchte ich auch meine beiden Kinder: euch traf es mal wieder am meisten, als Papa in den letzten Wochen noch weniger Zeit als sonst hatte. Ich wnsche Ihnen nun viel Spa und Erfolg beim Lesen und Durcharbeiten dieses Buches. Ihr Heinz-Gerd Raymans

V.1

Zum Inhalt

Bevor ich etwas zum Inhalt sage, mchte ich noch vorwegnehmen, dass alle Beispiele und Erklrungen zunchst mit einer 8er-Version und zum Abschluss noch einmal mit der Version Oracle8i Release 2 (Version 8.1.6) berprft wurden. Aus diesem Grund wurden im Nachhinein noch verschiedene Passagen erweitert, so dass Sie mit diesem Buch auch ein Vergleichswerk fr die beiden zur Zeit noch auf dem Markt befindlichen Versionen besitzen. Auf der anderen Seite sind viele der hier angesprochenen Themen relativ versionsstabil und gelten vielleicht abgesehen von den Bildern und einigen Programmnamen fr alle 8er-Versionen bzw. in Teilen sogar fr eine Datenbank der Version 7. Das Buch hat also vornehmlich das klassische Datenbankgeschft in Form von SQL, Views, Triggern usw. im Auge und berlsst die neuen 8i-Erweiterungen wie Internet-Integration, JDeveloper und Java anderen Werken, die sich schwerpunktmig mit diesen Themen beschftigen (z.B. Oracle 8i und Java, ADDISON-WESLEY, ISBN 3-8273-1485-2). Im ersten Teil des Workshops Oracle erste Schritte geht es neben einigen allgemeinen Grundlagen vor allem um die Installation von Oracle, beispielsweise auf einem NT-Client (z.B. Notebook) oder Server mit anschlieender Erstellung einer eigenen Datenbank und deren Einbindung in das Oracle-Netzwerk (Net8). Sowohl

Zum Inhalt

11

bei der Erstellung der Datenbank, als auch bei deren Einbindung in das Netzwerk werden Sie verschiedene Methoden kennen lernen, um diese Aufgaben manuell oder mit Hilfe des einen oder anderen Werkzeugs zu erledigen. Mit Hilfe des zweiten Hauptkapitels erhalten Sie einen berblick ber die in Oracle verfgbaren Datenbankobjekte. Zunchst werden die einzelnen Objekte aufgezhlt bzw. kurz beschrieben und im weiteren Verlauf wird die im Kapitel 1 erstellte Datenbank mit Leben gefllt, d.h. die blicherweise bentigten Tabellen und Indices werden angelegt. Abschlieend wird die Datenbank mit Hilfe der auf der CD befindlichen Daten gefllt. Auch hierzu lernen Sie verschiedene Methoden, vor allem auch mehrere Varianten zur Verwendung des Oracle-Import-Managers kennen. Der nchste bzw. dritte Teil des Buches widmet sich dem komplexen Thema Abfragen. Ausgehend von einfachen Auswahlabfragen geht der Streifzug weiter durch die Welt der Verknpfungen (Joins) und mndet danach in den Komplex der nderungsabfragen inklusive dem Erstellen von Cursorn zur Durchfhrung von Datenbanknderungen. Abgerundet wird der ganze Themenkomplex mit einigen Ausfhrungen und Tipps zum Thema Abfragetuning und verschiedenen Beispielen zur Anwendung der verfgbaren Data-Dictionary-Views, mit deren Hilfe Sie das Oracle-System bzw. Ihre Datenbank analysieren knnen. Dem Thema Benutzter- und Rollenprofile widmet sich der vierte Teil des Buches. Hier lernen Sie die wichtigsten Ausprgungen dieser Profile mitsamt verschiedener Verfahrensweisen zu deren Verwaltung kennen. Im fnften Buchteil finden Sie eine Einfhrung in die PL/SQL-Programmierung. Gleichgltig ob es immer gleich um die Programmierung von Prozeduren oder Funktionen oder nur um die Erstellung grerer Skripts oder komplexerer nderungscursors geht: mit PL/SQL haben Sie eine schier unerschpflichen Menge von Mglichkeiten. Abgeschlossen wird das Kapitel mit verschiedenen Anwendungsbeispielen, beispielsweise einer universellen Exportfunktion. Der letzte Teil des Buches nhert sich noch einmal der Anwendungsentwicklung. Neben ein paar allgemeinen Hinweisen finden Sie hier auch Beispiele wie Sie mit Hilfe von ODBC oder den Oracle Objects im Handumdrehen leistungsfhige FrontEnd-Anwendungen erstellen knnen. Als Demonstrationsobjekt finden Sie unter anderem eine Funktion, mit deren Hilfe Sie von Excel aus Abfragen in der OracleDatenbank starten knnen. Nun folgt zum Abschluss noch ein Hinweis in eigener Sache. Die meisten Dinge im Leben sind nicht perfekt, das gilt vielleicht auch fr den einen oder anderen Satz oder Erklrung in diesem Buch. Bedenken Sie, dass wenn man solche Bcher neben seiner normalen Arbeit schreibt, der letzte Eintrag im Windows-Ereignisprotokoll hufig knapp vor oder weit hinter 0:00 liegt. Vielleicht gibt es aber auch ein Thema, das eigentlich gut in dieses Buchkonzept passt, zur Zeit aber berhaupt nicht behandelt wird. Was ich eigentlich sagen will ist, dass gute Ideen, konstruktive Kritik, interessante Beispiele aber auch Lob immer willkommen sind und wenn Sie wollen, dann knnen Sie mir Ihre Anregungen und Bemerkungen direkt an die Adresse [email protected] zusenden, doch nun wnsche ich Ihnen erst einmal viel Spa bei der Arbeit.

1

Oracle erste Schritte

Ich finde, dass auch ein technisches Buch einen Spannungsbogen haben sollte. In diesem Buch beginnt er im Kapitel Grundlagen mit der Erluterung verschiedener Konzepte und Grundbegriffe. Sofern Sie schon einmal mit hnlichen Datenbanksystemen (z.B. Sybase, Informix oder dem MS SQL-Server) gearbeitet haben, dann knnen Sie das Grundlagen-Kapitel natrlich auch getrost bergehen; Sie werden dort nichts Neues mehr erfahren. Danach beschftigen wir uns ein wenig mit der Installation einer Oracle-Datenbank, inklusive dem Einrichten des Zugriffs ber SQL*Net. Hiernach folgen die Erstellung verschiedener Tabellen und das Laden von Musterdaten, die im weiteren Verlauf des Buches fr Beispiele und bungen immer wieder bentigt werden. Im Rahmen dieser Einfhrung werden Sie also auch erste Erfahrungen mit Oracle sammeln knnen und wichtige Werkzeuge (z.B. SQL-Worksheet, Loader oder SQL*Plus) kennen lernen.

1.1

Grundlagen

Was ist eine Datenbank, was ein Datenbank-Management-System? Wie ist der schematische Aufbau einer Oracle-Datenbank? Was ist EDV? Nein, die letzte Frage werde ich hier nicht behandeln, aber zu den anderen beiden Fragen will ich schon das eine oder andere anmerken. Die Antwort auf die erste Frage scheint komplex, jedoch ist die Antwort darauf kurz, prgnant und ziemlich einfach. Eine Datenbank ist eine strukturierte Sammlung von Daten das war schon alles! Um mit diesen Daten bzw. der Datenbank arbeiten zu knnen, bentigen wir blicherweise noch geeignete Software, wobei man hierbei von einem Datenbank-Management-System (oft und auch hier mit DBMS abgekrzt) spricht, wenn sie vor allem das anwendungsunabhngige Arbeiten mit einer oder mehreren Datenbanken ermglicht. Strukturierte Datensammlungen gab es eigentlich schon immer. Aber, und das wissen vor allem diejenigen, die schon lnger im EDV-Geschft ttig sind, der Umgang mit gespeicherten Daten war nicht immer so komfortabel wie heute, denn oftmals musste man sich unter anderem auch um Verfahrensweisen zum Einfgen oder Lschen von Datenstzen oder dem schnellen Wiederfinden von Informationen kmmern. Ein Ergebnis dieser Verfahrensweisen war meistens eine sehr enge Verzahnung von Anwendungsprogramm und Datenbasis. Bei einem DatenbankManagement-System werden solche Detailarbeiten wie das Einfgen, Lschen oder Finden von Daten von ihm selbst erledigt. Hierzu erhlt es vom Anwendungsprogramm lediglich bestimmte Kommandos in Form einer speziellen Sprache. Durch das vorhandene Regelwerk dieser Sprache und der Mglichkeit, das viele verschiedene Anwendungsprogramme die zugehrigen Kommandos absetzen knnen, entsteht die gewnschte Anwendungsunabhngigkeit.

14

Oracle erste Schritte

1.1.1

Klienten und Diener

Entsprechend der eben erluterten Definition handelt es sich auch bei dem Produkt Access von Microsoft also wirklich um ein Datenbank-Management-System. Zum einen ermglicht es die strukturierte Speicherung von Datensammlungen und zum anderen besteht fr viele Anwendungen (nicht nur Access selbst) die Mglichkeit, mit den Daten der Access-Datenbank zu arbeiten. Dennoch gibt es aber einen gravierenden Unterschied zwischen beispielsweise Access und einem Oracle-DBMS. Technisch aber trotzdem vereinfachend betrachtet besteht das DBMS von Access aus einer unendlichen Anzahl von DLLs (Dynamic Link Libraries = Dynamische Laufzeitbibliothek), die bei Bedarf in den Speicher Ihres Rechners geladen werden. Diese DLLs dienen dazu, die bentigten Datenbankkommandos entgegenzunehmen, zu interpretieren und in der Datenbank entsprechend auszufhren. Bei der Datenbank handelt es sich meistens um eine (MDB-) Datei, die sofern man nicht alleiniger Nutzer ist, auf einem zentralen Dateiserver abgelegt ist. Betrachten Sie hierzu die zugehrige Abbildung (vgl. Abb. 1.1).

Arbeitsplatz Win NT, 95, 98, 2000Excel Access

Server

Access-DBMS Netzwerk Datenbank

Abbildung 1.1: Struktur eines arbeitsplatzorientierten DBMS-Systems

Gem der Abbildung 1.1 wird eine auf einem Dateiserver gespeicherte Datenbank von Ihrem Arbeitsplatz aus mit Hilfe des Access-DBMS ber das Netzwerk abgefragt. Dabei liegen alle an diesem Prozess wesentlich beteiligten Komponenten, also die beteiligten Anwendungen (Excel, Access oder andere) und das DBMS (in unserem Beispiel die entsprechenden DLLs), im Speicher des Arbeitsplatzrechners. Das DBMS ruft die bentigten Daten aus der Datenbank ab bzw. fhrt dort nderungen durch. Mit ein wenig Phantasie sollte klar werden, was bei einer solchen Architektur alles passieren kann:

:

Die Anzahl der Anwender entspricht der Anzahl der im Einsatz befindlichen DBMS-Systeme. Ein solches DBMS-System ist eigentlich immer ein hchst komplexes Gebilde mit einer Unzahl verschiedenster Funktionalitten. Es sollte somit plausibel sein, dass seine Arbeitsgeschwindigkeit nicht unwesentlich von

Grundlagen

15

:

den Ressourcen des ausfhrenden Rechners abhngt. Muss also die Leistungsfhigkeit des DBMS-Systems gesteigert werden, so mssen unter Umstnden alle Rechner auf denen es luft aufgerstet werden. Bestimmte Sachverhalte werden besonders deutlich, wenn man ein wenig schwarz malt bzw. drastisch bertreibt. Stellen wir uns einfach mal vor, unsere Datenbank htte eine Gre von mehreren hundert Megabyte. Mit Hilfe einer Abfrage suchen wir eine winzige Information, z.B. einen Namen, wobei die Form der gewhlten Abfrage vielleicht dazu fhrt, dass sie vom DBMS nicht optimal ausgefhrt werden kann und somit zur Bereitstellung unseres gesuchten Namens alle Datenstze der Datenbank abgerufen werden mssen. In dem Fall mssten alle Datenstze der Datenbank ber das Netzwerk zu unserem Arbeitsplatzrechner transportiert werden, damit das DBMS uns anschlieend als Ergebnis einen oder noch besser keinen Namen prsentiert. Ein Phnomen, dass es in der Praxis wirklich gibt. Eine Abfrage fhrt zu einer erheblichen Belastung des Netzwerks und unseres Rechners und am Ende kommt wenig oder sogar nichts heraus. Sie wollen ein Feld einer in der Datenbank gespeicherten Tabelle ndern, und zwar fr jede vorhandene Reihe. Auch in diesem Fall muss das auf Ihrem Rechner laufende DBMS jeden Satz ber das Netzwerk anfordern, die nderung durchfhren und anschlieend fr die Rckbertragung und die Speicherung des neuen Wertes sorgen.

:

Damit keine Missverstndnisse entstehen: ich will das Produkt Access hier nicht kritisieren oder schlecht machen. MS-Access ist lediglich ein - wenn auch ziemlich bekannter - Vertreter fr diese Gruppe von DBMS-Systemen. An dem Beispiel sollte lediglich verdeutlicht werden, wie diese Klasse von Datenbank-Management-Systemen (z.B. auch FoxPro, Paradox, Approach u.a.) funktionieren. In der englischsprachigen Literatur wird ein solches DBMS oftmals auch als File Sharing Database System bezeichnet. Die Bezeichnung kommt daher, dass sich hierbei in der Tat alle Anwendungen die auf dem Server befindliche Datenbank direkt teilen; jede Anwendung veranlasst beispielsweise indirekt ber das DBMS das ffnen der zugehrigen Datenbankdateien. Was muss man nun ndern, um die eben genannten Eigenschaften zu verndern bzw. zu verbessern? Zunchst einmal wre wnschenswert, das Datenbanksystem nher an seine Datenbank zu bringen, um Lese- oder nderungsanforderungen einfacher und schneller bearbeiten zu knnen. Mit anderen Worten: das DBMS muss auf den Server umziehen, wo auch die Datenbank gespeichert ist. Betrachten Sie einmal die Abbildung 1.2. Durch den Umzug des DBMS ist ein System entstanden, wie Sie es in der heutigen Praxis oftmals vorfinden. Zum einen haben Sie den Arbeitsplatzrechner, den Client, auf dem die eigentlichen Anwendungen laufen. Diese fordern mit Hilfe von Nachrichten Daten aus der Datenbank ab oder veranlassen dortige nderungen. Die Nachrichten werden ber das Netzwerk an das auf dem Server laufende DBMS bermittelt. Das sorgt fr die Bereitstellung der gewnschten Daten und veranlasst die bermittlung der Ergebnisse an den Client und im Falle von nderungen werden berhaupt keine Daten mehr ber das Netzwerk transportiert.

16

Oracle erste Schritte

Arbeitsplatz Win NT, 95, 98, 2000Excel Access

ServerDBMSNachrichtendienst

Nachrichtendienst Netzwerk

Datenbank

Abbildung 1.2: DBMS mit einer Client/Server-Struktur

Oftmals kommunizieren die Clients nicht einmal direkt mit dem DBMS, sondern das leistet sich fr diese besondere Aufgabe einen vorgelagerten Prozess, quasi so eine Art Sekretariat. Solche Prozesse werden blicherweise als Listener bezeichnet, und wie man der englischen Bezeichnung ableiten kann, besteht seine Hauptaufgabe darin, das Netzwerk permanent nach Nachrichten fr sein zugehriges DBMS abzuhren. brigens, genau wie im richtigen Leben, wo ein Sekretariat durchaus fr mehrere Chefs arbeiten kann, kann auch solch ein Listener Nachrichten fr mehrere installierte DBMS-Instanzen abhren bzw. weiterleiten. Ein weiterer Unterschied zu den File Sharing Database Systemen ist, dass das auf dem Server befindliche DBMS die zugehrigen Datenbankdateien blicherweise exklusiv nutzt. Die einzelnen Anwendungen verbinden sich lediglich direkt oder ber den Listener mit dem DBMS; auch bei tausend Anwendern sind die Datenbankdateien nur einmal geffnet. Sie haben nun auf ziemlich pragmatische Weise die Struktur eines Client/ServerSystems (CS-System) kennen gelernt. Ich mchte die wesentlichen Eigenschaften in der folgenden Tabelle noch einmal zusammenfassen:File Sharing System Das DBMS befindet sich auf dem Client. Soll in einer Datenbank jeder Datensatz aktualisiert werden, so mssen alle Datenstze zum Client transportiert werden. Dort werden die nderungen durchgefhrt und anschlieend mssen alle Datenstze wieder in die Datenbank auf den Server zurckgeschrieben werden. Client/Server System Das DBMS befindet sich auf dem Server. Der Client schickt eine entsprechende Aktualisierungsnachricht an das DBMS. Dieses fhrt anschlieend direkt die notwendigen Aktualisierungen in der Datenbank durch.

Grundlagen

17

File Sharing System In vielen Anwendungen hngt die Arbeitsgeschwindigkeit direkt von der Geschwindigkeit des DBMS ab. Daher muss jeder Arbeitsplatzrechner entsprechend leistungsfhig sein, damit das auf ihm laufende DBMS ber gengend Ressourcen verfgen kann. Wird die konkrete Anwendung zu langsam und liegt dies zum Beispiel an der Gre der Datenbank, so muss das DBMS und damit alle Arbeitsplatzrechner aufgerstet werden.

Client/Server System Der Server muss entsprechend leistungsfhig ausgelegt werden, damit das dort laufende DBMS die Anforderungen der Clients schnell genug abarbeiten kann. Die auf den Arbeitsstationen verfgbaren Ressourcen spielen (gbe es nicht Windows) eigentlich keine Rolle mehr. In dem Fall muss lediglich der Server entsprechend aufgerstet werden.

Tabelle 1.1: Gegenberstellung File Sharing und Client/Server System

Vielleicht ist bei den bisherigen Erklrungen der Eindruck entstanden, dass die Client/Server-Technologie von Datenbanksystemen gepachtet ist. Dem ist natrlich nicht so, d.h. ein modernes leistungsfhiges DBMS ist nur ein Vertreter vieler anderer CS-Anwendungen. Ganz allgemein gilt bei dieser Technik eigentlich nur, dass bestimmte Teile der Anwendung auf dem Server und andere Teile auf den Clients verfgbar sind und das beide Teile in Form von Nachrichten miteinander kommunizieren und der Client die zentral auf dem Server bereitgestellten Dienste bzw. Anwendungsfunktionen nutzt. Zurck zu den Datenbanksystemen. Ohne vernnftiges Netzwerk funktionieren natrlich beide System nicht richtig. Da ntzt auch der dickste Server nichts, wenn die Nachrichten bzw. Ergebnisse zum bzw. vom DBMS nicht vernnftig transportiert werden und auch der Client mit neuestem Prozessor und hunderten Megabyte RAM dreht eine Warteschleife nach der anderen, wenn die aus der Datenbank angeforderten Daten aufgrund des langsamen Netzwerks nur trpfchenweise ankommen. Bei soviel offenkundiger Werbung fr Client/Server mchte ich hier dennoch einmal kurz auf die Bremse treten. Ich werde in meinem weiteren Berufsleben keine CS-Systeme mehr in Unternehmen einfhren, in denen die fr einen reibungslosen Betrieb notwendigen Strukturen fehlen. Hiermit meine ich vor allem vorhandenes KnowHow ber das vorhandene Netzwerk und die eingesetzten Server oder vor Ort verfgbares Personal, das zumindest bestimmte Grundkenntnisse (z.B. Datensicherung, Erweitern der Datenbank, Hoch- und Runterfahren des DBMS) ber das neue Datenbanksystem besitzt. Ich habe schon hufiger schlechte Erfahrungen damit gemacht, wenn im Rahmen irgendwelcher Softwareprojekte ein DBMS auf C/S-Basis eingefhrt bzw. durchgesetzt wurde, dieses aber in der Softwarelandschaft des Kunden einen Fremdkrper darstellte. Solche Projekte laufen am Anfang meistens sogar ziemlich gut. Die eigene EDV mischt sich kaum ein (weil keine Ahnung) und alle auftretenden Probleme knnen, weil man im Rahmen des Projekts sowieso oft oder permanent vor Ort ist, rasch erledigt werden. Treten dann im laufenden Betrieb die blichen Problemchen auf (Server macht Mucken und damit auch das DBMS; Sessions hngen usw.), dann kann die Stimmung schnell drehen, entweder weil man jetzt aufgrund eines anderen Projekts nicht bzw.

18

Oracle erste Schritte

schlecht verfgbar ist oder weil der Kunde irgendwann die Lust verliert, immer neue Wartungsrechnungen zu bezahlen. Ein solcher Kunde wre mit einer Anwendung, die ihre bentigten Daten mit Hilfe einer File Sharing Datenbank verwaltet, besser bedient, da diese im laufenden Betrieb meistens ohne spezielle Kenntnisse betreut werden kann (DBMS kaputt = Anwendung auf dem Client neu installieren; Datenbank kaputt = Files von der normalen Datensicherung zurckspielen); klingt einfach und ist es meistens auch. Wie im Leben, so gibt es auch in der EDV mittlerweile fr jede Aufgabe das richtige Handwerkszeug und um so merkwrdiger ist es allerdings, dass die Auswahlentscheidung noch immer so hufig aus einer Bierlaune heraus oder auf dem Tennisbzw. Golfplatz getroffen wird. Ich wrde diesen Entscheidungstrgern gerne mal im Privatleben zusehen, wie sie die Heftzwecke fr ein neues Kindergartenbild mit dem Vorschlaghammer in der Wand versenken, anstatt hierfr den kleinen und handlichen Bastelhammer zu benutzen. Aber schlielich machte der Vorschlaghammer im Geschft den stattlicheren Eindruck, hier bekommt man wirklich was fr sein Geld und daher muss er einfach das richtige Tool fr alle denkbaren Aufgabenstellungen sein.

1.1.2

Aufbau des Oracle-DBMS

Aufgrund des letzten Kapitels wissen Sie nun, dass Oracle zur Klasse der Client/Server-Datenbank-Management-Systeme (CS-DBMS) gehrt und obwohl sich dieses Buch primr nicht an Techniker richtet, soll im Folgenden der konkrete Aufbau des Oracle-DBMS ein wenig genauer betrachtet werden. Sollten Ihnen die hier bzw. auch im nchsten Kapitel gelieferten Informationen zu oberflchlich sein, dann empfehle ich Ihnen den Genuss eines speziellen Buches fr Oracle-Datenbankadministratoren oder Sie schmkern einfach mal ein wenig in den per HTML gelieferten Handbchern. Im Buch Oracle8 Server finden Sie beispielsweise allein schon in den Abschnitten Server Concepts oder Oracle Server Administrator's Guide eine schier unerschpfliche Informationsquelle. Beim 8i-Server finden Sie diese beiden Kapitel auch wieder, wenn Sie auf der Startseite den Link Oracle8i Server and Data Warehousing folgen. In allen Versionen finden Sie die Online-Dokumentation brigens im \DOC-Verzeichnis, das direkt unter dem Oracle-Homeverzeichnis angeordnet ist. Schaut man etwas genauer auf die Funktionsweise eines Oracle-DBMS so stellt man fest, dass es sich in der Architektur ein wenig von unserer bisherigen allgemeingltigen Definition und in diesem Punkt auch in der Tat von andern DBMS-Systemen unterscheidet. Wir, nein ich, hatte gesagt, dass es sich bei einem DBMS um ein Stck Software handelt, das ein anwendungsunabhngiges Arbeiten mit einer oder mehreren Datenbanken ermglicht. Microsofts SQL-Server arbeitet beispielsweise nach diesem Prinzip. Bei dieser Datenbank finden Sie auf Ihrem Rechner genau einen Prozess, reprsentiert durch das Programm SQLSERVR.EXE, knnen aber trotzdem mit allen definierten Datenbanken arbeiten.

Grundlagen

19

Im Unterschied hierzu arbeitet bei Oracle ein DBMS (z.B. ORACLE80.EXE unter NT) immer genau mit einer Datenbank zusammen, was natrlich nicht heit, dass Sie nicht mehrere Datenbanken auf einem Rechner betreiben knnen Sie mssen in dem Fall auch einfach nur entsprechend viele Kopien des DBMS im Speicher laufen haben. Das ist also genau so, als wrden Sie Excel mehrfach starten und mit jeder Programmkopie genau eine Tabelle laden, wohingegen die definitionskonforme Arbeitsweise des SQL-Servers dem einmaligen Starten von Excel entspricht, wobei anschlieend fr jede Tabelle ein Arbeitsfenster geffnet wird. Im Oracle-Sprachgebrauch wird eine solche DBMS-Kopie blicherweise mit dem Begriff einer Instanz belegt. Technisch betrachtet verbirgt sich hinter einer solchen Instanz die Menge aller bentigten Prozesse zuzglich einem Stckchen reserviertem Hauptspeicher, der fr alle diese Prozesse erreichbar ist. Dieser Hauptspeicherbereich wird als System Global Area (SGA) bezeichnet, die Instanz selbst wird durch einen System-Identifer (SID) gekennzeichnet (vgl. Abb 1.3).

SID=orcl SGA = System Global Area

Oracle-Systemprozesse DBWR SMON PMON LGWR CKPT

Abbildung 1.3: Schematischer Aufbau einer Oracle-Instanz mit den wichtigsten Hintergrundprozessen

Sofern es Sie interessiert, finden Sie in der folgenden Aufstellung eine grobe Beschreibung, welche Funktionen die einzelnen Systemprozesse erfllen:

:

DBWR (Database Writer) schreibt in der SGA modifizierte Datenblcke zurck in die Datenbank. SMON (System Monitor) berwacht die Wiederherstellung der Datenbank bei einem Neustart. Ferner registriert dieser Prozess freiwerdende Bereiche in der Datenbank und vereinfacht somit deren Wiederbelegung. LGWR (Log Writer) Schreibt die im Rahmen von Transaktionen anfallenden Protokollinformationen in die zugehrigen Plattenbereiche (Redo-Log-Eintrge).

: :

20

Oracle erste Schritte

: :

CKPT (Checkpoint) Generiert die sogenannten Checkpoints, zu denen modifizierte Datenblcke aus der SGA in die Datenbank zurckgeschrieben werden. PMON (Process Monitor) berwachung der Benutzerprozesse. Freigabe der Ressource von abgebrochenen Benutzerprozessen.

Die SGA selbst ist auch in mehrere unterschiedliche Speicherbereiche aufgeteilt. Diese Speicherbereiche werden whrend der Initialisierung der Instanz angelegt und knnen in der Gre zur Laufzeit nicht gendert werden. In der folgenden Aufstellung finden Sie eine kurze Beschreibung der wichtigsten Speicherbereiche:

:

Database Buffer Cache In diesem Speicherbereich werden die gerade bentigten Datenblcke vorgehalten. Da blicherweise nicht alle Daten gleichzeitig in diesen Puffer passen, findet ein permanenter Ein- und Auslagerungsprozess zwischen aktuell bentigten und lnger nicht mehr gebrauchten Daten statt. Hierbei werden die am lngsten ungenutzten Puffer aus diesem SGA-Bereich ausgelagert (LRU-Algorithmus, LRU = Least Recently Used). Zur Erinnerung: zum Wegschreiben von nderungen aus diesem Puffer war der Prozess DBWR zustndig. Redo Log Buffer Die whrend einer Transaktion anfallenden Protokollinformationen werden in diesem Puffer zwischengespeichert. Shared Pool SQL-Befehle jeglicher Art, Funktionen oder Prozeduren werden in diesem Pool zwischengelagert, wobei diese hier gelagerten Abfragen direkt ausfhrungsfhig sind, d.h. sie werden hier mitsamt ihren Ausfhrungsplnen gespeichert. hnlich wie beim Database Buffer Cache wird auch dieser Bereich nach dem LRUAlgorithmus verwaltet, d.h. hufig benutzte Abfragen oder Prozeduren stehen direkt zur Ausfhrung zur Verfgung.

: :

Mehr Informationen zu diesen und weiteren Prozessen einer Oracle-Instanz sowie weitergehende Informationen ber den Aufbau der SGA finden Sie in der OracleDokumentation im Buch Server Concepts im Kapitel Memory Structure and Processes. Um selbst Datenbanken anzulegen bzw. die dazu notwendigen Schritte besser zu verstehen, reicht allerdings ein grobes Gefhl ber den Aufbau einer Instanz vllig aus.

1.1.3

Aufbau einer Oracle-Datenbank

Nachdem Sie nun ein paar Grundkenntnisse ber den Aufbau des Oracle-DBMS besitzen, mchte ich Ihnen auch noch ein paar Grundlagen ber den Aufbau der Datenbank vermitteln, d.h. es geht jetzt darum mal nachzuschauen, wie sich die Datenbank auf der Festplatte ausbreitet.

Grundlagen

21

Jedes Datenbanksystem speichert seine Daten in ganz gewhnlichen Dateien (wie auch sonst), d.h. sptestens hier finden Sie eine wichtige Nahtstelle zum vorhanden Betriebssytem, denn beim Anlegen und Verwalten dieser Dateien muss sich natrlich auch das DBMS an die vorgegebenen Spielregeln des Betriebssystems halten. Konkret geht es hierbei beispielsweise um Namenskonventionen (Lnge von Pfad- und Dateinamen, Sonderzeichen) oder eventuell vorhandene Grenbeschrnkungen von einzelnen Dateien oder des definierten Filesystems (UNIX). Fr uns als Anwender bildet die gesamte Datenbank eine logische Einheit. Physikalisch kann das ganz anders aussehen und hngt konkret vom vorhandenen DBMS ab. Es gibt sowohl Datenbanksysteme, wo die gesamte Datenbank auch immer genau einer Datei entspricht, als auch Systeme, wo jede Tabelle automatisch in einer eigenen Datei gespeichert wird. Oracle liegt irgendwo zwischen diesen beiden Extremem, wobei der genaue Standort sehr stark von Ihrer Datenbankdefinition abhngt. Oracle speichert Ihre Anwendungsdaten in Form von Tabellen. Eine solche Tabelle bentigt hierzu natrlich Platz, der ihr vom Datenbanksystem in Form eines sogenannten Tablespace bereitgestellt wird. Dieser Tablespace wird physikalisch und jetzt wird es interessant durch eine oder auch mehrere Dateien gebildet (vgl. Abb. 1.4).

Logisches Modell

Datenbank

Tablespaces

Tablespace 1

Tablespace 2

Physische Dateien

Datei 1

Datei 2

Datei 3

FestplattenAbbildung 1.4: Schematischer Aufbau einer Oracle-Datenbank

Betrachten Sie den schematischen Aufbau mit Hilfe der Abbildung 1.4. In dem Beispiel wird der Tablespace 2 durch zwei Dateien gebildet, die sogar auf unterschiedlichen Platten angelegt wurden. In diesen Tablespaces werden nun die bentigten Tabellen und anderen Datenbankobjekte (z.B. Indices) angelegt, d.h. es besteht beispielsweise die Mglichkeit, den fr eine Tabelle zustndigen Tablespace und damit vielleicht auch die Tabelle auf mehrere Platten zu verteilen, um hierdurch unter Umstnden bessere Zugriffsgeschwindigkeiten zu erreichen.

22

Oracle erste Schritte

Frher wurde viel mit diesen Optionen experimentiert, um das Antwortszeitverhalten des Systems und damit natrlich auch der Anwendung zu verbessern. Heute spielt bei diesen Mglichkeiten der Tuninggedanke eine immer geringere Rolle. Das liegt aus meiner Sicht vor allem an folgenden drei Grnden. Erstens hat man es heutzutage oftmals nicht mehr mit einzelnen direkt addressierbaren Platten, sondern ganzen Plattenstapeln (Disk-Arrays) zu tun. Hierdurch geht die direkte Kontrolle was genau wo gespeichert wird sowieso verloren bzw. das Speichermedium des Plattenstapels stellt schon von ganz alleine sicher, dass der Zugriff auf groe Dateien optimiert erfolgt. Zum zweiten bieten manche Betriebssysteme (z.B. UNIX) die Mglichkeit, die physikalische Plattenstruktur durch ein darber liegendes sogenanntes Filesystem zu verschleiern. Die zum Tablespace gehrenden Dateien werden dann in diesem Filesystem angelegt, also geht auch hierbei die direkte Kontrolle ber die Plattenzuordnung verloren. Der dritte und wesentlichste Grund ist aber, dass sich die Aufwnde dieser physikalischen Tuningmanahmen meistens nicht mehr rechnen. Zum einen ist die Hebelwirkung dieser Manahmen kleiner geworden. Die Rechner und Platten sind heutzutage so schnell, dass viele Anwendungen auch bei miserabelstem Speicherkonzept noch ordentlich laufen drften. Zum anderen zeigt sich der Engpassfaktor oft gar nicht mehr in der Form der durchgefhrten Datenzugriffe, sondern bertrieben verspielte grafische Oberflchen, hpfende Broklammern und hnliche Gimmiks. Die soeben aufgefhrten Grnde sollen Sie allerdings auch nicht zum anderen Extrem, nmlich Datenbanken mit nur einem Tablespace, verleiten. Die folgenden Regeln knnen Ihnen vielleicht bei der Strukturierung Ihrer Datenbank helfen, denn ein allgemeingltiges Patentrezept gibt es auch hier natrlich mal wieder nicht:

:

:

Viele Anwendungen definieren fr die bentigten Indexdateien einen separaten Tablespace. Wenn Sie nun noch versuchen, wenigstens diese zugehrigen Dateien in ein separates Filesystem bzw. auf anderen Platten zu verlagern, dann kann Ihr System getrennt auf Index- und Datenbereiche zugreifen. Selbst wenn dieser Eingriff Ihre Abfragen nur um 0,00x Sec beschleunigt; diese Manahme kostet nichts und es spricht auch ansonsten berhaupt nichts dagegen. Logische Gesichtspunkte knnen fr die Gestaltung der Tablespaces ausschlaggebend sein. Beispielsweise besteht die Anwendung aus mehreren verschiedenen Produkten (z.B. Finanzbuchhaltung, Personalabrechnung und Reisekosten), dann ist es sicherlich sinnvoll, die produktspezifischen Tabellen in eigens hierfr angelegte Tablespaces zu speichern. Dies erhht nicht nur die bersicht, sondern kann auch spezielle Wartungsarbeiten vereinfachen, denn die einzelnen Tablespaces knnen im laufenden Betrieb ein- oder ausgeschaltet werden. Auch wre die Entzerrung der Daten recht einfach, sollte eines der Produkte mal in eine eigene Datenbank umziehen mssen. Verteilen von Tabellen mit unterschiedlichem Wachstumsverhalten. Es kann durchaus sinnvoll sein, stark wachsende Tabellen von mehr oder weniger statischen Tabellen zu trennen. Es liegt irgendwie auf der Hand, dass der Verwal-

:

Grundlagen

23

:

tungsoverhead geringer sein muss, wenn eine stark wachsende Tabelle alleine in einem Tablespace liegt, als wenn sie zusammen mit anderen Tabellen um den noch freien Platz kmpfen muss. Anforderungen eines besonderen Betriebsablaufs knnen natrlich auch eine Rolle spielen. Wie ich schon erwhnte, besteht die Mglichkeit einen einzelnen Tablespace im laufenden Betrieb ein- bzw. auszuschalten. Solche Praktiken knnte man im Zusammenhang mit speziellen Programmen nutzen, die eine Tabelle im Batch komplett verndern, um diese Tabelle vor dem Programmlauf auf einfache und schnelle Weise zu sichern.

Innerhalb eines Tablespaces werden die Daten in sogenannten Segmenten gespeichert. Dabei bildet beispielsweise jede Tabelle oder jeder Index ein eigenes Segment. Die Segmente selbst bestehen aus einem oder mehreren zusammenhngenden Datenblcken (data block), wobei diese zusammenhngenden Blcke mit dem Begriff Extend bezeichnet werden. Ein solcher Datenblock ist die kleinste Speichereinheit, die Oracle beim Schreiben oder Lesen der Festplatte bewegt. Die Gre eines solchen Datenblocks knnen Sie beim Anlegen der Datenbank festlegen, indem Sie den Parameter DB_BLOCK_SIZE der Konfigurationsdatei entsprechend anpassen. Der Standardwert fr diese Gre ist betriebssystemabhngig und betrgt fr Windows-NT beispielsweise 2048 Byte.

Festplatte Segment 1. Extend 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb Tablespace 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2. Extend 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb 2Kb

Abbildung 1.5: Segmente, Extends und Datenblcke

Beim Anlegen eines Tablespace knnen Sie Regeln definieren, wie die einzelnen Segmente gebildet werden sollen, d.h. welche Gre beispielsweise die erste und jede weitere Ausdehnung (Extend) besitzen soll. Allerdings knnen Sie beim Anlegen der einzelnen Objekte diese Regel berschreiben und dem Objekt damit eine individuelle Speicherbelegungsregel mitgeben. Das bisher Gesagte soll an dieser Stelle ber den Aufbau einer Oracle-Datenbank zunchst einmal reichen. Mehr Informationen ber dieses spezielle Thema finden Sie weiter unten in diesem Buch im Kapitel 1.5 Erstellen einer Datenbank. Ansonsten mchte ich natrlich auch wieder auf die Oracle-Dokumentation verweisen. Hier finden Sie weiterfhrende Informationen zum Beispiel im Buch

24

Oracle erste Schritte

Oracle8. Folgen Sie dort dem Querverweis Server Concepts. Die Informationen finden Sie im Kapitel Database Structure and Space Management. In der 8i-Dokumentation finden Sie das Kapitel im Buch Oracle8i Concepts, das sich hinter dem Querverweis Oracle8i Server and Data Warehousing verbirgt.

1.2

Installation

Nun soll sich dieses Buch nicht an DBAs richten, und trotzdem finden Sie so ziemlich am Anfang ein Kapitel ber die Installation. Der Grund dafr ist ziemlich einfach: vielleicht haben Sie ja auch als klassischer Anwendungsentwickler oder Berater einmal Lust, ein Oracle-DBMS zu installieren, beispielsweise weil es auch auf Ihrem NT-Notebook prima luft. Sie haben richtig gelesen. Trotz der komplexen Struktur des Oracle-DBMS funktioniert es auch in primitiven Wohnstuben hchst zuverlssig. Ein gewhnlicher Rechner mit Windows-NT (Workstation) reicht vllig aus, um darauf eine lauffhige Installation durchzufhren. Vielleicht besteht ja im Rahmen des aktuellen Projekts die Mglichkeit, eine Version auf Ihrem Rechner zu installieren oder und das gilt natrlich vor allem fr alle selbstndigen Berufskollegen Sie kaufen sich gleich eine eigene Version. Die gibt es mittlerweile nmlich in einer Einplatzlizenz fr etwa 600_ zu kaufen, wofr Sie einen ca. zehn Zentimeter dicken CD-Stapel erhalten. Im brigen gibt es auch immer wieder mal spezielle Partnerprogramme, bei deren Teilnahme Sie ebenfalls die Mglichkeit haben, besonders gnstige Test- und Entwicklungslizenzen zu beziehen. Was den letzten Satz angeht, da haben sich die Zeiten wirklich sehr zum positiven gendert. Es ist noch nicht so lange her, da war es fr kleine Firmen, Einzelunternehmen oder Freiberufler schon ein bisschen schwieriger, ein Oracle-DBMS zu erwerben. Dabei war das gar nicht mal eine Frage des Preises, sondern eher so wie bei Ferrari. Da soll auch nicht jeder ein Auto kriegen, selbst wenn er es bezahlen kann. Heute ist das anders. Zum einen ist das Produkt in speziellen Konfigurationen sehr gnstig und zum anderen bemht man sich in den letzten Jahren seitens Oracle sehr, das Produkt durch spezielle Angebote auch kleinen Softwarehusern oder Freiberuflern schmackhaft zu machen. Immer noch geblieben ist der eine oder andere AHA-Effekt whrend oder nach der Installation; frei nach dem Motto Installation gelungen, Patient tot. Damit das bei Ihnen nicht passiert, will ich im Folgenden eine kleine Installationshilfe geben. Mit dem Begriff Installation habe ich eigentlich eine Reihe von Aktivitten gemeint. Zunchst einmal mssen Sie in der Tat die bentigte Software auf Ihren Rechner kopieren. Der nchste Schritt wre die Erstellung einer Datenbank und zum Schluss mssen Sie auch noch Kontakt zu Ihrer Datenbank herstellen.

Installation

25

1.2.1

Der Installationsvorgang

Die primre Installation der Software ist natrlich stark abhngig vom konkret eingesetzten Betriebssystem und der eingesetzten Oracle-Version. Im Prinzip geht es natrlich immer um das Gleiche: Sie mssen die bentigten Dateien von der Oracle-Produkt-CD auf Ihren Rechner kopieren. Prinzipiell muss man auch zwischen der Installation des Oracle-Servers und der bentigten Software fr die einzelnen Arbeitsstationen unterscheiden. Manchmal liegen diese beiden Produktpakete auch auf verschiedenen CDs vor (z.B. Oracle8 Server fr Sun SPARC und Oracle8 Client fr Windows 95 und NT). In den folgenden Abschnitten erhalten Sie sowohl Informationen zur Installation einer normalen 8er-Version als auch zum Installationsvorgang der 8i-Variante. Wie schon eingangs erwhnt, soll die Installation auf einem NT-Notebook erfolgen, d.h. Server und Client laufen auf dem gleichen Rechner. Die Installation erfolgt unter NT 4.0 (Workstation) mit Service Pack 5 auf einem DELL Latitude CPINotebook mit Pentium II-Prozessor (366 Mhz) und 256 MB Hauptspeicher. Keine Angst, Sie mssen jetzt nicht sofort aufrsten. Auf einem Rechner mit nur 64 MB Hauptspeicher und einem 166 Mhz-Prozessor luft der Oracle-Server auch ordentlich. Selbst mit noch weniger Ressourcen ist eine Installation mglich. Vor ein paar Jahren habe ich mal einen Oracle-Server (Version 7.3) auf einem Notebook mit nur 32 MB Hauptspeicher installiert, allerdings ging der Betrieb des Servers jetzt schon stark zu Lasten der Performance anderer Anwendungen. Das einzigste was einem beim ersten Hinschauen den Atem verschlgt ist der veranlagte Platzbedarf. Die aktuelle 8i-Version beansprucht in der Standardinstallation immerhin ca. 1 GB Plattenplatz (ohne Starter-Datenbank), wohingegen sich die normaler 8er-Version inklusive Starterdatenbank mit ein paar hundert MB freiem Platz installieren lsst. Ebenfalls phnomenal ist der temporre Platzbedarf des 8i-Installationsprogramms. Bei meinen Installationsversuchen lief das Programm erst dann bis zum Ende durch, nachdem auf meinem Systemlaufwerk ca. 100 MB fr Temporrdateien zur Verfgung standen. Unter Windows erfolgt die Installation von Oracle-Produkten mit Hilfe eines speziellen Setup-Programms, dem Oracle-Installer. Dieses Programm wird im brigen blicherweise auch selbst installiert, da Sie mit ihm jederzeit weitere Komponenten nachinstallieren oder auch berflssige Programmteile entfernen knnen. Sollte sich der Installer nach dem Einlegen der CD nicht automatisch melden, so starten Sie es einfach selbst, indem Sie das im Hauptverzeichnis der CD befindliche Programm SETUP.EXE ausfhren. Das Aussehen und die Funktionsweise des Installers war in den 7er und ersten 8er Versionen nahezu gleich. Erst mit einen der letzten Versionen bekam das Installationsprogramm eine neue Garderobe verpasst, wobei die eigentlichen Funktionen aber immer noch die gleichen sind. Seit einiger Zeit schleicht sich auch in der Oracle-Produktpalette die typische Look and Feel der unter Windows berhmt gewordenen Assistenten ein und auch das Installationsprogramm liegt bei der 8iVersion im Assistentengewand vor.

26

Oracle erste Schritte

1.2.2

Installation der Version 8

Nach kurzer Ladezeit des Installationsprogramms erhalten Sie eine kleine Dialogbox, mit deren Hilfe Sie fr die Installation das Zielverzeichnis, die gewnschte Sprache und einen symbolischen Namen fr das Installationsziel auswhlen knnen (vgl. Abb. 1.6).

Abbildung 1.6: Auswahl der Sprachoption fr die Oracle-Installation

An dieser Stelle knnen Sie schon den ersten schmerzvollen Fehler machen. Wer wrde an nichts Bses denkend, nicht intuitiv German auswhlen, weil das wenn es schon angeboten wird irgendwie am naheliegendsten ist. Vor ein paar Jahren auf einem Oracle-Seminar war die Aussage des Trainers zu dieser Option ziemlich eindeutig: Sie drfen jede Sprache auswhlen, so lange es Englisch ist. Nach meinem Kenntnisstand gilt dies auch heute noch. Bei der Installation eines Servers sowieso und auch beim Client ist die Sprachoption English meistens die bessere Wahl. Zwar funktioniert der Oracle-Client mit anderen Sprachen einwandfrei, jedoch kann es bei anderen Anwendungen (z.B. PeopleSoft oder ODBC-Datenbankanwendungen) zu seltsamen Anomalien kommen, falls eine andere Sprache gewhlt wurde. Dies uert sich beispielsweise darin, dass Datums- oder Zahlenwerte in der Anwendung nicht korrekt formatiert dargestellt werden. Die hier gewhlte Spracheinstellung fhrt bei Windows-Systemen brigens zum Registrierungseintragung NLS_LANG mit dem Wert AMERICAN_AMERICA. WE8ISO8859P1, den Sie in der Registrierungsdatenbank im Verzeichnis \HKEY_ LOCAL_MACHINE\SOFTWARE\ORACLE finden. Neben der Sprache haben Sie im letzten Dialog das sogenannte Oracle-Homeverzeichnis f (engl. Home-Directory, z.B. E:\ORANT) festgelegt. Die unter diesem Homeverzeichnis liegende Struktur ist nur von der eingesetzten Oracle-Version abhngig, d.h. sie ist ansonsten konstant und allen Systemanwendungen bekannt. Im brigen ist es auch mglich, auf einem Rechner mehrere parallele Installationen zu erstellen. In dem Fall existieren blicherweise auch entsprechend viele Oracle-Homeverzeichnisse. Werden nun auf dem Server irgendwelche Anwendungen gestartet, so holen sich diese zunchst einmal das Homeverzeichnis mit Hilfe einer Umgebungsvariablen oder eines Registrierungseintrags ab, weshalb beispiels-

Installation

27

weise unter Unix in vielen Skripten immer mal wieder die oracle_home-Umgebung exportiert wird. Wenn Sie unter NT mehrere Installationen durchfhren und dabei andere Home-Verzeichnisse whlen, dann mssen Sie darauf achten, dass vor dem Start der Anwendungen das richtige Home-Verzeichnis ausgewhlt ist, und falls nicht, dann mssen Sie es vor dem Programmstart entsprechend einstellen, wofr Sie nach der Installation in der Oracle-Programmgruppe ein kleines Utility finden. Was folgt, ist eine weitere Dialogbox (vgl. Abb. 1.7) mit einem Hinweis, den Sie ebenfalls durchaus ernst nehmen sollten.

Abbildung 1.7: Eintragung des richtigen Suchpfades fr DLLs und Programme

Unter Windows werden Informationen ber Speicherorte (Home- und andere Verzeichnisse) in der Windows-Registrierungsdatenbank gespeichert. Hier kann also jede Anwendung Informationen abrufen, die zur Ausfhrung von bestimmten Programmen oder zum Laden von DLLs gebraucht werden. Allerdings arbeitet nicht (oder noch nicht ?) jedes Programm auf diese Weise. Es gibt noch viele Anwendungen, die zum Laden solcher Bibliotheken Hilfestellung in Form von voreingestellten Suchpfaden bentigen. Wenn Sie den Dialog mit der Yes-Schaltflche verlassen, dann trgt Oracle den richtigen Suchpfad fr Programme und DLLs in die Windows-Systemvariable path ein. Beenden Sie den Dialog mit No sofern Sie sicher sind, dass Sie keinen solchen Pfad-Eintrag brauchen bzw. Sie die notwendige Einstellung spter selbst vornehmen wollen. Kleine Ursache groe Wirkung. Das gilt unter Umstnden auch fr diesen PfadEintrag. Ich habe in meiner Laufbahn schon Trouble-Tickets zu diesem Thema bearbeitet. Die Oracle-Installation war erfolgreich, die Datenbank konnte ohne erkennbare Fehler generiert und geladen werden, der Zugriff auf die Datenbank mit Hilfe von Oracle-Tools (z.B. SQL-Worksheet oder SQL*Plus) funktioniert ebenfalls und auch die Anwendung wurde ohne Fehler installiert. Trotzdem luft sie nicht, d.h. der Zugriff auf die Datenbank klappt nicht. Manchmal war dieser Pfad-Eintrag die Ursache des bels. Denken Sie vor allem auch daran: selbst wenn Sie den Client mit Hilfe des Oracle-Installers installieren und dabei den Pfad setzen lassen - in machen Firmen existieren eigenwillige Login-Scripts, die diese Pfad-Angabe beim Anmelden des Benutzers selbst setzen bzw. berschreiben.

28

Oracle erste Schritte

Zurck zur Installation. Mit Hilfe des nchsten Dialogs mssen Sie die gewnschte Art der Installation auswhlen. In meiner vorliegenden Version habe ich hierbei drei verschiedene Varianten zur Auswahl (vgl. Abb. 1.8).

Abbildung 1.8: Was soll installiert werden?

Die voreingestellte Option Oracle8 installiert vorgegebene Komponenten des Servers und des Clients. Die nchste Option Oracle8 Client wird bentigt, wenn beispielsweise der Oracle-Client auf weiteren Arbeitsstationen installiert werden soll und die letzte Option ermglicht Ihnen die manuelle Auswahl aller gewnschten Komponenten. Da spter jederzeit beliebige Komponenten nachinstalliert werden knnen, ist gegen eine Standardinstallation eigentlich nichts einzuwenden. Also klicke ich auf OK und setze den Installationsvorgang damit fort. Fr alle mglichen Installationsvarianten gilt im brigen, dass bestimmte ausgewhlte Komponenten whrend des Installationsvorgangs zu spezifischen kleinen Dialogen fhren knnen, in denen dann irgendwelche Einstellungen vorgenommen werden knnen. Welche Optionen in an dieser Stelle genau angeboten werden, hngt natrlich vom Inhalt der eingelegten CD ab. So existieren beispielsweise auch CDs, auf denen nur der Oracle Client verfgbar ist. In meinem Beispiel, also der Installation des Oracle-Servers auf einem NT-Laptop, werden sowohl die Programme des Servers also auch des Clients in das gemeinsame Oracle-Home-Verzeichnis (z.B. E:\ORANT) installiert. Das wre bei einem NT-Server im brigen zunchst einmal nicht anders, denn auch auf einem Server kann sich ein Anwender theoretisch anmelden und anschlieend gewhnliche Anwendungsprogramme starten. Starterdatenbank generieren Aufgrund der gewhlten Installationsmethode erscheint als Nchstes ein Dialog (Abbildung 1.9), der es mir ermglicht zusammen mit der Installation auch gleich eine Datenbank anzulegen. Es gibt viele Wege nach Rom dies ist sicherlich der einfachste, eine Oracle-Datenbank zu erhalten. Im Kapitel Erstellen einer Datenbank werden Sie einen anderen, weitestgehend manuellen, Weg zur Erstellung einer Datenbank kennen lernen.

Installation

29

Abbildung 1.9: Starterdatenbank installieren

Die Option Typical fhrt zur Installation einer Datenbank mit dem Namen ORACLE und der Instanzbezeichnung ORCL (=SID). Diese Datenbank ist von ihrem Aufbau bzw. Konfiguration zum Spielen und Ausprobieren (z.B. fr die bungen in diesem Buch) gar nicht so schlecht geeignet und im brigen kann man ja im Nachhinein auch alle fehlenden Parameter ergnzen oder vorhanden Einstellungen nach Belieben ndern. Mit der Option None wird nur das Oracle-Softwarepaket installiert. Die mittlere Option ruft nach der Installation der Software den Oracle-Datenbank Assistenten auf. Mit Hilfe dieses Assistenten knnen Sie die bentigte Datenbank direkt erstellen oder Sie lassen sich die zur spteren Erstellung bentigten Skripte generieren. Im Kapitel Erstellen einer Datenbank werden Sie mehr ber dieses Werkzeug erfahren. Auch nach diesem Dialog ist die Installationsfragestunde noch nicht beendet. Der nchste Dialog klrt die Frage, ob die Oracle-Dokumentation auf die Festplatte kopiert oder von der CD aus gestartet werden soll. Eine Kopie beansprucht zur Zeit zwar immerhin ca. 70MB, aber die lohnen sich allemal. Beenden Sie nun auch diesen letzten Dialog, wodurch der Oracle-Installer mit der eigentlichen Installationsarbeit beginnt. In unserem Fall werden hierbei nicht nur die bentigten Programme und Dateien in das vorgegebene Verzeichnis kopiert, sondern whrend der Installation wird auch unsere erste Datenbank angelegt (Mehr Informationen zum Aufbau der Starterdatenbank finden sie brigens im Kapitel 3 Starter Database Contents im Buch Oracle8 Getting Started for Windows NT). Nach ein paar Minuten das hngt natrlich vom Rechner ab erscheint dann (hoffentlich) die folgende Meldung (vgl. Abb. 1.10), die uns die erfolgreich abgeschlossene Installation quittiert.

Abbildung 1.10: Das wars, die Installation wurde erfolgreich beendet

30

Oracle erste Schritte

Sollten Sie brigens bei einer Erst- bzw. Vollinstallation Probleme haben, dann ist neben zu wenig Plattenplatz auch immer ein vorhergehender misslungener Installationsversuch bzw. eine nicht vollstndige Deinstallation ein mglicher Grund dafr. Etwas weiter unten im Kapitel Installation entfernen finden Sie ein paar Hinweise, was Sie alles kontrollieren sollten, um dies als Grund auszuschlieen. Die Installation begutachten Wenn man Oracle zum ersten Mal installiert, dann lohnt es sich schon ein wenig genauer hinzuschauen, was alles Neues im System und auf der Festplatte verteilt wurde. Mit Hilfe der Abbildung 1.11 erhalten Sie einen berblick, was whrend der Installation alles auf Ihrem Rechner erstellt wurde.

Abbildung 1.11: Optischer berblick des Installationsergebnisses

Zunchst einmal liefert die Standardinstallation zwei neue Programmgruppen. Beide enthalten eine Flle von Werkzeugen, die Sie zum Teil im weiteren Verlauf dieses Buches noch kennen lernen werden. Wie Sie in dem Ausschnitt rechts oben der Abbildung sehen, entsteht in dem vorgegebenen Oracle-Zielverzeichnis eine ziemlich komplexe Verzeichnisstruktur. Ebenfalls umfangreich sind die in der Windows-Registrierung erstellten Eintrge. Interessant ist auch der Ausschnitt im mittleren Teil der Abbildung. Dort sehen Sie, dass auch verschiedene neue Dienste erstellt wurden. Besonders wichtig hierbei sind vor allem diejenigen, die zum Betrieb unserer Starterdatenbank bentigt werden (OracleServiceORCL, OracleStartORCL und OracleTNSListener80).

Installation

31

Nachinstallieren Ein weiteren guten berblick ber soeben installierte Komponenten erhalten Sie auch, wenn Sie jetzt einfach mal den ebenfalls installierten Oracle-Installer, den Sie in der Programmgruppe Oracle for Windows NT finden, aufrufen (Abbildung 1.12).

Abbildung 1.12: Hauptfenster des Oracle-Installers

Im Prinzip besteht das Hauptfenster des Installationsprogramms aus zwei Listen. In der rechten Liste finden Sie eine Aufstellung der bereits installierten Komponenten und in der linken haben Sie eine Auswahl der installierbaren Komponenten. Der Rest drfte eigentlich intuitiv klar sein. Markieren Sie beliebige Eintrge in der rechten Liste, um sie anschlieend durch Drcken der Schaltflche Remove zu entfernen. Oder Sie whlen die bentigten Eintrge in der linken Liste aus, um sie mit Hilfe der Install-Schaltflche zu installieren. Alle verfgbaren Komponenten sind in Oracle zu Paketen zusammengefasst, die technisch durch sogenannte Product Files (*.PRD) reprsentiert werden. Mit Hilfe der From-Schaltflche haben Sie die Mglichkeit diese Produktpakete auszuwhlen bzw. zu ffnen.

32

Oracle erste Schritte

Installation entfernen Wie einzelne Komponenten installiert oder entfernt werden knnen, haben Sie im vorhergehenden Kapitel gesehen. Eigentlich nicht erwhnenswert ist, dass Sie mit Hilfe des Oracle-Installers die ganze Installation lschen knnen, indem Sie alle in der rechten Liste angezeigten Komponenten markieren und danach die Schaltflche Remove bettigen. Allerdings klappt dieser Vorgang nicht immer so reibungslos, wie die vorhergehende Installation. Manchmal ist ein manueller Clean-Up notwendig; eine Kontrolle ist in jedem Falle empfehlenswert. Im Folgenden finden Sie einen mglichen Putzplan, um Ihre Oracle-Installation wieder zu entfernen:

: : : : : : :

Beenden und Deaktivieren Sie mit Hilfe der Systemsteuerung alle eventuell noch vorhandenen Oraclexxxx-Dienste. Lschen Sie alle installierten Komponenten mit Hilfe des Oracle-Installers. Lschen Sie, sofern noch vorhanden, das Oracle-Verzeichnis (z.B. C:\ORANT). Lschen Sie ggf. die noch vorhandenen Programmgruppen. Kontrollieren Sie die Regestrierungsdatenbank. Lschen Sie ggf. den Eintrag ORACLE im Verzeichnis HKEY_LOCAL_MACHINE\SOFTWARE. Lschen Sie diesen Eintrag ebenfalls im Verzeichnis HKEY_CURRENT_USER\SOFTWARE. Auch die Eintrge der Dienste mssen aus der Windows-Registrierung verschwunden sein oder ansonsten manuell von Ihnen gelscht werden. Sie finden diese Eintrge im Verzeichnis HKEY_LOCAL_MACHINE\SYSTEM\Services. Lschen Sie hier alle Eintrge, die mit Oracle beginnen. Starten Sie Ihren Rechner neu.

Bei Klementine war es nicht nur sauber, sondern immer rein. Bei der Registrierungsdatenbank von Windows schafft auch Ariel das nicht immer, aber sofern Sie die eben genannten Schritte ausfhren, dann ist Ihr System so aufgerumt, dass eine erneute Installation problemlos mglich sein sollte.

1.2.3

Installation von 8i

Die Installation eines 8i-Servers ist zwar nicht grundstzlich anders, sieht aber zumindest vllig anders aus. Das gilt allerdings nicht nur fr die Installation, denn mit dieser Version haben nahezu alle Tools und Werkzeuge neue Beinkleider bekommen. Schon mit dem ersten Bild des Installationsprogramms werden Ihnen verschiedene Mglichkeiten angeboten. Beispielsweise knnen Sie von hier aus die bereits installierten Produkte betrachten oder eine Deinstallation vorhandener Softwarekomponenten einleiten. Uns interessiert im Augenblick natrlich der Installationsvorgang, weshalb wir mit Hilfe der Weiter-Schaltflche den nchsten Installationsschritt einleiten. Der zweite Arbeitsschritt des Installationsvorgangs entspricht im Prinzip der Abbildung 1.6 und dient im Wesentlichen wieder zur Festlegung des Installationsziels und zur Vorgabe des Standardverzeichnisses, das wieder mit der Umgebungsvariable oracle_home verknpft ist. Legen Sie also hier das gewnschte Installationsziel

Installation

33

fest und wechseln Sie wieder mit Hilfe der Weiter-Schaltflche zum nchsten Arbeitsschritt. Dieser entspricht im Vergleich mit der klassischen Variante der Abbildung 1.8, d.h. Sie haben hier die Wahl, verschiedene Produktkategorien auszuwhlen.

Abbildung 1.13: Auswhlen der Produktkategorie bei der 8i-Installation

Ich whle hier die erste Kategorie Oracle8i Enterprise Edition, um einen Datenbankserver mit allen bentigten Komponenten zu installieren. Danach geht es mit der Weiter-Schaltflche zum nchsten Schritt, in dem die Installationsmethode ausgewhlt werden muss. Dabei haben Sie wieder die Auswahl zwischen einer Standardmethode, einem etwas kleiner geschnrten Paketes und der individuellen Auswahl der zu installierenden Komponenten. Ich habe diesmal die individuelle Variante gewhlt (vgl. Abb. 1.14) und mit Hilfe der dargestellten hierarchischen Liste alle Komponenten ausgewhlt, die in etwa einer klassischen 8er-Installation entsprechen. Natrlich knnen Sie fehlende Komponenten wieder jederzeit nachinstallieren. Falls Sie sich berhaupt nicht sicher sind oder Ihre erste Installation ausfhren und gengend Plattenplatz zur Verfgung haben, dann spricht auch nichts dagegen, die Standardinstallationsmethode zu verwenden, so dass auch automatisch wieder eine Starterdatenbank angelegt wird. Bei der manuellen Installationsvariante erhalten Sie im nchsten Arbeitsschritt einen Dialog, in dem abgefragt wird, ob Sie zusammen mit der Installation eine Starterdatenbank generieren mchten. Ich lehne diesmal dankend ab und wechsele zum nchsten und letzten Dialog des Installationsassistenten, in dem Ihnen noch einmal das geplante Installationsszenario (vgl. Abb. 1.15) gezeigt wird.

34

Oracle erste Schritte

Abbildung 1.14: Manuelle Auswahl der installierbaren Komponenten

Abbildung 1.15: Anzeige der geplanten 8i-Installation

Dienste unter Windows-NT

35

Nach Auswahl der Schaltflche Installieren beginnt das Programm damit, die bentigten Dateien von der CD zu kopieren. Dabei muss man eindeutig feststellen, dass die Angelegenheit im Vergleich zu frher eindeutig lnger dauert. Auerdem muss ich hier noch einmal meinen Schrecken ber den bentigten Platzbedarf kundtun, von dem ich mich bis heute noch nicht ganz erholt habe, denn trotz meiner zurckhaltenden Auswahl hat die Installation ca. 700 MB auf meiner Festplatte gefressen. Das wre Stoff fr folgende Schlagzeile der sich vom ersten Schock leicht erholte Patient verstarb vollends, nachdem er feststellte, dass in dieser Menge noch keine Datenbank und keine Dokumentation enthalten war.

1.3 Dienste unter Windows-NT : Mit Hilfe des eben beschriebenen Installationsprogramms haben Sie nun Oracle

oder Oracle 8i auf Ihrem Rechner installiert und eventuell auch Ihre erste Oracle-Instanz (SID=orcl) mitsamt zugehriger Datenbank generiert. Durch die standardmige Installation und die Generierung der Starterdatenbank wurden in Ihrem Windows-Betriebssystem eine Reihe von Diensten eingetragen, die den Betrieb der Datenbankinstanz vereinfachen (vgl. Abb. 1.16).

Abbildung 1.16: Wichtige Dienste zum Betrieb der Oracle-Instanz

: :

Von den insgesamt installierten Diensten sind fr den Betrieb der Starterdatenbank aber nur folgende drei notwendig, wobei die vom System konkret vergebenen Dienstnamen zum einen von der installierten Oracle-Version und zum anderen von dem von Ihnen vorgegebenen Namen fr das Homeverzeichnis abhngt: OracleServiceORCL Dieser Dienst startet die fr die Datenbank bentigten Instanz. Entsprechend den letzten Buchstaben der Dienstbezeichnung wird hierbei die Instanz ORCL (=SID) gestartet. OracleStartORCL Dieser Dienst veranlasst die Instanz zum ffnen der zugehrigen Datenbank. Einmal gestartet, verrichtet dieser Dienst die beschriebene Aufgabe und frisst anschlieend kein Brot mehr. Sie knnen ihn also laufen lassen; Sie knnten

36

Oracle erste Schritte

:

ihn auch beenden, fr die Betriebsbereitschaft der Oracle-Datenbank spielt das keine Rolle. OracleTNSListener80 Wenn Sie das Grundlagen-Kapitel vollstndig gelesen haben, dann erinnern Sie sich vielleicht an den schematischen Aufbau eines Client/Server-Systems (Abbildung 1.2). Dieser Dienst reprsentiert genau den auf dem Server beschriebenen Nachrichtendienst. Er muss also laufen, damit eine Kontaktaufnahme mit der Datenbank mglich ist.

Wenn Sie eine Installation auf einem NT-Server durchfhren, dann ist es sicherlich sinnvoll alle diese Dienste mit dem Start von NT auch automatisch zu starten, d.h. als Startart fr diese drei Dienste wre Automatisch so wie in der Abbildung 1.12 - die richtige Einstellung. Auf meinem Notebook habe ich aber keine Lust, dass mir im Hintergrund permanent Ressourcen geklaut werden, obwohl ich gerade gar keine Datenbank brauche, weil ich vielleicht nur einen Brief schreibe. Oder von allen installierten Datenbanken braucht man je nach Aufgabenstellung gerade nur eine spezielle Auswahl. In all diesen Fllen knnen Sie die nicht bentigten Datenbankinstanzen beenden, indem Sie die zugehrigen Dienste mit Hilfe der Systemsteuerung beenden. Die Reihenfolge, in der Sie die einzelnen Dienste beenden ist dabei gleichgltig. Beachten Sie allerdings, dass der Dienst OracleTNSListener80 laufen muss, wenn Sie mit wenigstens einer Datenbankinstanz arbeiten wollen. Wenn die Nichtbenutzung der Datenbankdienste eher die Regel als die Ausnahme ist, dann sollten Sie die Startart dieser Dienste auf Manuell abndern, damit mit dem Starten Ihres Rechners keine Oracle-Instanzen hochgefahren werden. Bei Bedarf knnen Sie die bentigten Datenbankdienste jederzeit mit Hilfe der Windows-Systemsteuerung aktivieren; die Reihenfolge in der Sie die einzelnen Dienste aktivieren ist dabei gleichgltig. Wenn Sie beispielsweise zuerst den Dienst OracleStartORCL starten, dann werden Sie feststellen, dass diese Aktion im Hintergrund auch den Start des Dienstes OracleServiceORCL und damit das Hochfahren der zugehrigen Datenbankinstanz bewirkt. Bei so viel Arbeit macht es vielleicht Sinn, sich fr dieses Hoch- und Runterfahren einen Liftboy anzuschaffen, der einem die Arbeit abnimmt und nur noch auf die Kommandos hoch bzw. runter bitte hrt. Windows-NT bietet Ihnen standardmig die Mglichkeit, sich einen solchen Diener zu basteln. Mit Hilfe des NETKommandos knnen Sie jeglichen installierten Dienst hoch- oder runterfahren. Konkret werden die hier bentigten NET-Befehle in einer Stapelverarbeitungsdatei (ich finde BATCH klingt besser) zusammengefasst und fr diese BATCH-Datei erstellen Sie einfach eine Verknpfung in einer Programmgruppe oder sogar direkt auf Ihrem Desktop. Die Batchdatei zum Starten der Dienst (CD: \SCRIPT\START_ORCL.BAT) knnte etwa folgendermaen aussehen:

Verbindung zur Datenbank herstellen

37

rem rem net net net

Starten des Listeners, Starten der Oracle-Instanz ORCLffnen der Datenbank start OracleTNSListener80 start OracleStartORCL stop OracleStartORCL

Listing 1.1: Starten der Datenbank mit Hilfe von Net-Kommandos

Ganz hnlich sieht das bentigte Skript zum Beenden der ORCL-Datenbankinstanz (CD: \SCRIPT\STOP_ORCL.BAT) aus:rem net net net Stoppen des Listeners, Stoppen der Datenbank ORCL stop OracleTNSListener80 stop OracleStartORcL stop OracleServiceORCL

Listing 1.2: Stoppen einer Datenbank mit Hilfe von Net-Kommandos

Auf hnliche Weise knnen Sie sich fr jede denkbare Kombination von Datenbankdiensten entsprechende Skripte erstellen. Wenn Sie bei deren Ausfhrung versuchen einen schon laufenden Dienst (z.B. OracleTNSListener80) noch einmal zu starten, dann ist das nicht weiter schlimm; Sie erhalten in dem Fall lediglich eine entsprechende Warnmeldung.

1.4

Verbindung zur Datenbank herstellen

Die Installation einer Oracle-Datenbank luft dank der mitgelieferten Installationsprogramme zwischenzeitlich unproblematisch und zeitgem. Dennoch gibt es im Rahmen der ersten Experimente und Gehversuche in der Regel zwei zunchst unsichtbare Hrden mit erheblichem Frustpotential, die es zu berwinden gilt. Zum einen haben Sie im Rahmen der Installation jetzt eine Datenbank - nebst einer Menge Werkzeuge zur Bearbeitung derselben - auf Ihrem Rechner laufen, jedoch ist die Verfahrensweise zur Kontaktaufnahme noch vllig ungeklrt und ohne weitere Eingriffe auch nicht mglich. Zum anderen hegen Sie in Ihrem inneren vielleicht den Wunsch, selbstndig eine eigene Datenbank zu erstellen. Aufgrund der Architektur von Oracle (z.B. eine Instanz pro Datenbank) ist das nicht ganz so einfach wie in manch anderem DBMS-Systemen. Ein Befehl der Form create database reicht hier alleine jedenfalls nicht aus. Falls Sie an einem dieser beiden Probleme schon einmal verzweifelt sind, so kann ich Sie trsten: Willkommen im Club, Sie sind nicht der erste, einzigste und sicherlich auch nicht der letzte, der sich bei diesen Aufgaben irgendwann einmal mit scheinbar unberwindbaren Problemen konfrontiert sah. Doof ist eigentlich nur, dass das Ganze eigentlich ganz einfach ist, aber im Nachhinein ist man ja immer schlauer. In diesem Kapitel will ich Ihnen im Folgenden die Kontaktaufnahme mit Ihrer Datenbank etwas nher bringen und im nchsten Kapitel beschftigen wir uns dann mit dem Erstellen eigener Datenbanken. Allerdings werde ich Ihnen hierbei nur soviel technische und theoretische Hintergrundinformationen liefern wie unbedingt

38

Oracle erste Schritte

notwendig ist, damit Sie zum einen wissen worum es berhaupt geht und zum anderen in der Lage sind, Ihre eigene Installation oder die Installation in einem kleinen Netzwerk erfolgreich durchfhren zu knnen. Zum Thema Oracle Networking knnte man mittlerweile ein eigenes umfangreiches Buch erstellen. Ich will daher gar nicht erst den Versuch unternehmen, dieses komplexe Thema im Rahmen des Workshops irgendwie umfassend oder zusammenhngend abzuhandeln.

1.4.1

Einfhrung in SQL*Net bzw. Net8

Das Zauberwort fr die Verbindungsherstellung zu einer Oracle-Datenbank heit SQL*Net., wobei man entsprechend der aktuellen Version mittlerweile auch nur noch von Net8 spricht. Dieser Begriff hat aber berhaupt nichts mit SQL zu tun und die Entscheidung, ob das Ganze nett ist, berlasse ich getrost Ihnen. Vielmehr handelt es sich hierbei um eine Art berprotokoll, das zwischen der Anwendung und dem eigentlichen Netzwerk gelagert ist (vgl. Abb. 1.17).

Client Anwendung Net8 Oracle Protokoll-Adapter Netzwerkprotokoll

Server Oracle-DBMS Net8 Oracle Protokoll-Adapter Netzwerkprotokoll

Physisches NetzwerkAbbildung 1.17: Schema der Net8-Kommunikation

Will eine Anwendung Verbindung mit einer Datenbank aufnehmen, dann fordert sie diese quasi ganz abstrakt, d.h. ohne Bercksichtigung irgendwelcher physischen Gegebenheiten, ber Net8 an. Das Gleiche gilt auch, wenn das Anwendungsprogramm Daten versenden will oder auf den Empfang von Daten vom Server wartet. Das Anwendungsprogramm muss sich in keinem Fall selbst um die durch das Netzwerkprotokoll vorgegebenen Regeln bei der Kommunikation kmmern. Diese Art der Kommunikation bezeichnet Oracle brigens mit dem Begriff Transparent Network Substrate, was an vielen Stellen einfach mit TNS abgekrzt wird. Die von der Anwendung gestellten Verbindungsanforderungen werden von Net8 mit Hilfe des installierten Oracle-Protokoll-Adapters fr das konkret vorhandene Netzwerk bersetzt bzw. an dieses bergeben. Das Verfahren wird sowohl auf dem Client als auf dem Server angewendet und funktioniert in beide Richtungen.

Verbindung zur Datenbank herstellen

39

Fr uns Nichtnetzwerker hat Net8 den Nachteil, dass wir selbst bei der Installation einer kleinen Spiel- oder bungsdatenbank bestimmte Konfigurationseinstellungen durchfhren mssen, damit das in Abbildung 1.17 dargestellte Sandwich entsprechend durchlssig ist. Aber hren wir auf zu jammern, die Vorteile dieser Architektur berwiegen mehr als eindeutig:

:

:

Stellen Sie sich einmal vor, jemand erfindet ein neues Netzwerkprotokoll. In dem Fall mssen Sie nur auf die Verfgbarkeit des passenden Oracle-ProtokollAdapters warten. Weder Ihre Anwendung noch der Oracle-Server selbst mssen in irgendeiner Form angepasst werden. Was bei einfachen Strukturen vielleicht ein wenig kopflastig erscheint, zeigt seine wahren Strken erst bei komplexeren Netzwerken. Stellen wir uns hierzu zwei Datenbanken, eine auf einem NT- und die andere auf einem NOVELL-Server vor. Jetzt haben wir es blicherweise mit zwei Netzwerkprotokollen (TCP/IP und SPX), d.h. wir installieren einfach diese beiden Oracle-Protokoll-Adapter. Grundstzlich wird durch Net8 die Verwendung verschiedener Netzwerkprotokolle oder einer Server/Server-Verbindung wesentlich vereinfacht. Die genaue Arbeitsweise der Verbindungsschicht zwischen Anwendung und DBMS wird mit Hilfe von Konfigurationsdateien gesteuert. Bei einem Versionswechsel mssen Sie in der Regel daher lediglich die entsprechenden Programme und Bibliotheken austauschen. Die alten Konfigurationsdateien bilden anschlieend zusammen mit der neuen SQL*Net-Version wieder genau das gleiche logische Oracle-Netzwerk wie vorher ab. Dieser Vorteil gilt im brigen auch, wenn Sie mit verschiedenen SQL*Net bzw. Net8-Versionen parallel arbeiten mssen. Immerhin gibt es noch reichlich klassische (16-Bit) Windows-Anwendungen und diese bentigen fr Ihren Betrieb die Installation des Oracle-Clients fr Windows. Gerade der 16-Bit-Client fr Windows und der NT-Client laufen auf einem Rechner problemlos nebeneinander, wobei Sie die Net-Konfigurationsdateien fr beide Installationen verwenden knnen. Die Net8-Architektur vereinfacht die Bereitstellung zentraler Hilfsmittel, beispielsweise zur Fehleranalyse oder zur Verschlsselung der bermittelten Daten. Ein entsprechend bentigter Service wird einfach in der zughrigen Konfigurationsdatei ein- bzw. ausgeschaltet. Bleiben wir mal bei der Verschlsselung der bermittelten Daten: Wird eine solche Option gewhlt, dann gilt sie automatisch fr alle eingesetzten Anwendungsprogramme, ohne das in diesen irgendetwas gendert oder angepasst werden muss.

:

:

:

Bei der Verbindungsanforderung von einem Anwendungsprogramm zum OracleDBMS spielt allerdings noch eine weitere Komponente eine Rolle, die Sie bisher zwar schon gesehen haben, deren genaue Funktion bis jetzt aber noch nicht besprochen wurde. Es handelt sich hierbei um den auf dem Server laufenden Listener-Prozess, den Sie bei einer standardmigen NT-Installation als Dienst OracleTNSListener80 kennen gelernt haben. Dieser Dienst hrt permanent das Netzwerk ab und dient quasi als zentrale Empfangsstation aller eingehenden Verbindungsanfragen.

40

Oracle erste Schritte

Wie schon gesagt, kann der genaue Name dieses Dienstes variieren, d.h. der standardmig vergebene Name hngt von der verwendeten Version und Ihren Installationsvorgaben ab. Die Wrtchen TNS und Listener tauchen aber im Regelfall immer auf, so dass der von mir gemeinte Dienst eigentlich immer zu identifizieren ist. Dadurch wird das eigentliche DBMS von dieser Horchaufgabe entlastet. Stellen Sie sich mal einen Busfahrer (DBMS) vor, der neben seiner Fahrttigkeit auch noch permanent auf alle Fahrgste achten muss, ob an der nchsten Haltestelle jemand aussteigen will. Whrend der Fahrt reden sowieso alle Gste (Clients) durcheinander und trotzdem msste der Fahrer permanent auf signifikante Begriffe (z.B. Stop) achten. Da ist es doch einfacher, man installiert einen Listener in Form eines roten Stopknpfchens und wenn ein Client (Fahrgast) diesen drckt, dann erhlt der Fahrer (DBMS) diese Aufforderung ganz automatisch (weil es bei ihm vorne klingelt) ohne sich um den Erhalt der Information kmmern zu mssen. Solche Listener knnen das Netzwerk fr mehr als ein DBMS abhren. Fr welche sie es konkret tun, das muss ebenfalls im Rahmen der Net8-Konfiguration festgelegt werden. Fr mich sind im Rahmen meiner Beraterttigkeit solche Dinge, genau wie Netzwerke, Rechnerarchitekturen u.., immer Mittel zum Zweck. In der Regel sie genau wie eine Net8-Installation beim Kunden sowieso von entsprechenden Spezialisten geplant und konfiguriert. Trotzdem ist es natrlich interessant zu wissen, worum es eigentlich geht; schlielich will man ja mitreden knnen und hierzu haben Sie, so denke ich, jetzt genug Informationen bekommen. Das ganze Spektrum der Net8Konfiguration und Mglichkeiten finden Sie natrlich wieder in der Oracle-Dokumentation, und zwar im Buch Oracle8 Networking bzw. Oracle8i Server Networking.

1.4.2

Verbindung zur Starterdatenbank herstellen

Nun geht es endlich los, wir kmmern uns um die Verbindung zu unserer Starterdatenbank. Standardmig befinden sich die Net8-Konfigurationsdateien im \NET80\ADMIN-Verzeichnis bzw. bei der 8i-Version im \NETWORK\ADMIN, dass selbst wiederum unterhalb des Oracle-Homveverzeichnisses (z.B. E:\ORANT) angelegt ist. Beim alten 16-Bit-Client heit der zugehrige Pfad brigens auch \NETWORK\ADMIN (also Back to the Roots) und befindet sich im entsprechenden Home-Verzeichnis der 16-Bit-Installation (z.B. C:\ORAWIN). Keine Regel ohne Ausnahmen, das gilt natrlich auch hier. Gerade in greren Unternehmen werden Sie in der Windows-Registrierung fters den Schlssel TNS_ADMIN im Verzeichnis \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE finden. Mit Hilfe dieses Eintrags knnen Sie den Ort fr die Konfigurationsdateien des Net8-Zugriffs festlegen, beispielsweise um die entsprechenden Dateien zentral bereitzustellen. Bedenken Sie: Je nach Softwarearchitektur wird der Oracle-Client ggf. auf jeden Arbeitsplatzrechner installiert. Da sich der Client nicht tglich ndert und wegen den heutzutage mglichen Verfahrensweisen der automatischen Softwareverteilung ist das eigentlich auch nicht weiter dramatisch. Aber schnell

Verbindung zur Datenbank herstellen

41

reagieren kann man auf diese Weise sich