reine Buchbestellungen ab 5 Euro senden wir Ihnen Portofrei zuDiesen Artikel senden wir Ihnen ohne weiteren Aufpreis als PAKET

Oracle PL/SQL
Das umfassende Handbuch für Datenbankentwickler. Aktuell zu Oracle 19c und 21c
Sieben, Jürgen

89,90 €

inkl. MwSt. · Portofrei
Menge:

Produktbeschreibung

Alles zur Programmierung mit PL/SQLMit PL/SQL, der prozeduralen Erweiterung von SQL, verfügen Sie über eine faszinierende Technologie, um Oracles Datenbank mächtige Funktionen abzugewinnen. 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: 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 und 21c!

Aus dem Inhalt:

  • Für Programmierer und Admins
  • Grundlagen von Oracle-Datenbanken
  • Werkzeuge und Ressourcen
  • Datenbankobjekte und SQL
  • Datensicherheit, Konsistenz, Transaktionen
  • Erweiterung von Datenbankfunktionalitäten
  • Syntax von PL/SQL
  • Datentypen und Kontrollstrukturen
  • Dynamisches SQL
  • Pluggable Databases
  • Debugging, Monitoring und Performancetuning
  • PL/Scope
  • LargeObjects, XML, OOP
  • Workshops aus der Praxis
  • u. v. m.



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

»Eine ausführliche Einführung in den Aufbau und die Syntax von PL/SQL sowie hilfreiche Anregungen zum Einsatz und der Verbesserung von Code. Die enthaltenen Workshops sind ausführlich gestaltet und haben einen starken Bezug zur Praxis.« Ahadesign.eu 202309
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.

Über den Autor



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.


Inhaltsverzeichnis





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


Klappentext



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:



  • Für Programmierer und Admins

  • Grundlagen von Oracle-Datenbanken

  • Werkzeuge und Ressourcen

  • Datenbankobjekte und SQL

  • Datensicherheit, Konsistenz, Transaktionen

  • Erweiterung von Datenbankfunktionalitäten

  • Syntax von PL/SQL

  • Datentypen und Kontrollstrukturen

  • Dynamisches SQL

  • Pluggable Databases

  • Debugging, Monitoring und Performancetuning

  • PL/Scope

  • LargeObjects, XML, OOP

  • Workshops aus der Praxis

  • u. v. m.






Datensicherheit und Konsistenz, PL/SQL in der Datenbankadministration u.v.m.



Datenschutz-Einstellungen