Oracle9i XML-Handbuch XML-basierte, datenbankgestützte Anwendungen entwickelnfür die Versionen 9i, 8i und 7.x von Doris Heidenberger, Mark Scardina, Stefan Kiritzov, Ben Chang 1. Auflage Hanser München 2002 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21912 0 Zu Leseprobe schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
Inhaltsverzeichnis Einleitung...XV Teil I Ein Unternehmen kommt in Fahrt... 1 1 Oracle: Das Unternehmen und die Software... 3 1.1 Terminologie... 3 1.2 Die Firma Oracle ein historischer Abriss... 4 1.2.1 1977: Die Anfänge... 4 1.2.2 1978: Relational Software Inc. wird geboren... 5 1.2.3 1979: Auslieferung des ersten kommerziellen Datenbankprodukts... 5 1.2.4 1980: Die Geburt von Oracle Systems... 6 1.2.5 1981 1983: Die erste RDBMS, die auf Mainframes und Minicomputern läuft... 6 1.2.6 1984: Version 4 (Lesekonsistenz)... 6 1.2.7 1985: Oracle steigt ins Applikationsgeschäft ein... 7 1.2.8 1986: Die erste DBMS mit verteilter Verarbeitung... 7 1.2.9 1987: Die Party geht weiter... 8 1.2.10 1988: Oracle Financials/Oracle CASE... 8 1.2.11 1989: Oracle 6.2 kommt auf den Markt... 8 1.2.12 1990 1991: Die Milliardengrenze... 9 1.2.13 1992: Ray Lane kommt dazu... 9 1.2.14 1993: Das Applikationsgeschäft... 10 1.2.15 1994 1995: 2 Milliarden Dollar und der Netzwerk-PC... 10 1.2.16 1996: Oracle steigt ins Endkundengeschäft ein... 11 1.2.17 1997: Die Freigabe von Oracle8... 11 1.2.18 1998: Oracle unterstützt Linux... 12 1.2.19 1999: Die Freigabe von Oracle8i... 12 1.2.20 2000: Nummer eins... 12
VI Inhaltsverzeichnis 1.3 Aktuelle Angebote... 12 1.4 Fragen zu Kapitel 1... 13 2 Die Services: eine Übersicht... 15 2.1 Terminologie... 16 2.2 Der Oracle Support Service... 17 2.3 Anmelden von TARS beim OSS (alte Variante)... 19 2.3.1 Dokumentationen zur Unterstützung Ihrer TAR... 20 2.3.2 MetaLink... 22 2.3.3 Die technischen Bibliotheken... 24 2.3.4 Die Foren... 26 2.3.5 itars... 29 2.3.6 Wichtige Kundeninformationen... 30 2.3.7 Die TARs eine Kurzbeschreibung... 30 2.4 Das Oracle Technology Network... 32 2.5 Das Oracle AppsNet... 35 2.6 Newsgroups und List Servers... 38 2.6.1 Newsgroups... 38 2.6.2 List Server... 41 2.6.3 Die Online-Dokumentation... 45 2.6.4 Wer suchet, der findet!... 47 2.7 Fragen zu Kapitel 2... 52 3 Der Oracle Server... 53 3.1 Terminologie... 53 3.2 Die Serverarchitektur... 56 3.3 Hintergrund-Supportprozesse... 58 3.3.1 Database Writer (dbw0)... 58 3.3.2 Process Monitor (pmon)... 59 3.3.3 System Monitor (smon)... 59 3.3.4 Log Writer (lgwr)... 59 3.3.5 Checkpoint (ckpt)... 60 3.3.6 Recoverer (reco)... 60 3.3.7 Archiver (arc0)... 60 3.4 INIT.ora... 60 3.4.1 Standorteinträge... 61 3.4.2 Limitierende Einträge... 62 3.4.3 Einträge für Funktionen... 63 3.4.4 Ändern von Parametern... 63 3.5 Die Steuerdatei... 66 3.6 Redo Logs... 66
Inhaltsverzeichnis VII 3.7 Die Datenbank-Datendateien... 69 3.8 Rollback-Segment/Undo Tablespace... 70 3.9 Wichtige Speicherstrukturen... 72 3.9.1 Der Daten-Cache... 72 3.9.2 Der Library Cache... 73 3.9.3 Locks und Latches... 74 3.10 Fragen zu Kapitel 3... 77 Teil II Sind Sie neu im Geschäft?... 79 4 Datenbankobjekte... 81 4.1 Terminologie... 82 4.2 Tabellen hier liegen Ihre Daten... 83 4.2.1 Beispiel: create table... 83 4.2.2 Beispiel: create table as... 84 4.3 Views eine angepasste Selektion aus einer oder mehreren Tabellen... 85 4.3.1 Beispiel: create view... 85 4.4 Materialisierte Views eine View, die Daten speichert... 86 4.4.1 Beispiel: create materialized view (früher snapshot)... 87 4.4.2 Das Umschreiben von Abfragen... 87 4.5 Indizes der schnelle Zugriff auf Ihre Daten... 88 4.5.1 Die Vorteile einer Vorsortierung... 88 4.5.2 Eindeutige und nichteindeutige Indizes... 89 4.6 Trigger Event-gesteuerte Programme... 90 4.6.1 Beispiel: create trigger... 90 4.7 Synonyme Spitznamen für Objekte... 93 4.7.1 Beispiel: create synonym... 93 4.8 Sequenzen der schnelle Weg zum Erhalt eindeutiger Zahlen... 94 4.8.1 Beispiel: create sequence... 94 4.9 create role und die Verwaltung von Berechtigungen... 94 4.9.1 Beispiel: create role... 95 4.10 Funktionen, Prozeduren und Packages... 95 4.10.1 create function... 95 4.10.2 Beispiel: create function... 96 4.10.3 create procedure... 97 4.10.4 create package... 98 4.10.5 Beispiel: create package... 98 4.11 Andere Datenbankobjekte... 98 4.11.1 create operator... 98 4.11.2 create directory... 99 4.11.3 create library... 100 4.11.4 Datenbank-Links... 100
VIII Inhaltsverzeichnis 4.11.5 create cluster... 101 4.11.6 Beispiel: create cluster... 102 4.12 Fragen zu Kapitel 4... 103 5 SQL*Plus... 105 5.1 Der Zugang zu SQL*Plus... 106 5.1.1 Der Zugriff von der Befehlszeile... 106 5.1.2 Der Zugriff über ein Symbol... 107 5.1.3 Beenden der SQL*Plus-Sitzung... 107 5.2 Data Definition Language (DDL)... 108 5.2.1 Die Befehle create und drop... 108 5.2.2 Datentypen... 109 5.3 Der describe-befehl... 110 5.3.1 Not Null... 111 5.4 Data Manipulation Language (DML)... 111 5.4.1 Die insert-anweisung... 112 5.4.2 Die select-anweisung... 113 5.4.3 Die SQL*Plus-Umgebung... 118 5.5 Verknüpfen von Tabellen... 122 5.5.1 Primär- und Fremdschlüssel... 122 5.5.2 Die break on-klausel... 124 5.6 Fragen zu Kapitel 5... 129 6 PL/SQL das kleine Einmaleins... 131 6.1 Terminologie... 132 6.2 PL/SQL: Die Programmiersprache von Oracle... 134 6.3 Der Zeichensatz in PL/SQL... 135 6.3.1 Unterstützte Zeichen... 136 6.3.2 Arithmetische und relationale Operatoren... 136 6.4 PL/SQL-Struktur... 137 6.4.1 PL/SQL-Variablen... 138 6.5 Steuerstrukturen... 141 6.5.1 If-Logikstrukturen... 142 6.5.2 Schleifen... 146 6.6 SQL in PL/SQL-Programmen... 149 6.7 Cursor... 149 6.8 Die Cursor for-schleife... 151 6.9 Ausnahmebehandlung... 152 6.10 Gespeicherte Prozeduren und Funktionen... 154 6.10.1 Gespeicherte Prozeduren... 155 6.11 Funktionen... 159 6.12 Das Debugging... 160
Inhaltsverzeichnis IX 6.13 Vorschau... 161 6.14 Fragen zu Kapitel 6... 162 7 DBA das kleine Einmaleins... 163 7.1 Terminologie... 164 7.2 Was ist eine Datenbank?... 164 7.3 Was ist eine Oracle-Instanz?... 165 7.3.1 Die System Global Area (SGA)... 165 7.3.2 startup open... 167 7.3.3 Die Datei INIT.ora... 168 7.3.4 shutdown... 169 7.4 Der Oracle-Tablespace... 171 7.4.1 create tablespace extent management dictionary... 171 7.4.2 Einen Tablespace löschen... 174 7.5 Rollback-Segmente... 175 7.5.1 create rollback segment... 175 7.5.2 Die View DBA_ROLLBACK_SEGS... 176 7.5.3 alter rollback segment online... 177 7.5.4 Ein Rollback-Segment manuell verkleinern... 178 7.5.5 drop rollback segment... 178 7.6 Redo Logs... 178 7.6.1 Das Multiplexen von Redo Logs... 178 7.6.2 Löschen eines Redo Logs... 179 7.6.3 Ein Redo Log hinzufügen... 180 7.7 Steuerdateien die Checkliste der Datenbank... 181 7.7.1 Steuerdateien anlegen... 181 7.8 Einrichten eines Benutzerkontos... 182 7.8.1 grant connect, resource... 182 7.9 Fragen zu Kapitel 7... 184 Teil III Aufbaukurs... 185 8 Mehr SQL*Plus... 187 8.1 Terminologie... 188 8.2 Einsatz von SQL*Plus in der Produktionsumgebung... 188 8.2.1 Kommentieren des Codes mit rem, -- und /* */... 188 8.2.2 SQL*Plus Include-Dateien... 189 8.2.3 SQL*Plus von der Eingabeaufforderung des Systems aus... 192 8.3 Die Mengenoperatoren union, intersect und minus... 192 8.3.1 Der union-operator... 193 8.3.2 Der Operator union all... 194 8.3.3 Der minus-operator... 194
X Inhaltsverzeichnis 8.3.4 Der Operator intersect... 194 8.3.5 Mischen Sie keinesfalls Äpfel und Birnen... 195 8.4 Der Befehlszeileneditor... 195 8.4.1 Einsatz des Befehlszeileneditors... 196 8.4.2 Könnte ich doch nur mit Vi oder Emacs arbeiten... 196 8.5 Die Dual-Tabelle... 197 8.6 Oracle-Funktionen... 197 8.6.1 Mathematische Funktionen und Operatoren... 197 8.6.2 String-Funktionen... 198 8.6.3 Der Datentyp date... 201 8.6.4 Datumsfunktionen in SQL*Plus... 202 8.6.5 group by-funktionen... 207 8.6.6 Mit group by nach Duplikaten suchen... 209 8.6.7 Mit group by duplikate Daten löschen... 210 8.7 SQL generiert SQL... 211 8.7.1 Anlegen einer Datendatei mit SQL... 213 8.8 Unterabfragen... 214 8.9 Die decode-anweisung... 216 8.9.1 update und decode... 217 8.10 Fragen zu Kapitel 8... 219 9 Mehr PL/SQL... 221 9.1 Terminologie... 222 9.2 Überladen von Programmen und Packages... 222 9.3 Fortgeschrittene Fehlerbehandlung in PL/SQL... 224 9.3.1 Benutzerdefinierte Ausnahmen... 224 9.3.2 Die Oracle-Variablen zur Fehlerbehandlung... 226 9.4 Autonome Transaktionen... 227 9.5 PL/SQL-Sicherheit mit Aufruferberechtigungen... 229 9.6 Oracle-Packages... 229 9.6.1 Das Package utl_file... 230 9.6.2 Dynamisches SQL... 233 9.7 Fragen zu Kapitel 9... 236 10 Mehr zur Datenbankverwaltung... 237 10.1 Terminologie... 238 10.2 Backup und Recovery... 238 10.3 Export... 238 10.3.1 Die Rolle von Export bei Backups... 238 10.3.2 Die Export-Parameter... 239 10.3.3 Die Operationsmodi von Export... 241 10.3.4 Export-Typen... 245
Inhaltsverzeichnis XI 10.4 Import... 246 10.4.1 Die Rolle von Import beim Recovery... 246 10.4.2 Import-Parameter... 247 10.4.3 Operationsmodi für Import... 248 10.4.4 Import-Typen... 250 10.5 Funktionen des Media Recovery... 251 10.5.1 Heiße und kalte Backups... 252 10.5.2 Der Archivelog-Modus... 253 10.5.3 Die Datenbank in den Archivelog-Modus überführen... 254 10.5.4 Ein heißer Backup... 255 10.5.5 Media Recovery ein Beispiel... 256 10.6 Fragen zu Kapitel 10... 260 11 Oracle Enterprise Manager... 263 11.1 Terminologie... 263 11.2 Die Möglichkeiten des OEMs: Ein Überblick... 265 11.3 Starten der Datenbank... 267 11.4 Herunterfahren der Datenbank... 270 11.5 Tablespace-Verwaltung... 271 11.5.1 Neudimensionieren einer Datendatei... 273 11.5.2 Hinzufügen einer Datendatei... 274 11.5.3 Verkleinern einer Datendatei... 275 11.6 Benutzerverwaltung... 276 11.6.1 Anlegen eines neuen Benutzers... 276 11.6.2 Rechte zur Reservierung von Speicherplatz in der Datenbank 278 11.6.3 Zuweisung von Objektberechtigungen... 279 11.7 Objektverwaltung... 281 11.7.1 Objektverwaltung mit SQL*Plus Worksheet... 283 11.8 Fragen zu Kapitel 11... 286 12 Verteilte Verarbeitung... 289 12.1 Terminologie... 289 12.1.1 Partitionieren von Applikationen via verteilte Verarbeitung... 290 12.2 Oracle Net... 291 12.2.1 listener.ora... 291 12.2.2 tnsnames.ora... 293 12.2.3 Der Network Configuration Assistant... 295 12.2.4 Hinterlegen der tnsnames.ora... 300 12.2.5 Verbindungsaufbau via Oracle Net... 300 12.3 Fragen zu Kapitel 12... 302
XII Inhaltsverzeichnis Teil IV i steht für Internet... 303 13 Das i in Oracle9i... 305 13.1 Terminologie... 306 13.2 Die Oracle Internet-Datenbank... 307 13.2.1 Kommunizieren mit der Datenbank... 309 13.3 Java in der Datenbank... 311 13.4 Hohe Verfügbarkeit... 313 13.4.1 Schutz von Systemzusammenbrüchen... 313 13.4.2 Schutz vor Laufwerksfehlern... 314 13.4.3 Schutz von Bedienerfehlern... 315 13.4.4 Verwaltung von geplanten Auszeiten... 315 13.5 Real Application Clusters... 316 13.6 Das Internet File System (ifs)... 317 13.7 Fragen zu Kapitel 13... 318 14 Alles zum WWW... 319 14.1 Terminologie... 320 14.2 Der Oracle9i Application Server... 321 14.2.1 Communication Services... 323 14.2.2 Die Business Logic Services... 326 14.2.3 Die Presentation Services... 327 14.2.4 Caching Services... 331 14.2.5 Content Management Services... 333 14.2.6 Portal Services... 334 14.2.7 Business Intelligence Services... 335 14.3 Java in der Datenbank... 336 14.4 Fragen zu Kapitel 14... 339 Teil V Wer behauptet, Sie seien ein Anfänger?... 341 15 Formulare und Reports eine Übersicht... 343 15.1 Terminologie... 343 15.2 Beispieldaten... 344 15.3 Einführung in Forms und Reports... 345 15.3.1 Die Komponenten für Forms und Reports... 346 15.3.2 Initiieren einer Datenbankverbindung... 347 15.4 Aufbau eines Formulars... 347 15.4.1 Der Data Block Wizard... 348 15.4.2 Der Layout Wizard... 350 15.4.3 Ein Formular bearbeiten... 353
Inhaltsverzeichnis XIII 15.5 Report Builder... 359 15.5.1 Der Report Wizard... 359 15.5.2 Den Report ändern... 362 15.6 Fragen zu Kapitel 15... 364 16 Daten partitionieren... 367 16.1 Terminologie... 367 16.2 Warum Daten partitionieren?... 368 16.2.1 Datenvolumen... 369 16.2.2 Die Managementfreundlichkeit der Partitionierung... 370 16.2.3 Performance-Gewinne... 371 16.3 Bereichsbasierte Partitionierung... 371 16.3.1 Auswahl eines Partitionsschlüssels... 371 16.3.2 Bereichsbasierte Partitionierung der SQL-Code... 374 16.4 Partitionierte Tabellen indizieren... 377 16.4.1 Lokal partitionierte Indizes... 377 16.4.2 Global partitionierte Indizes... 380 16.4.3 Lokal oder nicht lokal, das ist die Frage... 382 16.4.4 Partitionierte Indizes mit und ohne Präfix... 384 16.5 Listenpartitionierung... 385 16.6 Hash-Partitionierung... 387 16.7 Wann ist welcher Ansatz der richtige?... 388 16.7.1 Zeilenzahl... 389 16.7.2 Zugriffsmethode... 390 16.7.3 Zusammengesetzte Partitionierung ein Zwitter... 391 16.8 Fragen zu Kapitel 16... 393 17 DataWarehousing und Summierung... 395 17.1 Terminologie... 396 17.2 Was ist ein Data Warehouse?... 397 17.3 Design eines Data Warehouse... 398 17.3.1 Dimensionales Datenbankdesign... 400 17.4 Partitionierung bei Warehouses... 401 17.5 Sicherung von Warehouses... 404 17.6 Laden des Data Warehouse... 406 17.6.1 Das Warehouse mit SQL*Loader laden... 407 17.6.2 Das Warehouse über externe Tabellen laden... 409 17.6.3 Das Warehouse mit PL/SQL laden... 411 17.7 Data Warehousing-Funktionen in Oracle9i... 414 17.7.1 Materialisierte Views... 415
XIV Inhaltsverzeichnis 17.8 Erweiterte Aggregatoperationen... 428 17.8.1 Die rollup-funktion... 430 17.8.2 Die cube-funktion... 431 17.8.3 Ranking-Funktionen... 433 17.8.4 Windowing-Funktionen... 437 17.8.5 Statistische Funktionen... 439 17.9 Fragen zu Kapitel 17... 441 A Antworten zu den Fragen in den einzelnen Kapiteln... 443 Schlagwortregister... 453