Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnologien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Dozent an der Hochschule der in Medien Stuttgart.
Materialien zum Buch ... 21
1. Einführung ... 23
1.1 ... Für wen ist dieses Buch geschrieben? ... 23
1.2 ... Der Aufbau des Buches ... 26
1.3 ... Vorwort zur vierten Auflage ... 34
2. Verwendete Werkzeuge und Ressourcen ... 35
2.1 ... Oracles Online-Dokumentation ... 35
2.2 ... Aufsetzen einer Beispieldatenbank ... 40
2.3 ... SQL*Plus ... 41
2.4 ... SQLCL ... 42
2.5 ... SQL Developer ... 43
2.6 ... 'explain plan' ... 44
2.7 ... Autotrace ... 46
2.8 ... Runstats ... 48
2.9 ... Trace und tkprof ... 49
2.10 ... Debugger ... 52
2.11 ... Weitere Werkzeuge ... 53
2.12 ... Die Beispielskripte ... 53
TEIL I. Grundlagen ... 55
3. Aufbau der Datenbank aus Sicht eines Programmierers ... 57
3.1 ... Grundlegende Arbeitsweise der Datenbank ... 57
3.2 ... Logischer Aufbau: Schema, Tablespace und Co. ... 69
3.3 ... Die physikalische Datenbank ... 79
3.4 ... Instanz und Speicherstrukturen ... 84
3.5 ... Containerdatenbank ... 94
3.6 ... Start der Datenbank ... 95
3.7 ... Verbindungsaufbau zur Datenbank ... 96
4. Datenbankobjekte und SQL ... 113
4.1 ... Tabellen ... 113
4.2 ... Index ... 120
4.3 ... Views und Materialized Views ... 129
4.4 ... PL/SQL-Programm ... 132
4.5 ... Sonstige Datenbankobjekte ... 133
4.6 ... Exkurs: Zeichensatzcodierung ... 139
4.7 ... Mächtigkeit von SQL ... 145
5. Datensicherheit, -konsistenz und Transaktion ... 159
5.1 ... Lese- und Schreibkonsistenz ... 160
5.2 ... Transaktion ... 164
5.3 ... Datenkonsistenz und referenzielle Integrität ... 168
5.4 ... Explizites Sperren von Daten durch die Anwendung ... 183
5.5 ... Verarbeitung einer SQL-Anweisung ... 190
5.6 ... Die Sperrmechanismen von Oracle ... 196
5.7 ... Datensicherheit ... 197
5.8 ... Workshop: Einfluss der Programmierung ... 200
6. Programmierung der Datenbank ... 213
6.1 ... Erweiterung der Datenbankfunktionalität ... 213
6.2 ... Programmierung der Datenkonsistenz ... 215
6.3 ... Programmierung der Datensicherheit ... 223
6.4 ... Anwendungsprogrammierung mit PL/SQL ... 226
6.5 ... Unterstützung der Administration durch PL/SQL ... 227
TEIL II. Die Sprache PL/SQL ... 231
7. Die Blockstruktur und Syntax von PL/SQL ... 233
7.1 ... Das Grundgerüst: der PL/SQL-Block ... 234
7.2 ... Prozeduren ... 241
7.3 ... Funktionen ... 257
7.4 ... Datenbanktrigger ... 261
7.5 ... Packages ... 262
7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 267
7.7 ... Compiler-Anweisungen (Pragma) ... 270
7.8 ... Best Practices ... 272
8. Kontrollstrukturen ... 275
8.1 ... Auswertende Anweisung 1 ('if then else'-Anweisung) ... 275
8.2 ... Auswertende Anweisung 2 ('case'-Anweisung) ... 277
8.3 ... Einfache Schleifen ... 281
8.4 ... Konditionale Kompilierung ... 292
8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 297
9. Datentypen in PL/SQL ... 303
9.1 ... Skalare Datentypen ... 303
9.2 ... Kollektionen in PL/SQL ... 314
9.3 ... Cursor ... 340
10. Cursor ... 341
10.1 ... Lebenszyklus eines Cursors ... 341
10.2 ... Cursor-Attribute ... 344
10.3 ... Parametrisierte Cursor ... 347
10.4 ... Mengenverarbeitung mit 'bulk collect' ... 349
10.5 ... Kurzform: die 'cursor for'-Schleife ... 351
10.6 ... Implizite versus explizite Cursor ... 353
10.7 ... Cursor-Variablen ('ref'-Cursor) ... 359
10.8 ... Cursor-Ausdrücke ... 366
10.9 ... Gemeinsamer Zugriff auf Daten über verteilte Cursor ... 371
10.10 ... Tabellenfunktionen ... 373
11. Events in der Datenbank: Programmierung von Triggern ... 385
11.1 ... DML-Trigger ... 385
11.2 ... 'instead of'-Trigger ... 406
11.3 ... Einsatzbereiche von DML-Triggern ... 409
11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 429
11.5 ... Datenbanktrigger ... 433
11.6 ... Zusammenfassung ... 445
12. Packages ... 449
12.1 ... Trennung von öffentlicher und privater Logik ... 449
12.2 ... Überladung in Packages ... 465
12.3 ... Ausführungsrechte von Packages ... 471
12.4 ... Packages und die Dependency Chain ... 476
12.5 ... Verschlüsselung von Package-Code ... 483
12.6 ... Oracle-Packages ... 488
12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 501
13. Erweiterung von SQL ... 521
13.1 ... Wann SQL erweitert werden sollte ... 521
13.2 ... SQL durch eigene Funktionen erweitern ... 527
13.3 ... Workshop: Berechnung der Fakultät ... 537
13.4 ... Gruppenfunktionen selbst erstellen ... 547
13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 558
14. Dynamisches SQL ... 571
14.1 ... Dynamisches SQL mittels 'execute immediate' ... 572
14.2 ... Dynamisches SQL mit Cursor-Variablen ... 576
14.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 576
14.4 ... DBMS_SQL-Package ... 581
14.5 ... Sicherheit bei dynamischem SQL ... 597
14.6 ... SQL-Makros ... 601
14.7 ... Polymorphe Tabellenfunktionen ... 615
15. Exception ... 631
15.1 ... Oracle-Fehler ... 631
15.2 ... Applikationsfehler erstellen und bearbeiten ... 647
15.3 ... Workshop: zentralisierter Fehler-Handler mit einem Trigger ... 657
15.4 ... Zusammenfassung ... 662
TEIL III. PL/SQL im Einsatz ... 665
16. Arbeiten mit LOBs (Large Objects) ... 667
16.1 ... Technische Struktur ... 668
16.2 ... Die Datentypen 'CLOB', 'NCLOB', 'BLOB' und 'BFILE' ... 683
16.3 ... Das Package 'DBMS_LOB' ... 686
16.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 692
17. Arbeiten mit XML ... 701
17.1 ... Der Datentyp 'XMLType' ... 701
17.2 ... Die Speicherung von XML-Daten in der Datenbank ... 710
17.3 ... XML aus relationalen Daten erzeugen ... 713
17.4 ... Relationale Daten aus XML extrahieren ... 726
17.5 ... XML mit PL/SQL verarbeiten ... 731
17.6 ... Die XML-Datenbank ... 743
18. Arbeiten mit JSON ... 769
18.1 ... JSON ... 769
18.2 ... Programmierung von JSON mit PL/SQL ... 780
18.3 ... SODA (Simple Oracle Document Access) ... 789
19. Objektorientierung ... 801
19.1 ... Einführung in die Objektorientierung ... 803
19.2 ... Objektorientierte Datentypen ... 815
19.3 ... Objektorientierte Datenmodelle ... 826
19.4 ... Workshop: der Datentyp 'MoneyType' ... 830
19.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 851
20. Integration von Oracle in Applikationen ... 881
20.1 ... Sperrung von Daten bei der Datenänderung ... 882
20.2 ... Speicherung von Session-Informationen ... 901
20.3 ... Zugriff auf Daten über PL/SQL-Packages ... 920
20.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 924
21. Performance-Tuning und Codeanalyse ... 945
21.1 ... Regeln zur Performance-Optimierung ... 946
21.2 ... Optimierungsmöglichkeiten von PL/SQL ... 955
21.3 ... Compiler-Warnungen ... 969
21.4 ... PL/Scope ... 973
21.5 ... PL/SQL Hierarchical Profiler ... 980
21.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 999
22. Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 1003
22.1 ... Überblick: die Idee und die Architektur ... 1003
22.2 ... Beschreibung der einzelnen Komponenten ... 1012
22.3 ... Implementierung des PIT-Administrations-Packages ... 1047
22.4 ... Weitere Ausgabemodule ... 1055
Index ... 1071
Mit PL/SQL, der prozeduralen Erweiterung von SQL, verfügen Sie über eine faszinierende Technologie, um Oracles Datenbank mächtige Funktionen abzugewinnen. Egal, ob Sie bereits mit Datenbanken zu tun haben und jetzt die Fähigkeiten mit PL/SQL erweitern möchten, sich als Administrator beispielsweise in die Programmierung von Triggern einarbeiten wollen oder als Anwendungsentwickler einen näheren Blick auf Datenbankinterna werfen müssen: In diesem umfassenden Handbuch finden Sie alles, was Sie benötigen, um mit PL/SQL den maximalen Nutzen für Ihren Anwendungsfall zu finden. Dafür sorgen die gründliche Einführung in Aufbau und Syntax von PL/SQL, hilfreiche Anregungen zum Einsatz und der Verbesserung Ihres Codes sowie ausführliche Workshops mit Praxisbezug. Im Vordergrund des Buchs stehen die Strategien, die Sie benötigen, um performante, sichere und skalierbare Applikationen zu entwickeln. Neben der umfassenden Einführung in PL/SQL geht es daher um Fragen wie beispielsweise: Auf welche Weise können Sie große Datenmengen effizient verarbeiten? Welche Vor- und Nachteile haben Datenbanktrigger, wann sind sie richtig, wann nicht? Wann sollten Sie PL/SQL einsetzen, wann SQL? Wie schützen Sie die Datenbank vor unberechtigtem Zugriff? Die Kombination von strategischer Denkweise zur Datenbankprogrammierung und Workshops sowie Codebeispielen hilft Ihnen bei der korrekten und hochwertigen Datenbankprogrammierung. Aktuell zu Oracle 19c.
Aus dem Inhalt: