DB2- Theorie und Praxis : Inhaltsverzeichnis I Inhaltsverzeichnis DB2-Theorie und Praxis - Band 1 Themenbereiche 1 1 Relationales Modell 3 Grafischer Wegweiser durch den Band 1 Einstiegs-Grafik in die Thematik für Band 1 1 2 1.1 Grafischer Wegweiser durch das Kapitel 1 - Relationales Modell 1.2 Allgemeine Entwicklungsgeschichte 1.2.1 Entwicklung innerhalb IBM 1.2.2 Entwicklung außerhalb IBM 1.2.3 Produkt-Kompatibilität 3 4 4 4 5 Kompatibilität zwischen den IBM-DB2-Produkten Kompatibilität zwischen Fremdhersteller-Produkten und DB2-Produkten 5 5 1.2.4 Entwicklungsgeschichte von DB2 für MVS, OS/390 und z/OS 6 Grober Überblick der DB2-Versions- und Release-Entwicklungen Die wesentlichen Komponenten der Release-Entwicklungen 6 7 Version 2 - Release 1 Version 2 - Release 2 Version 2 - Release 3 Version 3 Version 4 Version 5 - DB2 for OS/390 Version 6 - DB2 Universal Database (UDB) for OS/390 7 7 8 9 10 11 12 Version 6 nach GA - nach der generellen Verfügbarkeit von V6 14 Version 7 - DB2 Universal Database (UDB) for OS/390 and z/OS 15 Version 7 nach GA - nach der generellen Verfügbarkeit 17 Version 8 - DB2 Universal Database (UDB) for z/OS 18 Version 8 nach GA - nach der generellen Verfügbarkeit 22 Version 9 - DB2 Version 9.1 for z/OS 23 Version 9 nach GA - nach der generellen Verfügbarkeit 28 Version 10 - DB2 10 for z/OS 29 Version 10 nach GA - nach der generellen Verfügbarkeit 38 1.3 Terminologie 1.3.1 Informationsablage in Tabellenform 39 39 Tabelle (Table, Relation) 39 Spalte/Column (Attribut) 39 Zeile/Row (Tupel) 40 Datenwert/Value40 Primary-Key (PK) 41 Foreign-Key (FK) und referenzielle Integrität (RI) 41 Abbildung der Primary- und Foreign-Key-Beziehungen (Beispiel-Tabellen des Buches und ihre logischen Beziehungen) Informationelle referenzielle Integrität (Informational RI) 42 43 Index44 Daten-Repräsentation und -Ablage 45 1.3.2 Informationsbeziehungen durch Werteinhalte 1.3.3 Relationale Sprachschnittstelle 45 46 SQL48 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis II QUEL49 QBE50 1.4 Charakteristiken eines relationalen DBMS 1.4.1 Anforderungen an ein relationales DBMS 51 51 Codd’sches Anforderungsprofil - RM/V2 51 1.4.2 Zusammenfassung wesentlicher Zielsetzungen, Leistungen und Schwächen des Relationen-Modells Zielsetzungen des Relationen-Modells Standards im Bereich des Relationen-Modells Schwächen des Relationen-Modells 61 61 61 62 1.5 Vergleich der Datenhaltungs- und Bereitstellungs-Konzepte 1.5.1 Gruppierung konventioneller Datenhaltungs- und Bereitstellungs- und DBMS-Typen 1.5.2 Terminologievergleich konventionelle Systeme - RDBMS 1.5.3 Problembereiche konventioneller Datenhaltungs- und DBMS-Typen Strukturierte DBMS 63 63 63 64 64 Lineare DBMS (relational-orientierte Systeme) 65 1.5.4 Komplexe DBMS: Objektorientierte Datenbank-Systeme (OODBMS) 1.6 Speicherung und Verarbeitung von komplexen Objekten (LOBs / Large Objects) 1.6.1 Die Abbildung der Realität in der IT durch strukturierte und unstrukturierte Modelle 1.6.2 Ein komplexes Objekt ist immer zerlegbar (zumindest theoretisch - praktisch manchmal nicht empfehlenswert) Der Einfluss der Zeit auf komplexe Objekte 67 70 70 71 72 1.6.3 Kategorisierung komplexer Objekte 1.6.4 Speicherung komplexer Objekte mit DB2: Large Objects (LOBs) 1.6.5 Problematiken beim Design und der Speicherung komplexer Objekte 1.7 Speicherung und Verarbeitung von XML-Dokumenten 1.7.1 XML-Terminologie 1.7.2 Ein XML-Dokument unterliegt einem strukturierten hierarchischen Modell 1.7.3 Zielsetzung und Aufgabenstellung von XML 1.7.4 Sind die Ziele des Relationen-Modells mit XML vergleichbar? Eine völlig unterschiedliche Herangehensweise Unterschiedliche Eignungen 73 74 75 76 76 77 79 80 80 81 1.8 Fazit 1.9 Standardisierung von Datenbank-Methoden und Techniken 1.9.1 Standardisierungs-Organisationen 1.9.2 Wichtige allgemeine Standards 82 84 84 84 Datenbank-Standards85 ANSI/SPARC Architektur oder auch Drei-Schema-Architektur 86 SQL-Standards87 SQL-Standard: SQL 89 89 SQL-Standard: SQL92 (SQL2) 89 SQL-Standard: 1999/SQL3 (grober Auszug) 91 SQL-Standard: 2003 (relevanter Auszug) 92 SQL-Standard: 2006 (relevanter Auszug) 94 SQL-Standard: 2008 (relevanter Auszug) 95 Die Auswirkungen der bisherigen SQL-Standardisierungsmaßnahmen 96 2 DB2-System-Aufbau 97 2.1 Grafischer Wegweiser durch das Kapitel 2 - DB2-System-Aufbau 97 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis 2.2 DB2-System-Komponenten und Zusatz-Produkte 2.2.1 DB2-System-Komponenten 2.2.2 DB2-Zusatz-Produkte von IBM III 98 98 99 Zusatz-Features99 Objekt- bzw. Daten-Management-Tools 100 2.2.3 Sonstige Tools diverser Software-Hersteller 101 Entwicklungswerkzeuge für die PAEs Verwaltungswerkzeuge für die DBADMs 101 101 2.3 Betriebssystem-Komponenten 2.3.1 System-Schichten von z/OS 2.3.2 DB2-Subsystem (Lokation oder Server) 2.3.3 DB2-Adressraum-Konzept 103 103 104 106 Sonstige Betriebssystem-Komponenten 107 Trägersysteme (Allied Agents) 107 DB2-System-Adressräume108 System-Dienste (System Services - MSTR = Master) Datenbank-Dienste (Database Services - DBM1 = Database Manager) Internal Resource-Lock-Manager (IRLM) Administrativer Task Scheduler (ADMT) Distributed Data Facilities (DDF) 108 108 108 108 109 Adressräume für Routinen (Stored Procedures und/oder User-defined Functions) 110 2.4 Allied Agents: Ankoppelbare Trägersysteme 2.4.1 Attachment-Facility, Connection und Thread 2.4.2 Zugriff auf DB2-Ressourcen aus Anwendungen heraus 111 111 112 Schnittstellen zu den Trägersystem-Typen 112 Batch-Schnittstelle mit CAF (DSNALI) CICS-Schnittstelle (DSNCLI) TSO-Schnittstelle (DSNELI) Recoverable Resource Manager-Schnittstelle (DSNRLI) Universelle Schnittstelle (DSNULI) IMS-Schnittstelle (DFSLI000) 112 112 112 112 112 113 Dateiverarbeitungsmöglichkeiten der Trägersystem-Typen 113 2.5 Verteilung (distributing) und gemeinsame Nutzung (sharing) der DB2-Daten 2.5.1 Verteilung der DB2-Daten (distributed data) Die Client-Server-Architektur (C/S) DRDA - Distributed Relational Database Architecture 114 114 115 116 DRDA - Level Remote-Zugriff über dreiteilige Objekt-Namen/ALIAS oder nach CONNECT DB2-Privat-Protokoll und DRDA-Protokoll Technologische Grenzen der Verteilung von Daten 117 118 119 119 2.5.2 Gemeinsame Nutzung der DB2-Daten (DS - Data Sharing) 120 Betrieb mehrerer z/OS-Systeme Data-Sharing: Group und Member 120 120 Argumente für Data Sharing Grundsätzliche Anforderungen an ein Data-Sharing-Verfahren 121 122 Technische Lösung des DB2 Data Sharings 123 Data Sharing benötigt einen Parallel Sysplex 123 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis IV Aufgaben-Abgrenzung zwischen Membern und dem Coupling Facility 124 Speicher-Strukturen einer Data Sharing Group 125 Die Konsistenzbewahrung bei Data Sharing (DS) 126 Sischer is sischer: Struktur-Duplizierung und Duplexed GBP 127 Einflüsse einer Data Sharing Group auf die System-Administration Objekte und Namenskonventionen einer Data Sharing Group 128 129 Gruppen-Objekte und ihre Namen 129 Member-Objekte und ihre Namen 130 2.6 DB2-Ressource-Management durch den DB2 Administrativen Task Scheduler 2.6.1 Aufgabenstellung 2.6.2 Komponenten des Task Schedulers 131 131 131 System-Architektur131 ADMT-DB2-System-Komponenten132 Automatisierung von Utilities im Rahmen der Administrations- Scheduler Tasks (Autonomic Stored Procedures) Planbare Ressourcen Architektur in einer Data Sharing Group 2.7 Synchronisation mehrerer Ressource-Manager: RRS - Resource Recovery Services 2.7.1 RRS-Aufgabenstellung 2.7.2 Programm-Typen für die RRS-Synchronisations-Aufgaben 2.8 DB2-Daten-Objekt-Typen 2.8.1 Meta-Objekt-Typen für die Speicherung von Daten Verwaltung der Meta-Daten 133 134 135 136 136 137 138 138 139 Anlegen, Änderung und Löschung von Meta-Daten 139 CREATE - Anlegen von Meta-Daten 139 ALTER - Änderung von Meta-Daten 140 Online-Schema-Evolution: Realtime-Änderung 140 DROP - Löschung von Meta-Daten 140 Schema, Eigentümer und Ersteller von Daten-Objekt-Typen 141 Autorisierungs-Id, Schema, Ersteller (creator) und Eigentümer (owner) 141 Das Zusammenspiel der Spezialregister 142 Versionsführung für Meta-Objekte (Versionierung) 143 Wie kann man sich eine Versionsführung vorstellen? 143 Wie muss man sich die DB2-Versionsführung vorstellen? 144 Relevante Katalog-Informationen der Versionsführung 145 Test-Beispiele der DB2-Versionsführung 146 Im DB2 existieren vielfältige Versionen und Versionierungen 147 Katalog-Änderungen im Schwebezustand (Pending Changes) 148 Domain-Konzept und Daten-Typen 150 Grundsätzliche Überlegungen und Ausgangssituation Builtin Daten-Typen 150 150 LOB = Large Object 150 XML = XML-Dokument 151 Benutzerdefinierte Daten-Typen (UDT = User-defined Data-Types) 152 Definition der Daten-Typen 152 Automatisch generierte Cast-Funktionen 153 Nutzungsmöglichkeit der Distinct Data-Types 154 User-defined LOB-Data Types 154 User-defined XML-Data Types 154 Vergleichbarkeit und Konvertierbarkeit der Daten-Typen 155 Konvertierungen zwischen verschiedenen Daten-Typen 156 Benutzer-orientierte Daten-Objekt-Typen 157 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Tabelle/Table (Base Table) V 157 Definition der Tabellen-Spalten 158 Die Rolle des PKs 160 Einrichtung referenzieller Beziehungen (referential constraint) 160 Einrichtung von Check-Constraints 162 Maschinelle Vergabe von Werten durch DB2 163 Nummern-Vergabe: ROWID, IDENTITY, SEQUENCE 163 Verwaltung von technischen Gültigkeitszeiträumen: PERIOD-Klausel für SYSTEM_TIME 163 GENERATED-Klausel für die automatische Generierung von Werten (GENERATED ALWAYS und GENERATED BY DEFAULT) 164 Zuordnung einer Tabelle zu einem Tablespace 167 Definition einer Partitioned Table (table-kontrollierte Partitionierung) 168 Änderung von Tabellen- und Spalten-Charakteristiken 170 Änderung des Daten-Typs einer Spalte 171 SQL-DDL-Unterstützung für die Basis-Tabelle 175 Temporal Tables (Tabellen mit Gültigkeitszeiten) 177 Einleitung177 Gültigkeits-Zeitleisten-Behandlung Inklusiv oder Exklusiv: Das ist hier die Frage 177 Unterstützte Datenhaltungs-Konzepte 178 Konzeptioneller Überblick des Modells 179 Fachliche Gültigkeit (BUSINESS_TIME) 179 Manipulations-Regeln für Daten mit fachlichen Zeitleisten 181 Technische Gültigkeit (SYSTEM_TIME) 182 Technische Lösung 184 Technische Komponenten der Datenhaltung 184 Katalog-Metadaten für Temporal Tables 186 Fachliches Zeitkonzept (PERIOD BUSINESS_TIME) 187 Grundsätzliche Aspekte 187 DDL-Definitionen 188 Meta-Informationen des Katalogs 189 Datenzustände für die Test-Beispiele 190 Beispiele für Manipulationen 191 Beispiele für Informations-Bereitstellungen (SELECT) 193 Bi-Temporale Tabellen mit fachlichen Gültigkeiten - PERIOD BUSINESS_TIMES und technischen Gültigkeiten - PERIOD SYSTEM_TIME und Versionierunge (History-Table) 195 Grundsätzliche Aspekte 195 DDL-Definitionen 197 Meta-Informationen des Katalogs 199 Datenzustände für die Test-Beispiele 202 Beispiele für Manipulationen 204 Beispiele für Informations-Bereitstellungen (SELECT) 207 DB2-Temporal Tables - Zusammenfassung 208 Konzepte und unterstützte Funktionalitäten 208 Positive Aspekte 209 Negative Aspekte 209 Fazit210 Clone Table 211 Aufgabenstellung und Funktionsumfang 211 Metadaten und Daten-Instanzen von Base Table und Clone Table 212 Metadaten von Base Table und Clone Table (Katalog-informationen) 212 Daten-Instanzen von Base Table und Clone Table 213 Daten-Definition von Base Table und Clone Table mittels SQL-DDL 214 Daten-Manipulationen und Utility-Unterstützung einer Clone Table 215 EXCHANGE-Statement: Austausch der Daten-Instanzen zwischen Base Table und Clone Table 216 Löschen der Clone Table 216 Restriktionen der Base Table und der Clone Table 217 Fazit217 Temporäre Tabelle 218 CTT - Created Global Temporary Table 219 DTT - Declared Global Temporary Table 220 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis VI Temporäre Result Table/Virtual Table 222 Temporäre Result-Table-Typen 222 Positionierung oder Materialisierung einer temporären Result Table 224 DB2-View (Virtual Table) 225 Ist die View-Result-Table read-only oder updateable? 227 View auf View - macht das Sinn? 229 Anwendungs-Unabhängigkeit von physischen Sichten 230 Individuelle Views oder generalisierte Views 231 Nachteile und Grenzen des View-Konzepts 232 Empfehlungen zum View-Konzept 232 MQT - Materialisierte Query Table (Materialisierter View bzw. Materialisierte Result Table) 233 Komponenten einer materialisierten Query Table (MQT) 234 Definition der MQT 235 System- oder benutzer-kontrollierte MQT 237 Einrichtung einer Hash-Organisation für den Direkt-Zugriff mit Hash-Methode 238 Überblick238 Hash-Space: Aufteilung in Fixed Hash-Space und Overflow-Space 239 Katalog-Metadaten für Hash-Komponenten 241 Definition der Hash-Zugriffs-Methode 243 Neue Tabelle anlegen mit Hash-Organisation 243 Bestehende Tabelle mit Hash-Organisation ausstatten 245 SYNONYM247 ALIAS248 Maschinelle Vergabe einer lfd. Nr. durch DB2: SEQUENCE und IDENTITY 249 SEQUENCE251 Systemorientierte DB2-Objekt-Typen 252 Index252 Definition der Index-Spalten 253 Wann wird ein Index aufgebaut und wie wird er verwaltet? 253 Index-Typen254 Basis-Index256 Ein stinknormaler Index besteht aus ....... 256 Der Clustering Index organisiert die Datenfolge 257 Partitioning Index und Partitioned Index 259 und nun alle Index-Typen auf einmal 262 DPSI: Data Partitioned Secondary Index 264 Extended Index 267 Scalar Expression Index (Index on Expressions) 268 Interne Organisation eines Indexes 270 Zuordnung eines Indexes zum Indexspace, den Page Sets und Datasets 270 B-Tree-Struktur eines Indexes 271 Änderung von Index-Charakteristiken 273 Löschung eines Indexes 273 Welche Vorteile bietet ein Index, welche Nachteile sind zu beachten? 274 Vorteile eines Indexes 274 Nachteile eines Indexes 275 Empfehlungen zum Index-Einsatz 276 Tablespace277 Aufgabenstellung und relevante Zuordnungen 277 Die Page-Größe und ihre Einflüsse 279 Tablespace-Typen280 Konvertierung eines Tablespace-Typs in einen anderen 283 Vor- und Nachteile der Tablespace-Typen 284 Besonderheiten des Partitioned Tablespaces 286 Physische Charakteristiken pro Partition 286 4096 Partitions und die Konsequenzen 287 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis VII Dynamische Partitions: Hinzufügen neue Partition 289 Dynamische Partitions: Rotation 291 Dynamische Partitions: Partition-Werte balancieren 293 Nachträgliche Änderungsmöglichkeiten eines Tablespaces 294 Indexspace295 Aufgabenstellung und relevante Zuordnungen 295 Database297 Storage Group 298 LOB-Objekte: Auxiliary Table, Auxiliary Index, LOB-Tablespace 299 XML-Objekte: XML Table, DocID- und NodeID-Index, XML-Index und XML-Tablespace 301 Unterstützung von Temporal Tables mit XML-Dokumenten 303 XML-Erweiterungen der DB2-Version 10 304 2.8.2 DB2-System-Ressourcen 305 DB2-Directory: Database DSNDB01 DB2-Katalog: Database DSNDB06 Datenspeicherung von System- und Benutzerdaten Zwischenspeicher für Materialisierungen 306 307 307 308 Workfiles: Workfile Database (DSNDB07) 308 Utility-Arbeitsdateien309 DB2-Log-Dateien309 Bootstrap-Dateien (BSDS) 309 DB2-Bibliotheken309 2.9 Routinen: Stored Procedures und User-defined Functions 2.9.1 Grafischer Wegweiser durch das Kapitel 2 - Routinen: Stored Procedures und User-defined Functions und Trigger 2.9.2 Terminologie und Übersicht 310 310 311 Routinen-Typen311 Aufgabenbereiche und Komponenten von Routinen 312 Unterschiede zwischen Externen Routinen und SQL Routinen 313 2.9.3 Identifikation von Stored Procedures und Functions 314 Schema, SQL-Pfad, Specific Name und External Name Function Overloading und Function Resolution 314 314 2.9.4 Der Einsatz von Stored Procedures 315 Grobe Zielsetzung einer Stored Procedure 315 Prozedur-Typen316 Entwicklung einer Stored Procedure 317 Definition einer Stored Procedure 319 Namen der Stored Procedure 319 Parameter einer Stored Procedure 319 Übergabe der Parameterwerte 319 Parameter-Typen (Eingabe, Ausgabe oder beides) 321 NULL-Fähigkeit der Parameter 321 PARAMETER STYLE GENERAL, GENERAL WITH NULLS und SQL (Übergabe-Konventionen einer Stored Procedure) 322 Beispiel der Parameterübergabe zwischen PL/I- und COBOL 324 PARAMETER STYLE JAVA 325 Rückgabe einer Ergebnismenge (Query Result Set) 326 CALL-Aufruf-Varianten einer Stored Procedure 327 Statische CALL-Varianten 327 Dynamischer CALL (ODBC bzw. CLI) 327 External Procedure 328 Unterstützte Programmiersprachen 328 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis VIII Entwicklungsschritte einer External Stored Procedure 328 Aufrufendes und aufgerufenes Modul 328 Compile und Linkage Editor 328 Definition der Stored Procedure im Katalog 329 SQL Procedure 330 Typen und unterstützte Funktionalitäten 330 SQL External Procedure 331 Unterstützte Programmiersprachen und Sprachmittel 331 Entwicklungsschritte einer SQL External Procedure 332 Data Studio oder Development Center 333 IBM-Stored Procedure DSNTPSMP 333 Explizite Definition mit der JCL-Prozedur DSNHSQL 334 Definition der SQL Stored Procedure im Katalog 334 SQL Native Procedure 335 Unterstützte Programmiersprachen und Sprachmittel 335 Versions-Konzept einer SQL External Procedure 336 Entwicklungsschritte einer SQL External Procedure 337 Definition der SQL Stored Procedure im Katalog 337 Ausführung einer Stored Procedure 338 Adressraum-Konzept338 Starten und Stoppen von Stored Procedures 338 Aufruf einer remote Stored Procedure und Ablauf 339 Vor- und Nachteile von Stored Procedures Liste der Standard-Stored Procedures (IBM-Supplied Stored Procedures) Relative Performance-Gewichtung von Stored Procedures mit unterschiedlichen Programmiersprachen 2.9.5 Der Einsatz von benutzerdefinierten Funktionen (User-defined Functions) Grobe Zielsetzung einer User-defined Function (UDF) 341 342 348 349 349 Funktions-Aufruf und -Ergebnis 349 Funktions-Typen350 Entwicklung einer User-defined Function 353 Definition einer User-defined Function 355 Namen der User-defined Function 355 Inline- oder Non-Inline-Function 355 Parameter einer User-defined Function 356 Übergabe der Parameterwerte 356 Parameter-Typen (Eingabe oder Ausgabe) 356 NULL-Fähigkeit der Parameter 356 PARAMETER STYLE SQL oder JAVA (Übergabe-Konventionen für Funktionen) 357 Beispiel der Parameterübergabe zwischen COBOL und PL/I 359 Aufruf-Varianten einer User-defined Function 360 Externe Aufruf-Varianten der Funktion 360 Interne Aufruf-Typen (CALL-Typ bzw. FINAL CALL-Klausel) 360 Scratchpad: Zwischenspeicher für die internen Aufrufe 363 Thread- und TCB-Konzept für Funktions-Aufrufe 364 TCB-Nutzung beim Funktions-Aufruf 364 TCB-Konzept bei Parallel-Abwicklung 365 DETERMINISTIC oder NOT DETERMINISTIC - das ist hier die Frage 366 Sourced Function 367 Unterstützte Programmiersprachen 367 Entwicklungsschritte einer Sourced Function 367 Definition der Sourced Function im Katalog 367 External Functions 368 Unterstützte Programmiersprachen 368 Entwicklungsschritte einer External Function 368 Aufrufendes und aufgerufenes Funktions-Modul 368 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Compile und Linkage Editor IX 368 External Scalar Function 369 Definition der Scalar Function im Katalog 369 External Table Function 370 Definition der Table Function im Katalog 370 SQL Function 371 SQL Scalar Function 371 Definition der SQL Scalar Function im Katalog 371 SQL Table Function 372 Definition der SQL Scalar Function im Katalog 372 Ausführung einer User-defined Function 373 Adressraum-Konzept373 Starten und Stoppen von User-defined Functions 373 Vor- und Nachteile von User-defined Functions 374 Vor- und Nachteile von External Scalar Functions Vor- und Nachteile von SQL Scalar Functions Vor- und Nachteile von External Table Functions Vor- und Nachteile von SQL Table Functions 374 374 375 375 2.9.6 Mögliche Ressource-Zugriffe 376 Unterstützte SQL-Funktionalität 376 Unterstützung von LOB-Spalten und -Werten Unterstützung von XML-Spalten und -Werten 376 376 Zugriff auf externe Ressourcen 376 Remote DB2-Objekte 376 Andere relationale Datenbanken 376 CICS-Ressourcen377 IMS-Ressourcen377 WebSphere MQ-Ressourcen 377 Sonstige externe Ressourcen 377 2.9.7 Level-Konzept (Nested Routines) 378 Behandlung von Spezialregistern in Routinen Fehlerbehandlung von Routinen 379 380 Auswahl relevanter Fehlercodes 381 Bewahrung der Daten-Integrität (COMMIT und ROLLBACK) 382 2.9.8 Erforderliche Privilegien 2.9.9 Package- und Plan-Behandlung 383 384 Behandlung der externen Module Behandlung von implizit erzeugten Packages Wechsel der Package Nutzung verschiedener Programm-Versionen 384 384 384 384 2.9.10 Testmöglichkeiten von SQL-Routinen 385 Allgemeine Problematik Test-Tools (Debugger) Besonderheiten beim Test Routinen-Versionen einer SQL Procedure 385 385 385 385 2.9.11 Zusammenfassung der relevanten Klauseln für die Definition von Routinen Abwicklungs-Komponenten und Zuordnung der DDL-Parameter-Wirkung Ausführungs-Steuerung (Optionen) von Routinen Übersicht der Options-Argumente und Zuordnungen zu den Routinen-Typen © Copyright DGD GmbH Germany 65201 Wiesbaden 386 386 387 387 DB2- Theorie und Praxis : Inhaltsverzeichnis X Besonderheiten und Konventionen für Java Applikationen 388 2.9.12 z/OS-Ausführungs-Umgebung 389 Überblick der beteiligten z/OS-System-Komponenten RRS - Resource Recovery Services 389 390 Die Rolle im Rahmen von Routinen RRSAF-Attachment: Statisches oder dynamisches Laden 390 391 Language Environment 392 LE-Konzept und relevante Komponenten 392 LE-Run-time-Options392 MSGFILE392 RPTOPTS393 RPTSTG394 Optionen zur Kontrolle des Speichers 395 TEST und NOTEST Sonstige LE-Besonderheiten 395 395 Workload-managed Adressräume (WLM-established) 396 WLM-Terminologie396 WLM-Aufgabenstellung396 WLM-Komponenten396 WLM-Subsystem-Typen396 WLM-Service-Definitions 397 WLM-Operations-Modus397 WLM-DB2-Environment398 DB2-Installations-Parameter für WLM 398 Parametrisierung für WLM 398 WLM-JCL-Beispiel398 NUMTCB = Anzahl paralleler Tasks 399 Steuerung des WLM-Adressraums 400 Kontrolle und Abbruch aktiver Routinen 400 Wieviele WLM-Environments sind sinnvoll? 401 Privilegien für die Nutzung des WLM-Environments 401 Modul-Eigenschaften in der WLM-Umgebung 402 Threadsafe Module (reentrant) 402 Residente Module 402 Haupt- oder Unter-Routine 402 Austausch der ausführbaren Version einer Routine 403 Testmöglichkeiten in der WLM-Umgebung 404 Allgemeine Problematik 404 Test-Tools (Debugger) 404 Besonderheiten beim Test 404 Vorteile des WLM-Environments Nachteile des WLM-Environments Performance-Aspekte bei externen Modulen 405 405 406 2.10 Der Einsatz von Triggern 2.10.1 Zielsetzungen eines Triggers 2.10.2 Trigger-Terminologie 407 407 408 Beispiel eines Triggers 408 Trigger-Charakteristiken408 2.10.3 Übersicht der Trigger-Typen und ihre Charakteristiken 410 Komponenten eines Triggers Aktivierungszeit: BEFORE 411 412 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XI Allgemeine Regeln Trigger-Beispiele: Before-Trigger 412 413 Abbildung des Einsatzes 413 Trigger mit Abweisung ungültiger Referenzen (RI-Erweiterung) 414 Trigger zur Einsetzung von Initialwerten bei Einfügungen 415 Trigger mit Übernahme redundanter Daten 415 Trigger mit Aufruf einer Funktion 415 Aktivierungszeit: AFTER 416 Allgemeine Regeln Trigger-Beispiele: After-Trigger 416 417 Abbildung des Einsatzes 417 Verwaltung von Redundanzen 418 Trigger mit Übergabe einer Transition-Table an eine Funktion 419 Trigger mit Übergabe von Transition-Variablen an eine Funktion 419 Aktivierungszeit: INSTEAD OF 420 Allgemeine Regeln Trigger-Beispiele: Instead of-Trigger 420 421 Abbildung des Einsatzes 421 Restriktionen eines Instead of Triggers 423 Empfehlungen für den Einsatz eines Instead of Triggers 424 Ereignis-Typen: INSERT, UPDATE und DELETE Häufigkeit der Funktionsauslösung: ROW oder STATEMENT 425 425 2.10.4 Ablauf der Verarbeitung bei Einsatz eines Triggers 426 Trigger-Aktion427 Trigger-Condition427 Trigger-Body427 Result Table des Triggers 428 Transition-Variablen428 Transition-Tables429 Cascading-Effekte und Trigger-Level bei After Triggern 430 2.10.5 Fehler-Behandlung 431 Fehler-Erkennung und -Signalisierung Fehler bei der Ausführung der Trigger-Statements 431 432 2.10.6 Aufruf von Routinen aus einem Trigger heraus 433 Aufruf-Techniken433 Behandlung von Spezialregistern 434 2.10.7 Trigger-Package 435 Erzeugen und Löschung einer Trigger-Package REBIND einer Trigger-Package Abhängigkeiten einer Trigger-Package 435 435 435 2.10.8 Trigger-Restriktionen 2.10.9 Vor- und Nachteile von Triggern 436 437 3 Methodische und technische Voraussetzungen für DB2 3.1 Grafischer Wegweiser durch das Kapitel 3 - Methodische und technische Voraussetzungen für DB2 3.2 Allgemeine Voraussetzungen für eine DB2-Einführung 3.2.1 Personelle Voraussetzungen Objekt- (OA) bzw. Daten-Administration (DA) Datenbank-Administration (DBA) 439 439 440 441 441 441 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XII 3.2.2 Organisatorische Voraussetzungen 442 Auswirkung auf die Anwendungs-Entwicklung 442 3.2.3 Technische Voraussetzungen für DB2 Version 10 for z/OS 444 Hardware444 Betriebssystem-Software445 Funktionsspezifische Abhängigkeiten 445 Betriebssystemnahe Standard-Software 445 Transaktions-Management446 DRDA-Verbindungsmöglichkeiten446 Web-Verbindungen446 Anwendungs-Entwicklungs-Tools447 Programmiersprachen447 Migrations-Pfad zur Version 10 448 3.2.4 Was ist neu im DB2? 3.2.5 Migration-Strategie ins DB2 3.3 DB2-Systemkonzept 3.3.1 Single-DBMS oder Multi-DBMS? 3.3.2 Abgrenzung Produktionssystem -Testsystem 450 452 453 453 454 System-Kategorien: Test, Übergabe und Produktion 454 System-Kategorie: Test System-Kategorie: Übergabe in die Produktion (System-Test) System-Kategorie: Produktion 455 455 456 Problematiken bei der Übernahme von Test in die Produktion 456 Isolierte Systeme haben trotzdem Kommunikations-Erfordernisse Koordination der Objekte zwischen Systemen 456 457 Management der Versions-Änderungen (Change Management) 457 Spezielle DB2-Übernahme-Kriterien 457 3.3.3 Datenbank-Hierarchie und Nutzungsmöglichkeiten 3.3.4 Informations-Aktualität 3.3.5 Client-Server-Konzept (C/S) 458 459 460 Zentralisierung versus Dezentralisierung 460 C/S sollte in den Köpfen des Managements beginnen ... 460 C/S benötigt klare Konzepte 461 Argumente für eine dezentrale Organisationsform (Verteilung) 462 Argumente für eine zentrale Organisationsform 462 Fazit462 Varianten der C/S-Verarbeitung 463 Verteilungsaspekte464 Lokale Zuordnung der Ressourcen Verfügbarkeit und Nutzbarkeit der Ressourcen 464 464 Konsequenzen einer Verteilung 465 3.4 Methodische Voraussetzungen 3.4.1 Abhängigkeiten zwischen Programmen und Daten 466 466 Probleme beim Einsatz konventioneller Datenbank-Systeme Sind solche Probleme unter DB2 automatisch gelöst? 466 468 Abhängigkeit des SQL-Spracheinsatzes von DB2-Katalog-Informationen Abhängigkeit bei fehlendem Schichten-Konzept © Copyright DGD GmbH Germany 65201 Wiesbaden 468 471 DB2- Theorie und Praxis : Inhaltsverzeichnis Lass die Datenbank loopen! Auswirkung der Daten-Modellierung auf die Programm-Sicht XIII 472 473 Sicht auf unnormalisierte Daten 474 Definition einzelner Spalten in Wiederhol-Elementen 474 Variable Zeilen mit VARCHAR- oder LOB-Definitionen 475 Speicherung von XML-Dokumenten 476 Sicht auf normalisierte Daten 477 Sicht auf Daten in der ersten Normalform (1 NF) 477 Sicht auf Daten in höheren Normalformen (2 NF, 3NF) 478 3.4.2 Abbau der Abhängigkeiten durch Methodik-Einsatz 479 Ebenen, Modell- und Ergebnis-Typen im Unternehmens-Modell Auswirkungen auf das Anwendungs-Design 479 480 Schichten-Modell für Anwendungs-Programme 480 Separierung der Datenzugriffe von sonstigen Funktionen 481 Objektorientierte Verwaltung der Daten 482 Daten-Verwaltung immer über eine zuständige Funktion/Methode Einsatzmöglichkeit von Standard-Zugriffs-Routinen 483 484 3.4.3 Abbau der Abhängigkeiten durch DB2-Techniken 485 Das Ebenen-Modell von DB2 Katalog-Konzept 485 486 Verlagerung von Programmlogik in den DB2-Katalog 486 Komponenten einer "aktiven Datenbank" 487 Nutzung von Stored Procedures, User-defined Functions und Triggern 488 Integritätsbewahrung als Aufgabenstellung für die Datenbank 488 Verlagerung sämtlicher datennaher Dienste in den DB2-Bereich 489 Argumente für und wider eine "aktive Datenbank" 490 3.4.4 Normungs-Effekte durch internationale Standards 491 Normungs-Effekt durch den SQL-Spracheinsatz Open Database Connectivity (ODBC) und der CLI-Spracheinsatz 491 491 4 DB2-Sprachschnittstellen 4.1 Grafischer Wegweiser durch das Kapitel 4 - DB2-Sprachschnittstellen 4.2 Benutzergruppen und deren Anforderungen 4.3 DB2-Sprachschnittstellen für die Benutzergruppen 4.3.1 TSO-DSN-Commands: Übersicht 4.3.2 SQL-Statements 492 492 493 494 496 497 SQL-Statement- und Benutzer-Kategorien 497 DCL - Data Control Language DDL - Data Definition Language DML - Data Manipulation Language 497 497 498 SQL-Anwendungsformen und Sprach-Schnittstellen 500 Interactive SQL (DB2I) Embedded SQL (EXEC-Level) CALL-Level-Interface für C- und C++-Programme (CLI bzw. ODBC) JDBC-API für Java-Anwendungen SQLJ-API für Java-Anwendungen Static SQL Dynamic SQL 500 500 501 501 501 502 502 Übersicht der SQL-Statements und ihre Einsatzmöglichkeiten 503 4.3.3 DB2-Befehle/DB2-Commands 507 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XIV DB2-System-Commands507 Admin-Scheduler-Commands509 CICS-Commands509 IMS-Commands510 IRLM-Commands510 4.3.4 DB2-Hilfsprogramme/DB2-Utilities 511 DB2-Online-Utilities511 Utility-Control-Statements512 4.3.5 Standalone Utilities/Service Aids 4.3.6 TSO-CLISTs und TSO-DSN-Subcommands 4.4 DB2I: Masken der interaktiven DB2-Oberfläche 4.4.1 Einstiegs-Menü (Primary Option Menu) 4.4.2 D - DB2I-Defaults 512 513 514 514 515 Default-Panel 1 Default-Panel 2 515 516 4.4.3 1 - SPUFI: SQL Processor Using File Input 517 SPUFI-Steuerungsmaske517 SPUFI-Defaults519 Default-Panel 1 Default-Panel 2 519 521 SPUFI-Edit-Maske522 SPUFI-Browse-Maske523 4.4.4 2 - DCLGEN: Declarations Generator 524 Eingabemaske524 Maske mit Zusatz-Optionen 525 Beispiel generierter Ausgaben 526 COBOL-Host-Variablen-Struktur526 SEMINAR-Tabelle526 Variante: Default-Struktur- und Spalten-Namen ohne Label 526 Variante: Default-Struktur- und Spalten-Namen mit Label 527 Variante: Individuelle-Struktur- und Spalten-Namen (Table-Name mit Numerierung) 528 Variante: Individuelle-Struktur- und konkreten Spalten-Namen 529 Alle Daten-Typen 530 PL/I--Host-Variablen-Struktur532 SEMINAR-Tabelle532 Variante: Default-Struktur- und Spalten-Namen ohne Label 532 Variante: Default-Struktur- und Spalten-Namen mit Label 533 Variante: Individuelle-Struktur- und Spalten-Namen (Table-Name mit Numerierung) 534 Variante: Individuelle-Struktur- und konkreten Spalten-Namen 535 Alle Daten-Typen 536 C--Programm-Host-Variablen-Struktur538 SEMINAR-Tabelle538 Variante: Default-Struktur- und Spalten-Namen ohne Label 538 Variante: Default-Struktur- und Spalten-Namen mit Label 539 Variante: Individuelle-Struktur- und Spalten-Namen (Table-Name mit Numerierung) 540 Variante: Individuelle-Struktur- und konkreten Spalten-Namen 541 Alle Daten-Typen 542 4.4.5 3 - Program Preparation 544 Steuerungsmaske544 Program Preparation 'Compile, Link and Run Panel' 545 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis 4.4.6 4 - Precompile 4.4.7 5 - BIND / REBIND / FREE XV 546 547 1 - BIND PLAN 548 Steuerungsmaske548 Default Panel BIND PLAN 549 Connection Types Panel 550 Package List Panel 551 Ergebnis einer erfolgreichen BIND PLAN-Ausführung 551 2 - REBIND PLAN 552 Steuerungsmaske552 Default-Panel553 3 - FREE PLAN 554 Steuerungsmaske554 4 - BIND PACKAGE 555 Steuerungsmaske555 Default-Panel557 Connection Types Panel 559 Path List Panel 560 Ergebnis einer erfolgreichen BIND PACKAGE-Ausführung 560 5 - REBIND PACKAGE 561 Steuerungsmaske561 Default-Panel563 6 - REBIND TRIGGER PACKAGE 564 Steuerungsmaske564 7 - FREE PACKAGE 565 Steuerungsmaske565 4.4.8 6 - RUN - Aktivierung einer Programm-Ausführung im Foreground oder Batch Anstoß über Panel JCL-Beispiel eines Batch-Ausführungs-Jobs 566 566 567 4.4.9 7 - DB2 Commands 568 Vorgabe von DB2-Commands Ergebnis einer DB2-Command-Ausführung 568 568 4.4.10 8 - Utilities (Online-Utilities) 569 Steuerungsmaske569 Control Statement Data Set Names 570 Data Set Names 571 Ergebnisse der Job-Generierung 572 Generierungs-Informationen572 Generierter Utility-Job 573 5 SQL-DDL-Data Definition Language 5.1 Grafischer Wegweiser durch das Kapitel 5 - SQL-DDL-Data Definition Language 5.2 Dynamische DB2-Objektverwaltung 5.3 Anlegen DB2-Objekt-Typen: CREATE 5.3.1 Defaults beim Anlagen von Objekten 5.3.2 Beispiele CREATE Systemorientierte Daten-Objekt-Typen 574 574 575 577 577 580 580 STOGROUP, DATABASE und TABLESPACE 580 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XVI INDEX582 Base-Index-Varianten582 Auxiliary-Index, Extended Index und XML-Index 583 Benutzerorientierte Daten-Objekt-Typen 584 Distinct Type 584 Base-Table-Varianten584 Temporal Table und History Table 589 Auxiliary Table 592 XML Table 592 Global Temporary Table 593 MQT - Materialized Query Table 594 Clone Table 595 VIEW596 SYNONYM und ALIAS 597 COMMENT und LABEL 598 SEQUENCE599 Funktionsorientierte Objekt-Typen: Routinen 600 UDF - User-defined Function STP - Stored Procedure 600 602 Funktionsorientierte Objekt-Typen: Trigger 604 Trigger für die Manipulation von Tabellen: Before und After Trigger Trigger für die Manipulation von Views: Instead of Trigger 604 605 5.4 Ändern DB2-Objekt-Typen: ALTER und RENAME 5.4.1 Besonderheiten bei Struktur-Veränderungen und Erweiterungen 606 608 Wie verhalten sich die Daten bei Struktur-Veränderungen? Wie verhalten sich die Daten bei Struktur-Erweiterungen? Was tun, wenn kein ALTER existiert? 608 608 609 5.4.2 Beispiele ALTER 610 Systemorientierte Daten-Objekt-Typen 610 STOGROUP, DATABASE und TABLESPACE 610 Konvertierung eines Segmented Tablespaces in einen UTS und setzen Objekt in Pending-Change-Status 611 INDEX612 Base-Index612 Auxiliary-Index, Extended Index und XML-Index 612 Benutzerorientierte Daten-Objekt-Typen 613 Distinct Type 613 Base-Table-Varianten613 Temporal Table nachträglich auf Basis-Tabelle definieren 615 Auxiliary Table 616 XML Table 616 Global Temporary Table 616 MQT - Materialized Query Table 617 Clone Table 618 VIEW619 SYNONYM und ALIAS 619 COMMENT und LABEL 619 SEQUENCE620 Funktionsorientierte Objekt-Typen: Routinen 621 UDF - User-defined Function STP - Stored Procedure 621 622 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Funktionsorientierte Objekt-Typen: Trigger XVII 623 5.4.3 Beispiele RENAME 5.5 Löschen DB2-Objekt-Typen: DROP 5.5.1 Die Auswirkung eines DROP-Kommandos auf andere DB2-Objekte (Abbildung mit referenziellen Effekten) 5.5.2 Beispiele DROP Systemorientierte Daten-Objekt-Typen 623 624 626 627 627 STOGROUP, DATABASE und TABLESPACE 627 INDEX628 Base-Index628 Auxiliary-Index628 Extended Index und XML-Index 628 Benutzerorientierte Daten-Objekt-Typen 629 Distinct Type 629 Base-Table629 Auxiliary Table 629 XML Table 629 Global Temporary Table 630 MQT - Materialized Query Table 630 Clone Table 631 VIEW631 SYNONYM und ALIAS 631 COMMENT und LABEL 631 SEQUENCE631 Funktionsorientierte Objekt-Typen: Routinen 632 UDF - User-defined Function STP - Stored Procedure 632 632 Funktionsorientierte Objekt-Typen: Trigger Objekt-Typ: Package 633 633 6 SQL-DML-Data Manipulation Language 6.1 Grafischer Wegweiser durch das Kapitel 6 - SQL-DML-Data Manipulation Language 6.2 SQL-DML-Sprachspektrum 6.3 SQL-DML-Anwendungsformen und Sprach-Schnittstellen 6.4 SELECT - Datenabfragen 6.4.1 SELECT-Typen Relevante Komponenten eines SELECT-Statements Result Table eines SELECT-Statements Syntaktische Grundformen des SELECT-Statements Entwicklung und Veränderungen der SELECT-Klauseln in DB2-Version 8 und 9 6.4.2 Syntax des SELECT-Statements 634 634 635 636 637 637 637 637 638 640 641 Grundformat des SELECT-Statements Die logische Abarbeitungsfolge der SELECT-Parameter SELECT-Klausel 641 642 643 Bereitstellung von Daten aus einer einzelnen Tabelle Verdichtung der Result Table (DISTINCT) Bereitstellung von Daten aus mehreren Tabellen (Join) 643 643 643 FROM-Klausel644 Bereitstellung von Daten aus Basis-Tabellen bzw. Views 644 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XVIII Inner und Outer Join Nested Table Expression 644 644 WHERE-Klausel645 Einfache Vergleichsoperatoren 645 Subquery645 Row Expression (Row-Value-Expression) 646 ORDER BY-Klausel GROUP BY-Klausel 646 646 6.4.3 Tabelleninhalte der Beispieltabellen 6.4.4 Einfache SELECT-Abfragebeispiele aus einer Tabelle 647 648 Einfache Spaltenauswahl (PROJECT) Konstante und arithmetisch errechnete Werte Vergabe von Namen für Spalten der Result Table Auswahl bestimmter Zeilen mit WHERE Variable Auswahl bestimmter Zeilen mit WHERE und CASE 648 648 649 649 650 6.4.5 Boolsche Verknüpfungen und Prädikate 651 AND-Verknüpfung651 OR-Verknüpfung651 NOT-Verknüpfung652 BETWEEN-Prädikat652 IN-Prädikat652 LIKE-Prädikat652 NULL-Prädikat654 DISTINCT-Prädikat654 Mix von Prädikaten und Klammerung 655 6.4.6 Sortierung - ORDER BY 656 Auf- und absteigende Sortierung Sortierung von abgeleiteten Spalten Sortierung der Result Table eines Sub-Selects und der endgültigen Result Table 6.4.7 Funktion (Builtin-Function) 656 657 658 659 Aggregate Function Moving Aggregates (Scalar Aggregate Functions) Scalar Function 659 661 664 Konvertierungs-Funktion664 DateTime-Function665 Sonstige Funktionen 667 Verschachtelung von Aggregate Functions und Scalar Functions 668 6.4.8 Gruppierung/ GROUP BY 669 HAVING671 6.4.9 Set-Operatoren 674 UNION und UNION ALL EXCEPT und EXCEPT ALL INTERSECT und INTERSECT ALL 676 679 680 6.4.10 JOIN Selektion aus mehreren Tabellen 681 Join-Verarbeitungs-Regeln681 Kartesisches Produkt 683 Equi-Join684 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Join einer Tabelle mit sich selbst Inner Join und Outer Join XIX 685 686 Übersicht der Ergebnis-Typen Inner Join Left Outer Join Right Outer Join Full Outer Join Die Wirkung der ON-Klausel Verknüpfung mehrerer Join-Typen 686 688 688 689 690 691 693 Kombination von Join und Table Expression 695 6.4.11 Scalar Full-Select 696 Möglichkeiten und Risiken Scalar Full-Select in der WHERE-Bedingung Scalar Full-Selects und Joins Scalar Full-Select in der CASE-Expression 696 697 698 699 6.4.12 Table Expression 700 Nested Table Expression 700 Einfaches Beispiel Nested Table Expression mit Outer Join Nested Table Expression mit CASE (Statistik-Funktion) 700 702 703 Common Table Expression 704 Einsatzgebiet704 Einfaches Beispiel 704 Einsatz mehrerer Common Table Expressions Rekursives SQL Die typische Hierarchie-Abbildung 705 708 708 Aufbau von Test- oder Hilfsdaten 712 Kalender mit Tagen, Wochen und Wochen-Tag 712 Kalender mit Jahr, Woche und Tag nach ISO (wann beginnt die erste Woche im Jahr?) 713 Common Table Expression und INSERT 714 6.4.13 Subquery (Sub-Query) 715 Allgemeine Syntax Non-correlated Subquery 715 717 Subquery direkt nach einem Vergleichsoperator Subquery nach IN Subquery nach EXISTS Subquery nach ANY bzw. SOME und ALL 717 718 719 720 Correlated Subquery 721 Verarbeitungsunterschiede zu non-correlated Subquery direkt nach einem Vergleichsoperator Subquery nach EXISTS 721 722 722 6.4.14 SELECT-Unterstützung für Temporal Tables 723 Perioden-Spezifikation der FROM-Klausel SELECT mit der FOR BUSINESS-Klausel 723 724 Zugriff auf eine einzelne Tabelle Zugriff auf mehrere Tabellen (Join) 724 726 SELECT mit der FOR SYSTEM-Klausel 728 Zugriff auf eine einzelne Tabelle Zugriff auf mehrere Tabellen (Join) 728 730 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XX 6.5 SQL-Manipulations-Statements 6.5.1 Was versteht man unter Manipulations-Statements? 6.5.2 Temporal Tables fordern eine Abkopplung der fachlichen Änderung von der technischen Manipulations-Vorgabe Fachlich-Funktionale Konsequenzen für Daten mit Zeitbezug 732 732 733 733 Manipulations-Typen733 Fachliche Manipulations-Festlegungen hinsichtlich der Gültigkeitszeitleisten 734 DB2-Temporal-Table-spezifische Manipulations-Festlegungen 736 DELETE- und UPDATE-Regeln einer DB2-Temporal-Table 738 BUSINESS_PERIOD-Beispiele: UPDATE mit DATE-Charakteristiken 739 BUSINESS_PERIOD-Beispiele: DELETE mit DATE-Charakteristiken 740 SYSTEM_PERIOD-Beispiele: UPDATE 741 BUSINESS_PERIOD-Beispiele: DELETE 743 6.5.3 Übersicht der SQL-Manipulations-Statement-Typen 6.5.4 SELECT-Statement mit SQL Data Change Statement 6.5.5 INSERT - Daten-Einfügung 746 747 748 Der INSERT fordert eine updateable Result Table 748 INSERT-Formate749 Verhalten bei Spalten mit Default-Maßnahmen 750 Beispiele für SQL-Dateneinfügungen 751 INSERT einer einzelnen Zeile INSERT einer Zeilen-Gruppe (im Anwendungsprogramm) INSERT mehrerer Zeilen mit SELECT 751 751 752 SELECT mit SQL Data Change Statement (hier: SELECT mit INSERT) FINAL TABLE mit einer Zeile 754 755 Beispiel: SELECT FROM FINAL TABLE (INSERT ... mit INCLUDE) 756 FINAL TABLE mit mehr als einer Zeile 758 6.5.6 UPDATE - Daten-Veränderung 760 Der UPDATE fordert eine updateable Result Table 760 UPDATE-Formate761 Beispiele für SQL-Datenveränderungen 762 Searched Update Positioned Update 762 763 SELECT mit SQL Data Change Statement (hier: SELECT mit UPDATE) 6.5.7 DELETE - Daten-Löschung 764 765 Der DELETE fordert eine updateable Result Table 765 DELETE-Formate766 Beispiele für SQL-Datenlöschungen 767 Searched Delete Positioned Delete 767 768 SELECT mit SQL Data Change Statement (hier: SELECT mit DELETE) 6.5.8 MERGE - Daten einmischen 769 770 Der MERGE fordert eine updateable Result Table 770 MERGE-Formate771 Beispiele für SQL-Daten-Mischvorgänge 772 Einfügung einer Zeile Änderung einer Zeile Änderung mehrerer Zeilen SELECT mit SQL Data Change Statement (hier: SELECT mit MERGE) 772 773 774 775 SELECT mit MERGE in einem Cursor 778 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis 7 SQL-DCL-Data Control Language 7.1 Grafischer Wegweiser durch das Kapitel 7 - SQL-DCL-Data Control Language 7.2 DB2-Zugriffsschutzkonzept 7.2.1 Überblick XXI 779 779 780 780 Vorüberlegungen780 Welche Ressourcen können von DB2 geschützt werden? 781 Konsequenzen bei einer vollständigen Auslagerung auf einen ESM 783 Aufteilung der Sicherheitsfunktionen zwischen DB2 und einem ESM 784 7.2.2 DB2-Privilegien-Konzept 7.2.3 DB2-Autorisierungs-Konzept 785 786 Übergabe der Autorisierungs-Identifikatoren Primär-, Sekundär- und Current-Autorisierungs-Id Zeitpunkt der Autorisierungsprüfung 787 788 789 Autorisierungsprüfung zur Bind-Zeit Autorisierungsprüfung zur Ausführungs-Zeit 789 790 Verhaltensweisen bei Dynamic SQL (Statement Behavior) 791 Wirkung der DYNAMICRULES-Optionen BIND, DEFINEBIND, INVOKEBIND, RUN, DEFINERUN und INVOKERUN Zusammenfassung der Verhaltensweisen (Statement-Behavior) und Konsequenzen der Autorisierungsprüfungen 7.2.4 Privilegien-Konzept 791 792 793 Privilegien-Struktur793 Explizite Privilegien 794 Grant-Typen und Privilegienbereiche DB2-Ressource-Typen und ihre Zuordnung der Einzel-Privilegien 795 796 Implizite Privilegien 799 Owner eines Objekts 799 Administrations-Gruppen801 Hierarchie der ADM-Privilegien 804 Explizit zuordenbare ADM-Gruppen 804 Implizit wirkende Einzel-Privilegien ADM-Gruppen 805 7.2.5 Welche Privilegien werden wann benötigt? 806 Erforderliche Privilegien zur Verwaltung der DB2-Objekte Die erforderlichen Privilegien eines Anwendungsentwicklers Zusammenspiel von Autorisierungs-Id-Typen und Privilegien 806 807 808 Ausführung von Dynamic SQL-Statements und die erforderlichen Privilegien Plan- und Package-Aktivitäten 7.3 GRANT - Erteilen DB2-Privilegien 7.3.1 Privilegien-Kategorien und GRANT-Varianten 7.3.2 Hierarchisches GRANT-Konzept 7.3.3 GRANT-Besonderheiten 7.3.4 Beispiele GRANT 808 809 810 810 811 812 813 GRANT-Szenario813 7.4 REVOKE - Aufheben DB2-Privilegien 7.4.1 REVOKE-Varianten 7.4.2 REVOKE und die Cascading Effekte 7.4.3 REVOKE-Besonderheiten 7.4.4 Beispiele REVOKE 815 815 816 819 820 REVOKE-Szenario820 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXII 7.5 DB2-Datenzugriffs-Kontrolle (ACCESS CONTROL) 7.5.1 Column Access Control (Column-Mask) und Row Access Control (Row-Permission) 821 821 Überblick821 Komponenten zur Einrichtung "geschützter" Objekte 822 Column Access Control (Column-Mask) - Maskierung von Ergebniswerten 824 Row Access Control (Row-Permission) - Filterung der Datenzeilen 825 7.6 Trusted Context und Rollen 7.6.1 Trusted Connection 826 826 Komponenten der Definition eines Trusted Contextes 827 Name des Trusted Contextes 827 System-Autorisierungs-Id827 Default-Rolle und ROLE AS OBJECT OWNER 827 ENABLE oder DISABLE 827 Default-Security-Label827 ATTRIBUTES827 WITH USE FOR 828 7.6.2 Die Rolle (ROLE) im Rahmen eines Trusted Contextes 7.6.3 Aktivitäten eines anderen Benutzers mit dessen Objekt-Privilegien durchführen 7.6.4 SQL-Statements und Katalog-Informationen für Trusted Context und Rollen-Konzept 7.7 VIEW - Inhaltsbezogener Datenschutz 7.7.1 Besonderheiten bei der Anwendung in Programmen 7.8 MLS - Multi-Level Security 7.8.1 Probleme bisheriger Zugriffsschutz-Verfahren 7.8.2 MLS-Konzept und relevante Komponenten Security Kategorie, Security Level und Security Label 829 830 831 832 833 834 834 835 836 7.8.3 MAC - Mandatory Access Control / Mandatory Access Checking 837 Dominanz (Dominate/Dominance) Äquivalenz (Equivalent) Nicht verarbeitbar Inkompatibilität (disjoint oder disjunkt) Write-down Control 837 837 837 837 837 7.8.4 MLS-Implementierungs-Varianten im DB2 838 MLS und MAC auf Objekt-Ebene MLS auf Zeilen-Ebene (Row-Level Granularity) 838 839 Write-down Control bei Row-Level Granularity Behandlung der betroffenen SQL-Statements 839 839 CREATE TABLE/ALTER TABLE 839 DROP TABLE 839 SELECT839 INSERT839 UPDATE840 DELETE840 Behandlung der betroffenen Utilities 841 LOAD841 UNLOAD841 REORG TABLESPACE 841 Behandlung in Triggern Sonstige Besonderheiten 841 841 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXIII 7.8.5 Zusammenfassung und Konsequenzen des MLS-Konzepts 842 Beispielhafte Ressource- und Benutzer-Definitionen 842 Security-Kategorien842 Security-Level842 Security-Label842 Fazit843 7.8.6 Vor- und Nachteile des MLS-Konzepts 844 Vorteile des MLS-Konzepts Nachteile des MLS-Konzepts 844 844 7.9 Verschlüsselung von Daten (Encryption) 7.9.1 Komponenten für die Verschlüsselung 7.9.2 Welche Daten eignen sich für DB2-Verschlüsselungs-Techniken? 7.9.3 Definition der Meta-Daten für die Verschlüsselung 7.9.4 Die Rolle des Encryption Passwords und Password Hints 7.9.5 Verschlüsselungs-Konzepte 845 845 845 846 846 847 Verschlüsselung auf Spalten-Ebene Verschlüsselung auf Daten-Wert-Ebene 847 847 7.9.6 Effekte der Verschlüsselung 848 Behandlung der Prädikate bei Vergleichen 848 Performance-Aspekte848 Kann man auch PKs und FKs verschlüsseln? 849 Wie behandeln Utilities verschlüsselte Daten? 849 8 DB2-Katalog 8.1 Grafischer Wegweiser durch das Kapitel 8 - DB2-Katalog 8.2 Aufbau und Inhalte 8.2.1 Liste der Katalog-Tabellen 8.2.2 Zuordnung der Objekte zu Katalog-Tabellen 8.2.3 Referenzielle Beziehungen der wichtigsten Katalog-Tabellen 8.2.4 Katalog-Informationen zur Unterstützung der Objekt-Administration Katalog-Spalten mit Informationen zur Speicherorganisation Katalog-Spalten mit Informationen zur Zugriffspfad-Analyse durch den Optimizer 8.2.5 Statistiken und ihre Nutzungsmöglichkeit 850 850 851 853 859 860 862 862 864 872 Überblick872 Was ist der Zweck der Statistiken? Übersicht der relevanten Statistik-Informationen (Generelle Statistik-Kategorien) DB2-Statistik-Kategorien und relevante Komponenten Speicherung der relevanten Index-Statistik-Informationen 872 873 874 876 Bedeutung von LEAFDIST 877 Bedeutung von LEAFNEAR und LEAFFAR 878 Speicherung der relevanten Daten-Statistik-Informationen 879 Bedeutung von NEAROFFPOSF und FAROFFPOSF 880 Bedeutung von CLUSTERRATIOF 881 Bedeutung von NEARINDREF und FARINDREF 882 Speicherung der relevanten Hash-Statistik-Informationen 883 Kontrolle der Speicher-Organisation 883 Bewertung der Nutzung der Hash-Organisation 887 Speicherung der relevanten LOB-Statistik-Informationen 889 Bedeutung von ORGRATIO 890 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXIV Aktuelle Statistiken: RTS - Realtime-Statistiken 891 Überblick891 RTS-Komponenten892 Sammeln und Aktualisieren der Statistikdaten 893 Ausschreiben der Statistiken in die RTS-Tabellen (Externalisierung) 894 Analyse der Statistiken 894 Stored Procedure: DSNACCOX (vor DB2-Version 9 DSNACCOR) - Analyse Realtime Statistiken 894 Welche RTS-Tatbestände führen zu einer Utility-Aktivierungs-Empfehlung? 895 Welche generellen Katalog-Tatbestände führen zu einer Utility-Aktivierungs-Empfehlung? 896 8.3 Katalog-Abfragen 8.3.1 Katalog-Abfragen der Katalogbeschreibungen (Metadaten) 897 897 Objekt-Abfragen für Anwendungs-Entwickler 899 8.3.2 Katalog-Abfragen zur Überwachung der optimalen Speicherorganisation Prüfung, ob RUNSTATS überhaupt noch nicht oder seit längerer Zeit nicht aktiviert wurde 8.3.3 Abfrage auf Reorganisations-Erfordernis 8.3.4 Nutzung von Tabellen und Indizes durch Packages 8.3.5 Katalog-Queries über referenzielle Beziehungen 8.3.6 Katalog-Queries zur Unterstützung und Kontrolle des Datenschutzes 8.4 Katalog-Veränderungen 9 Utilities 903 903 904 907 908 910 911 912 9.1 Grafischer Wegweiser durch das Kapitel 9 - DB2-Utilities 9.2 Überblick und relevante Komponenten 9.2.1 Abgrenzung IBM-DB2-Tools - DB2-Utilities 9.2.2 DB2-Online-Utilities und Standalone-Utilities 9.2.3 DB2-Online-Utilities 912 913 913 915 916 Komponenten eines Utilities Aktivierungs-Varianten für Utilities Die Phasen eines Utilities Ergebnis- und Status-Kontrolle eines Utility-Laufs 916 917 918 919 Status-Kontrolle während der Aktivierungs-Zeit eines Utility-Laufs 919 Ergebnis-Kontrolle nach dem Abschluss eines Utility-Laufs 919 RESTART (CURRENT) und RESTART (PHASE) 920 Utility-Datasets922 Vorgabe von Utility-Control-Statements 922 CCSID-Behandlung von Utility-Control Statements 922 Spezielle Utility-Control-Statements (SYSIN-DD-Statement) 922 Dataset-Charakteristiken923 Übersicht der Datasets für Online-Utilities 924 Dataset-Dispositionen925 Dataset-Größen926 Vorgehensweisen, wenn Datasets zu klein sind 926 Unterstützung von FlashCopy 927 FlashCopy-Datasets929 Generelle und spezielle Utility-Control Statements 930 Utility-Control Statement: EXEC SQL 931 Utility-Control Statement: LISTDEF 933 Utility-Control Statement: TEMPLATE 937 Utility-Control Statement: OPTIONS 938 Die Auswirkungen der Objekt-Versionierung für Utilities Wie behandeln Utilities verschlüsselte Daten? 940 941 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXV Wie behandeln Utilities MLS-geschützte Daten 941 Inline-Utility-Ausführungen942 Besonderheiten der Inline-Kopien für Utilities 942 Inline-Kopien mit dem LOAD-Utility 942 Inline-Kopien mit dem REORG-Utility 946 Inline-Statistiken mit dem LOAD-, REORG- oder REBUILD-Utility 947 Sperren von Utilities und Kompatibilität zu anderen Utilities 948 Claims und Drains 948 Restriktiver Space-Status von Utilities 948 Kompatibilität der Utilities untereinander 949 Standalone-Utilities950 9.2.4 Stored Procedures im Utility-Umfeld 9.3 DB2 Online Utilities 9.3.1 Übersicht der Kategorien und Utilities 9.3.2 Utilities zum Laden, Entladen und Reorganisieren von Daten und Indizes 950 951 951 952 LOAD-Utility953 Überblick953 Vorbereitungs-Aktivitäten955 LOAD: Erforderliche Datasets und Objekte 956 LOAD: Utility-Ausführungs-Phasen 957 LOAD: Utility-Sperren und Abhängigkeiten zu anderen Utilities 958 Besonderheiten von Daten-Typen- und -Charakteristiken 959 Besonderheiten beim Laden von Daten mit GENERATED ALWAYS-Spalten Komprimierung der Daten Performance-Faktoren beim Laden Offline-Load 960 961 961 962 Überblick über die Komponenten und relevante Klauseln 962 Ein- und Ausgabe-Datasets 962 Laden der Daten von Partitioned Tablespaces 964 Laden von Daten für Universal Tablespaces Partition-by-growth (UTS-PBG) 965 Laden von LOB-Daten 965 Laden von XML-Daten 965 Paralleler Aufbau der Indizes beim LOAD 966 Abbruch und Restart des LOAD-Utilities 968 Online-Load969 Überblick über die Komponenten und relevante Klauseln 969 Ein- und Ausgabe-Datasets 969 Unterscheidungsmerkmale von Offline- und Online-Load 970 Konsequenzen bei Einsatz des Online-Load-Utilities 970 Test-Ergebnisse Vergleich Offline-Online-Load 971 Empfehlungen971 Nachbereitungs-Aktivitäten972 Test-Beispiele973 Erläuterung des Test-Beispiels 973 Job-Control und Utility-Control-Statements 973 Ausführungs-Protokolle974 Test-Beispiel: LOAD von XML-Daten einer Temporal Table mit SPANNED YES 975 Job-Control und Utility-Control-Statements 975 Ausführungs-Protokolle976 REBUILD INDEX-Utility 977 Überblick über die Komponenten und relevante Klauseln 977 Online-Rebuild (SHRLEVEL CHANGE) 978 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXVI Ein- und Ausgabe-Datasets 979 Vorbereitungs-Aktivitäten979 REBUILD INDEX: Erforderliche Datasets und Objekte 980 REBUILD INDEX: Utility-Sperren und Abhängigkeiten zu anderen Utilities 981 REBUILD INDEX: Utility-Ausführungs-Phasen 981 Paralleler Aufbau der Indizes beim REBUILD INDEX 982 Abbruch und Restart des REBUILD INDEX-Utilities 982 Wann ist REBUILD INDEX zweckmäßig oder erforderlich? 983 Test-Beispiele984 Job-Control984 Utility-Control-Statements984 Auszüge der Ausführungs-Protokolle 984 REORG INDEX-Utility 985 Überblick985 Reorganisations-Methoden985 Überblick über die Komponenten und relevante Klauseln 986 Ein- und Ausgabe-Datasets 986 Abbruch parallel laufender Prozesse mittel FORCE-Klausel bei Verhinderung des REORG-Abschlusses 987 Vorbereitungs-Aktivitäten988 REORG INDEX: Erforderliche Datasets und Objekte 988 REORG INDEX: Utility-Sperren und Abhängigketen zu anderen Utilities 989 REORG INDEX: Utility-Ausführungs-Phasen 989 Paralleler Aufbau der Indizes beim REORG INDEX 990 Abbruch und Restart des REORG INDEX-Utilities 990 Wann ist ein REORG INDEX zweckmäßig oder erforderlich? 991 Test-Beispiele992 Job-Control992 Utility-Control-Statements992 Auszüge der Ausführungs-Protokolle 992 REORG TABLESPACE-Utility 993 Überblick993 Reorganisations-Methoden993 Erweiterungen ab DB2-Version 9 Erweiterungen ab DB2-Version 10 Reorganisation der verschiedenen Tablespace-Typen 994 994 995 Reorganisation eines Segmented Tablespaces 995 Reorganisation eines Partitioned Tablespaces 995 Reorganisation von UTS-PBG-Tablespaces (Partition-by-Growth) 995 Reorganisation von XML-Tablespaces 995 Reorganisation von LOB-Tablespaces 996 Logging eines LOB-Tablespaces 997 Reorganisation von Katalog- und Directory-Tablespaces 997 Überblick über die Komponenten und relevante Klauseln 998 Ein- und Ausgabe-Datasets 998 Performance-Faktoren bei der Reorganisation 1000 Parallele Reorganisation bei Partitioned Tablespaces 1000 Parallele Verarbeitungsmöglichkeiten durch andere Prozesse 1001 SHRLEVEL NONE - keine Parallelverarbeitung ab RELOAD erlaubt 1001 SHRLEVEL REFERENCE - lesende Parallel-Verarbeitung erlaubt 1002 SHRLEVEL CHANGE - Parallel-Verarbeitung erlaubt (Online-Reorg) 1003 Rolle der Mapping Table 1004 Besonderheiten beim Aufbau von Non-Partitioned Indizes (NPIs) 1004 Nicht-Verfügbarkeitszeiten der Objekte für Parallel-Anwendungen 1005 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXVII Abbruch parallel laufender Prozesse mittel FORCE-Klausel bei Verhinderung des REORG-Abschlusses 1005 Konsequenzen bei Einsatz des Online-Reorg-Utilities 1006 REBALANCE - Re-Balancieren ungleich großer Partitions 1007 Vorbereitungs-Aktivitäten1008 REORG TABLESPACE: Erforderliche Datasets und Objekte 1009 REORG TABLESPACE: Utility-Ausführungs-Phasen 1011 REORG TABLESPACE: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1012 Paralleler Aufbau von Partitions beim REORG TABLESPACE 1013 Paralleles Entladen der Daten-Partitions 1013 Paralleler Aufbau der Daten-Partitions 1013 Paralleler Aufbau der Indizes 1013 Abbruch und Restart des REORG TABLESPACE-Utilities 1014 REORG TABLESPACE-Utility: Abbruch in Phasen und Pending-Status 1014 Wann ist REORG TABLESPACE zweckmäßig oder erforderlich? 1015 Nachbereitungs-Aktivitäten1016 Test-Beispiele1017 Job-Control mit Direkt-Vorgabe eines Tablespace-Namens 1017 Utility-Control-Statements1017 Auszüge der Ausführungs-Protokolle 1018 Job-Control mit Vorgabe von Objekt-Listen und Templates 1019 Auszüge der Ausführungs-Protokolle 1019 Beispiel der Reorganisation von LOB-Tablespaces mit SHRLEVEL CHANGE 1022 Utility-Control1022 Ausführungs-Protokollierung1022 Beispiel der Reorganisation eines Tablespaces mit Objekt-Änderungen im Schwebezustand (Pending Changes) 1023 Utility-Control1023 Ausführungs-Protokollierung (relevanter Auszug) 1023 UNLOAD-Utility1024 Überblick1024 Besonderheiten beim Entladen der Daten 1026 Entladen von Tablespaces, Tables und Image-Copies 1026 Beeinflussung der Spalten- und Datenauswahl 1027 Konvertierung der Daten 1027 Vorbereitungs-Aktivitäten1027 UNLOAD: Erforderliche Datasets und Objekte 1028 UNLOAD: Utility-Ausführungs-Phasen 1028 UNLOAD: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1028 Abbruch und Restart des UNLOAD-Utilities 1029 Test-Beispiele1029 Test-Beispiel: Entladen Daten eines Partitioned Tablespaces 1029 Job-Control1029 Utility-Control-Statements1029 Auszüge des Ausführungs-Protokolls 1029 Test-Beispiel: Entladen Daten DELIMITED 1030 EBCDIC-Daten1030 Test-Beispiel: Entladen Daten mit der WHEN-Klausel und mit TEMPLATE in SYSTEMPL 1031 Job-Control1031 Auszüge des Ausführungs-Protokolls 1031 Ausdruck der Daten 1032 Test-Beispiele: Entladen Daten mit CCSID EBCDIC und UNICODE 1033 Test-Basis1033 Entladen beide mit Default-CCSID 1033 Entlade-Bestände1034 Entladen beide mit CCSID EBCDIC 1035 Entlade-Bestände1036 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXVIII Entladen beide mit CCSID UNICODE 1037 Entlade-Bestände1038 Entladen beide mit CCSID UNICODE DELIMITED 1039 Entlade-Bestände1040 Test-Beispiel: Entladen LOB-Daten mit externer File Referenz und TEMPLATE 1041 Test-Basis1041 UNLOAD-Job1041 UNLOAD-Ausführungs-Protokoll1042 Test-Beispiel: UN LOAD von XML-Daten einer Temporal Table mit SPANNED YES Test-Basis und UNLOAD-Utility-Control 1043 1043 9.3.3 Utilities zum Erzeugen von Statistik-Informationen aus Daten und Indizes 1044 RUNSTATS-Utility1045 Überblick1045 Aktualisierung der Katalog-Statistiken 1049 Welche Tabellen und Spalten aktualisiert RUNSTATS? 1049 RUNSTATS: Wirkung der Parameter UPDATE und HISTORY 1050 Woran erkennt man die Aktualität der Statistiken? 1052 Darstellung der Statistikwerte im Katalog 1052 Manuelle Veränderung der Statistikwerte im Katalog 1053 Exaktheit der Statistikwerte 1053 Ungleichförmige Verteilung von Datenwerten 1054 Statische Erfassung von Einzelwerten (KEYCARD und FREQUVAL) und Spalten-Gruppen (COLGROUP) 1054 Statische Erfassung der Verteilung von Spaltenwerten oder Wertegruppen (HISTOGRAM) 1055 Nutzung von Tabellen-Profilen zur Vereinheitlichung der RUNSTATS-Ausführungen (PROFILES) 1057 Vorbereitungs-Aktivitäten1058 RUNSTATS TABLESPACE: Erforderliche Datasets und Objekte 1058 RUNSTATS TABLESPACE: Utility-Ausführungs-Phasen 1058 RUNSTATS TABLESPACE: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1059 Abbruch und Restart des RUNSTATS-Utilities 1059 Test-Beispiele1060 RUNSTATS TABLESPACE TABLE ALL und INDEX ALL 1060 Utility-Control-Statements1060 Auszüge der Ausführungs-Protokolle 1060 STOSPACE-Utility1063 Überblick1063 Vorbereitungs-Aktivitäten1064 STOSPACE: Erforderliche Datasets und Objekte 1064 STOSPACE: Utility-Ausführungs-Phasen 1064 STOSPACE: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1064 Abbruch und Restart des STOSPACE-Utilities 1064 Test-Beispiele1065 Job-Control1065 Utility-Control-Statements1065 Ausführungs-Protokoll1065 Katalog-Statistiken1065 9.3.4 Utilities zum Prüfen der Konsistenz von Daten und Indizes 1066 Überblick und Abgrenzung der Aufgaben 1066 LOB- oder XML-Fehler-Typen: Orphan-, Missing-, Out-of-Synch- und Invalid-Werte 1068 Entdeckung der Fehlerzustände und mögliche Ursachen 1068 Bereinigungs-Möglichkeiten der Fehlerzustände 1069 CHECK DATA-Utility 1070 Überblick1070 Was wird denn nun wie und warum gesteuert? 1073 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXIX Behandlung des CHKP-Check-Pending Status ab DB2-Version 10 1073 Objekt-Auswahl: SCOPE-Klausel 1074 XML-Tablespace-Prüfungen1075 xxxERROR-Klausel1076 Vorbereitungs-Aktivitäten1077 CHECK DATA: Erforderliche Datasets und Objekte 1077 CHECK DATA: Utility-Ausführungs-Phasen 1078 CHECK DATA: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1078 Abbruch und Restart des CHECK DATA-Utilities 1079 Nachbereitungs-Aktivitäten1079 Test-Beispiele1080 Löschen fehlerhafter referenzieller Zeilen 1080 Job-Control1080 Utility-Control-Statements1080 Auszüge der Ausführungs-Protokolle 1080 LOB-Daten aufgrund eines PIT-Recoveries auf ungültig setzen 1081 Utility-Control-Statements1081 Ausführungs-Protokoll1081 CHECK INDEX-Utility 1082 Überblick1082 Vorbereitungs-Aktivitäten1083 CHECK INDEX: Erforderliche Datasets und Objekte 1084 CHECK INDEX: Utility-Ausführungs-Phasen 1084 CHECK INDEX: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1084 Abbruch und Restart des CHECK DATA-Utilities 1084 Nachbereitungs-Aktivitäten1085 Test-Beispiele1086 Job-Control1086 Utility-Control-Statements1086 Auszüge der Ausführungs-Protokolle 1086 CHECK LOB-Utility 1087 Überblick1087 Behandlung des CHKP-Check-Pending Status ab DB2-Version 10 1089 Vorbereitungs-Aktivitäten1089 CHECK LOB: Erforderliche Datasets und Objekte 1090 CHECK LOB: Utility-Ausführungs-Phasen 1090 CHECK LOB: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1091 Abbruch und Restart des CHECK LOB-Utilities 1091 Nachbereitungs-Aktivitäten1091 Test-Beispiele1092 Job-Control1092 Utility-Control-Statements1092 Auszüge der Ausführungs-Protokolle 1092 9.3.5 Utilities zum Sichern und Wiederherstellen von Daten und Indizes 1093 BACKUP SYSTEM-Utility 1094 Überblick1094 Vorbereitungs-Aktivitäten1096 BACKUP SYSTEM: Erforderliche Datasets und Objekte 1096 BACKUP SYSTEM: Utility-Ausführungs-Phasen 1096 BACKUP SYSTEM: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1096 Abbruch und Restart des BACKUP SYSTEM-Utilities 1097 Nachbereitungs-Aktivitäten1097 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXX Test-Beispiele1097 Job-Control1097 COPY-Utility1098 Überblick1098 Copy-Typen1100 Full Image Copy 1100 Incremental Image Copy 1100 Primär und Backup-Kopie 1101 Kopien für das lokale und das Recovery-System 1101 FlashCopy Kopien 1101 DFSMS Concurrent Copy 1102 Parallele Ausführungsmöglichkeiten des Utilities 1103 Parallele Sicherung von Objekten in einem Job 1103 Parallele Sicherung von Objekten in mehreren Jobs 1103 Erzeugen von Kopien für mehrere Objekte 1103 Vorgabe einer Liste in einer Copy-Anweisung eines Jobs 1103 Vorgabe mehrerer Copy-Anweisungen in einem Jobs 1103 Wie kann die Konsistenz der Objekte sichergestellt werden? 1104 Bei bestimmten 'Restriktiven Pending-Status' kann bzw. sollte keine Image Copy erzeugt werden 1104 Vom Einsatz von -TERM UTIL wird beim COPY abgeraten 1105 Vorbereitungs-Aktivitäten1105 COPY: Erforderliche Datasets und Objekte 1105 COPY: Utility-Ausführungs-Phasen 1106 COPY: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1106 Abbruch und Restart des COPY-Utilities 1107 Nachbereitungs-Aktivitäten1107 Test-Beispiele1108 Job-Control1108 Utility-Control-Statements1108 Auszüge der Ausführungs-Protokolle 1108 COPYTOCOPY-Utility1111 Überblick1111 Vorbereitungs-Aktivitäten1113 COPYTOCOPY: Erforderliche Datasets und Objekte 1113 COPYTOCOPY: Utility-Ausführungs-Phasen 1113 COPYTOCOPY: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1113 Abbruch und Restart des COPYTOCOPY-Utilities 1114 Nachbereitungs-Aktivitäten1114 Test-Beispiele1115 Job-Control1115 Utility-Control-Statements1115 Auszüge der Ausführungs-Protokolle 1115 MERGECOPY-Utility1116 Überblick1116 Vorbereitungs-Aktivitäten1117 MERGECOPY: Erforderliche Datasets und Objekte 1117 MERGECOPY: Utility-Ausführungs-Phasen 1118 MERGECOPY: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1118 Abbruch und Restart des MERGECOPY-Utilities 1118 Nachbereitungs-Aktivitäten1118 Test-Beispiele1119 Job-Control1119 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXI Utility-Control-Statements1119 Auszüge der Ausführungs-Protokolle 1119 QUIESCE-Utility1120 Überblick1120 Vorbereitungs-Aktivitäten1122 QUIESCE: Erforderliche Datasets und Objekte 1122 QUIESCE: Utility-Ausführungs-Phasen 1122 QUIESCE: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1122 Abbruch und Restart des QUIESCE-Utilities 1123 Nachbereitungs-Aktivitäten1123 Test-Beispiele1123 Job-Control1123 Utility-Control-Statements1123 Auszüge der Ausführungs-Protokolle 1123 RECOVER-Utility1125 Überblick1125 Zurücksetzen von Datenzuständen 1129 Vorwärts- und Rückwärts-Recovery (forward/backward und BACKOUT YES) 1130 Zurücksetzen auf den aktuellen Status 1131 Zurücksetzen auf einen früheren Zeitpunkt 1131 Copy-Typen1132 RECOVER von Tablespaces mit verknüpften Objekten (Indizes, RI-Constraints, LOB- oder XML-Tablespaces sowie deren Indizes) 1133 Pending Status 1133 Ungültigkeits-Markierung (invalid) von LOB- oder XML-Werten 1133 Wiederherstellen von Base-Tablespaces 1133 Wiederherstellen von LOB- oder XML-Tablespaces 1133 Wiederherstellen von Indexspaces 1133 RECOVER von Tablespaces, die mit NOT LOGGED definiert sind RECOVER von Katalog- und Directory-Objekten 1134 1134 Objekt-Hierarchie1134 Vorbereitungs-Aktivitäten1135 RECOVER: Erforderliche Datasets und Objekte 1135 RECOVER: Utility-Ausführungs-Phasen 1136 RECOVER: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1137 Abbruch und Restart des RECOVER-Utilities 1137 Nachbereitungs-Aktivitäten1137 Test-Beispiele1138 Job-Control1138 Utility-Control-Statements1138 Auszüge der Ausführungs-Protokolle 1138 RESTORE SYSTEM-Utility 1140 Überblick1140 Vorbereitungs-Aktivitäten1141 RESTORE SYSTEM: Erforderliche Datasets und Objekte 1142 RESTORE SYSTEM: Utility-Ausführungs-Phasen 1142 RESTORE SYSTEM: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1142 Abbruch und Restart des RESTORE SYSTEM-Utilities 1143 Nachbereitungs-Aktivitäten1143 Test-Beispiele1143 Job-Control1143 9.3.6 Utilities zum Löschen nicht mehr benötigter System-Informationen © Copyright DGD GmbH Germany 65201 Wiesbaden 1144 DB2- Theorie und Praxis : Inhaltsverzeichnis XXXII MODIFY RECOVERY-Utility 1145 Überblick1145 Vorbereitungs-Aktivitäten1146 MODIFY RECOVERY: Erforderliche Datasets und Objekte 1147 MODIFY RECOVERY: Utility-Ausführungs-Phasen 1147 MODIFY RECOVERY: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1147 Abbruch und Restart des MODIFY RECOVERY-Utilities 1147 Nachbereitungs-Aktivitäten1147 Test-Beispiele1148 Job-Control1148 Utility-Control-Statements1148 Auszüge der Ausführungs-Protokolle 1148 Szenario der Löschung aller Image Copies, außer der letzten Full Image Copy und ggf. nachfolgender Incremental Image Copies 1149 Auszug aus SYSIBM.SYSCOPY vor MODIFY RECOVERY 1149 MODIFY RECOVERY-Protokoll 1149 Auszug aus SYSIBM.SYSCOPY nach MODIFY RECOVERY 1150 MODIFY STATISTICS-Utility 1151 Überblick1151 Vorbereitungs-Aktivitäten1152 MODIFY STATISTICS: Erforderliche Datasets und Objekte 1152 MODIFY STATISTICS: Utility-Ausführungs-Phasen 1152 MODIFY STATISTICS: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1152 Abbruch und Restart des MODIFY STATISTICS-Utilities 1152 Nachbereitungs-Aktivitäten1152 Test-Beispiele1153 Job-Control1153 Utility-Control-Statements1153 Auszüge der Ausführungs-Protokolle 1153 9.3.7 Utilities für Objekt-Informationen und zur Fehler-Analyse und Fehler-Bereinigung 1154 DIAGNOSE-Utility1155 Überblick1155 Vorbereitungs-Aktivitäten1156 DIAGNOSE: Erforderliche Datasets und Objekte 1156 DIAGNOSE: Utility-Ausführungs-Phasen 1156 DIAGNOSE: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1156 Abbruch und Restart des DIAGNOSE-Utilities 1156 Nachbereitungs-Aktivitäten1156 Test-Beispiele1157 Job-Control1157 Utility-Control-Statements1157 Auszüge der Ausführungs-Protokolle 1157 REPAIR-Utility1158 Überblick1158 Vorbereitungs-Aktivitäten1160 REPAIR: Erforderliche Datasets und Objekte 1160 REPAIR: Utility-Ausführungs-Phasen 1160 REPAIR: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1161 Abbruch und Restart des REPAIR-Utilities 1161 Nachbereitungs-Aktivitäten1161 Test-Beispiele1162 Job-Control1162 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXIII Utility-Control-Statements1162 Auszüge der Ausführungs-Protokolle 1162 REPORT-Utility1163 Überblick1163 Vorbereitungs-Aktivitäten1164 REPORT: Erforderliche Datasets und Objekte 1164 REPORT: Utility-Ausführungs-Phasen 1164 REPORT: Utility-Sperren und Abhängigkeiten zu anderen Utilities 1165 Abbruch und Restart des REPORT-Utilities 1165 Nachbereitungs-Aktivitäten1165 Test-Beispiele1166 Job-Control1166 Utility-Control-Statements1166 Auszüge der Ausführungs-Protokolle 1166 9.4 Standalone-Utilities 9.4.1 Übersicht 9.4.2 DSNJCNVB 1169 1169 1171 Überblick1171 Vorbereitungs-Aktivitäten1171 DSNJCNVB: Erforderliche Datasets und Objekte 1172 Nachbereitungs-Aktivitäten1172 Test-Beispiele1172 Job-Control1172 Auszüge der Ausführungs-Protokolle 1172 9.4.3 DSNJLOGF (Preformat Active Log) 1173 Überblick1173 Vorbereitungs-Aktivitäten1173 DSNJLOGF: Erforderliche Datasets und Objekte 1173 Nachbereitungs-Aktivitäten1174 Test-Beispiele1174 Job-Control1174 Auszüge der Ausführungs-Protokolle 1174 9.4.4 DSNJU003 (Change Log Inventory) 1175 Überblick1175 Vorbereitungs-Aktivitäten1177 DSNJU003: Erforderliche Datasets und Objekte 1177 Nachbereitungs-Aktivitäten1177 Test-Beispiele1178 Job-Control1178 Auszüge der Ausführungs-Protokolle 1178 9.4.5 DSNJU004 (Print Log Map) 1179 Überblick1179 Vorbereitungs-Aktivitäten1180 DSNJU004: Erforderliche Datasets und Objekte 1180 Nachbereitungs-Aktivitäten1180 Test-Beispiele1180 Job-Control1180 Auszüge der Ausführungs-Protokolle (aufbereitete Form mit Erläuterungen) 1181 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXIV 9.4.6 DSN1CHKR 1184 Überblick1184 Vorbereitungs-Aktivitäten1185 DSN1CHKR: Erforderliche Datasets und Objekte 1185 Nachbereitungs-Aktivitäten1185 Test-Beispiele1185 Job-Control1185 9.4.7 DSN1COMP 1186 Überblick1186 Vorbereitungs-Aktivitäten1187 DSN1COMP: Erforderliche Datasets und Objekte 1187 Nachbereitungs-Aktivitäten1187 Test-Beispiele1187 Job-Control1187 Auszüge der Ausführungs-Protokolle 1188 9.4.8 DSN1COPY 1189 Überblick1189 Vorbereitungs-Aktivitäten1191 DSN1COPY: Erforderliche Datasets und Objekte 1191 Test-Beispiele1192 Job-Control1192 Auszüge der Ausführungs-Protokolle 1193 9.4.9 DSN1LOGP 1194 Überblick1194 Vorbereitungsaktivitäten1195 DSN1LOGP: Erforderliche Datasets und Objekte 1195 Nachbereitungs-Aktivitäten1195 Test-Beispiele1196 Job-Control1196 Auszüge der Ausführungs-Protokolle 1196 9.4.10 DSN1PRNT 1197 Überblick1197 Vorbereitungs-Aktivitäten1198 DSN1PRNT: Erforderliche Datasets und Objekte 1198 Nachbereitungs-Aktivitäten1198 Test-Beispiele1199 Job-Control1199 Ausführungs-Protokolle1199 9.4.11 DSN1SDMP 1203 Überblick1203 Vorbereitungs-Aktivitäten1204 DSN1SDMP: Erforderliche Datasets und Objekte 1204 Nachbereitungs-Aktivitäten1204 Test-Beispiele1204 Job-Control1204 9.5 Automatisierung des Anstoßes von Utility-Läufen durch Statistik-Analyse (Autonomic Maintenance) 9.5.1 Relevante, automatisierbare Utilities © Copyright DGD GmbH Germany 65201 Wiesbaden 1205 1206 DB2- Theorie und Praxis : Inhaltsverzeichnis Autonomic Statistics: Automatisierung von RUNSTATS XXXV 1207 9.6 Pending Status (Advisory und Restricted Status) 1208 10 Datenentwurf unter DB2 1212 10.1 Grafischer Wegweiser durch das Kapitel 10 - Datenentwurf 10.2 Rolle des ANSI-SPARC-Drei-Schemata-Ansatzes 10.3 Vorgehens-Modell 10.3.1 Entwicklungsgeschichte der relevanten Daten-Modelle 10.3.2 ERM - Entity-Relationship-Modell 10.3.3 Relationen-Modell (RM) 10.3.4 Gemeinsamkeiten von ERM und RM 10.4 Logisches Design 10.4.1 Normalisierung 1212 1213 1215 1217 1218 1220 1222 1226 1227 Unnormalisierte Daten 1NF - Atomic Attribute ohne Wiederhol-Elemente 2NF - Volle funktionale Abhängigkeit zu allen PK-Bestandteilen 3NF - Keine transitiven Abhängigkeiten der Nicht-PK-Attribute 1228 1230 1232 1234 Kritische Analyse der erreichten 3NF - Struktur-Qualität 1235 BCNF - Volle Abhängigkeit zum Candidate Key 4NF - Keine paarweisen mehrwertigen Abhängigkeiten 5NF - Ultimative Normal Form - Project-Join-Normalform (PJ/NF) Abschlussüberlegungen zur Normalisierung 1236 1237 1239 1242 10.4.2 Dokumentation der Daten-Design-Ergebnisse 1243 Bubbles/Blasendiagramme1243 Relationale Notation 1244 Dependency Diagram 1245 Netzwerk Diagramm 1246 Objektorientiertes State Transition Diagram 1247 DB2-Unterstützungstools1248 10.4.3 Festlegung der referenziellen Verarbeitungs-Regeln 1249 Darstellung der referenziellen Verarbeitungs-Maßnahmen (RI) 1251 10.4.4 Festlegung der Geschäfts-Regeln (Business-Rules) 1253 Zusammenfassende Definition der Business-Rules Festlegung der logischen Trigger für die Business-Rules 1254 1255 10.4.5 Übersicht der kompletten Integritäts-Regeln und -Maßnahmen 1257 Strukturierung der Geschäfts-Regeln und -Aktionen Umsetzung der Geschäfts-Regeln und -Aktionen in SQL-Funktionen 1259 1260 10.4.6 Konzeptionelle Modelle für Spezial-Konstrukte 1261 Einleitung1261 Daten unter Zeitbezug - Temporal Tables und Relationen-Modell 1262 Fachliche Zeitaspekte 1262 Einleitung, Terminologie 1262 Komponenten eines Modells für Daten mit Zeitbezug 1263 Auswirkung auf fachliche Informationen und Informations-Zusammenhänge 1265 Aufnahme von Zeit-Attributen und Konsequenzen 1266 Fachliche Funktionsauswirkungen der Zeitunterstützung 1268 Manipulation und Wirkung 1268 Entwicklung der Beispiel-Daten unter Zeitaspekten 1269 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXVI Konsequenzen der Zeitunterstützung für Fachbereichs-Benutzer 1270 Konzeptionelle Umsetzung für Zeitaspekte 1271 PK-Festlegung: Objekt-Identifikator plus Zeit- bzw. Versions-Bezug 1271 FK-Festlegung: Objekt-Identifikator mit oder ohne Zeit- bzw. Versions-Bezug 1272 Unser konzeptionelles Modell steckt voller Redundanzen: Wie sieht ein redundanzfreies Modell aus? 1274 Zeit-Leiste für jeden Attribut-Zustand 1274 Datenhaltung für jede Daten-Version bei veränderten Attribut-Zuständen 1276 Funktionale Konsequenzen für Daten mit Zeitbezug 1277 Manipulations-Typen1277 Manipulations-Festlegungen hinsichtlich der Gültigkeitszeitleisten 1278 Referenzielle Regeln für Daten mit Zeitbezug (RI-Bedingungen) 1280 Informations-Bereitstellungs-Typen1282 10.4.7 Festlegung der konzeptionellen Views 1283 Bilden von Schemata für spezielle Daten-Sichten 1283 OLAP1284 Data Warehouse: Cubes und Dimensionen 1285 Fakten (Facts) 1285 Maßeinheiten (Measures) 1285 Dimensionen (Dimensions) 1286 OLAP-Meta-Modell: Objekt-Typen 1290 10.4.8 Checkliste für das logische Daten-Design 1291 Fachliches Daten-Modell Konzeptionelles Daten-Modell 1291 1292 10.5 Physisches Design 10.5.1 Aufgabenstellungen 10.5.2 Ableiten der physischen Benutzerobjekte aus logischen Relationen Zielsetzungen eines physischen Daten-Modells Kandidaten für die physische Implementierung 1294 1294 1295 1295 1296 10.5.3 Bewertung der Auswirkungen logisch definierter Zugriffspfade 1296 Aufwand bei der Datenbeschaffung Individuelle Performance-Relevanz Auswirkungen der Sperr-Maßnahmen 1298 1301 1302 10.5.4 De-Normalisierungs-Maßnahmen 1303 Daten-Zusammenführung1303 Trennung der Daten (Verteilung) 1305 Trennung der Daten zwischen Base- und History-Table bei Daten-Versionierung von Temporal Tables Bilden zusätzlicher Redundanzen Bilden von Schemata für spezielle Datenhaltungs-Konzepte 1306 1308 1310 Data Warehouse 1310 Terminologie und Komponenten 1310 MOLAP, ROLAP und HOLAP 1312 Star-Schema1314 Snowflake-Schema 1315 Struktur-Besonderheiten beim Einsatz von MQTs 1316 Konsequenzen der De-Normalisierung 1317 10.5.5 Indizes 10.5.6 Unterstützung der referenziellen Integrität (RI) durch DB2 1318 1319 Terminologie und Einrichtung unter DB2 Definierbare Strukturen 1319 1321 Zulässige Einzel-Struktur-Beziehungen 1321 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXVII Umsetzung der M : N - Struktur-Beziehungen Logische referenzielle Struktur Physische referenzielle Struktur (Tablespace-Set) 1322 1323 1329 Gesamt-Überblick über die DB2-RI-Unterstützung Anforderungen an PK und FK 1331 1333 DB2-Primary-Key (PK) und Parent Key 1333 DB2-Foreign-Key (FK) Verwaltung der RI-Definitionen im Katalog 1334 1335 Katalog-Informationen für RI 1335 RI-DDL-Beispiele1336 Argumente für und wider den Einsatz von DB2-RI 1338 10.5.7 Unterstützung der Business Rules mit Funktionen und Triggern 1339 De-Normalisierungs-Auswirkungen1339 Zuordnung der Regeln und Maßnahmen zu den physischen Strukturen 1339 Funktionale Konsequenzen bei Nicht-Nutzung von DB2-RI 1341 Funktionale Konsequenzen bei Struktur-De-Normalisierungen 1342 10.5.8 Festlegung der sonstigen DB2-Objekte mit ihren Ausprägungen 10.5.9 Festlegung der sonstigen physischen Ressourcen 10.5.10 DB2-Unterstützungstools 10.5.11 Checkliste für das physische DB2-Design 1344 1344 1344 1345 11 Datenspeicherung intern und extern 11.1 Grafischer Wegweiser durch das Kapitel 11 11.2 Übersicht der Speicherungsformen 11.3 Space-Management 11.3.1 Verwaltung und Adressierung der Daten innerhalb des Page Sets 11.3.2 Page Sets Linear Page Sets Partitioned Page Sets Universal Page Sets LOB Page Sets XML Page Sets 1347 1347 1348 1350 1350 1352 1352 1353 1354 1355 1356 11.3.3 Page Typen des File Page Sets 1357 Header Page und System Pages Space Map Pages Daten Pages 1358 1359 1360 Satzformat: Basic-Record-Format (BRF) oder Reordered-Row-Format (RRF) Indikatoren für LOB- und XML-Werte in der Basis-Datenzeile Adressierung der Daten-Zeilen Speicherung und Adressierung bei Hash-organisierten Tabellen 1361 1362 1362 1363 Insert-Strategie innerhalb der Daten-Pages 1365 Update-Strategie bei variablen Zeilen 1366 Delete-Strategie innerhalb der Daten-Pages 1366 Freespace-Verwaltung der Daten-Pages 1367 Plattenplatz-Bedarfs-Ermittlung1369 Plattenplatz-Bedarfs-Ermittlung für LOB-Werte 1371 Besonderheiten bei Inline-LOBs 1372 PRIQTY1373 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XXXVIII SECQTY1373 Kompression der Daten 1374 11.3.4 Page Typen des Index Page Sets 1376 Header Page und System Pages Space Map Pages Index Pages 1376 1376 1376 Non-Leaf Pages Leaf Pages Insert-Strategie innerhalb der Index-Pages Update-Strategie innerhalb der Index-Pages Delete-Strategie innerhalb der Index-Pages Freespace-Verwaltung der Index-Pages Verteilung der Non-Partitioned-Index Daten mit Hilfe von PIECESIZE Plattenplatz-Bedarfs-Ermittlung für Indizes 1377 1378 1379 1380 1380 1380 1380 1381 Unterstützung von Page-Größen > 4-KB im Index 1383 Index-Komprimierung1384 DSN1COMP-Protokoll1385 11.4 Nutzung des virtuellen Adressraums 11.4.1 Nutzung der z/OS-Architektur 1386 1386 Erweiterte Nutzung der 64-Bit-Architektur 1387 11.4.2 Datenpool-Konzept 1389 RID-Pool1390 Sort-Pool1391 EDM-Speicherbereiche1392 Compressions-Dictionary1393 Materialisierung von LOB-Werten 1393 IRLM-Locks1393 LE-Tokens1393 11.4.3 Bufferpool-Konzept 1394 Group Bufferpools (GBP) Virtuelles Bufferkonzept 1396 1396 Zuordnung der Bufferpools zu Tablespaces und Indexspaces Unterstützung verschiedener Page-Größen Bufferpool-Page-Größe und VSAM-CI-Größe Fixierung von Buffern im Realspeicher Einbindung der Bufferpools in die System-Schichten 1396 1397 1397 1397 1398 Lese-Anforderungen1399 Direktes Einlesen (Synchronous Read) 1399 Sequential Prefetch 1399 Dynamic Prefetch (Sequential Detection) 1400 Sequential Detection 1401 List Prefetch (List Sequential Prefetch) 1402 Schreib-Anforderungen1403 Zustandsformen der Bufferpool-Page-Typen 1404 Bufferpool-Thresholds1405 Threshold-Parametrisierungs-Empfehlungen für LOB- und XML-Werte Mögliche Strategien der Bufferpool-Einrichtung Bufferpool-Hit Ratio und MUPA 1406 1407 1408 Bufferpool-Besonderheiten für LOB- und XML-Werte 1409 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis 11.5 VSAM-Datasets 11.5.1 Nutzung von DFSMS (Storage Management Subsystem) XXXIX 1410 1412 12 DB2-Datensicherheitseinrichtungen 12.1 Grafischer Wegweiser durch das Kapitel 12 - Datensicherheitseinrichtungen 12.2 DB2-Sicherheitsinstrumentarium 12.3 Transaktionsabwicklung 12.3.1 Terminologie und Transaktions-Definition 12.3.2 Konsistenz-Koordination bei Einsatz mehrerer Ressource-Manager 12.4 LUW-, UOW- und UOR-Konzept 12.4.1 Vorgangsabwicklung unter TSO oder einem Client ohne UOW-Konzept 12.4.2 Vorgangsabwicklung unter CICS oder IMS mit UOW-Konzept 12.4.3 Die Wirkung von SAVEPOINT und ROLLBACK TO SAVEPOINT 12.4.4 Commit-Konzepte Überblick über Read-only-, Single-Phase- und Two-Phase-Commit Two-Phase-Commit (2-Phasen-Commit) 1413 1413 1414 1416 1416 1418 1420 1422 1423 1424 1425 1425 1426 UOR-Status nach einem Fehler 1427 12.5 Probleme und Lösungswege der Konkurrenzverarbeitung 12.5.1 Verlorener Update 12.5.2 Zugriff zu Daten, deren UOW noch nicht abgeschlossen ist 12.5.3 Wiederholtes Einlesen von Daten innerhalb einer UOW 12.5.4 Lösungswege zum Abbau der Konkurrenz-Problematiken 12.5.5 Deadlock 1428 1429 1430 1431 1432 1434 Vermeidung von Deadlocks Erkennung von Timeouts und Deadlocks 1435 1437 12.6 DB2-Sperrverfahren 12.6.1 Überblick 12.6.2 Transaction Lock 1438 1438 1439 Lock-Charakteristiken1439 Lock-Objekt1441 Implizite Lock-Auswirkungen auf die DB2-Systemressourcen 1441 Lock-Dauer1443 Lock-Niveau1444 Lock Eskalation 1446 SQL-Statement: LOCK TABLE 1446 Lock-Modus1447 Lock-Modus auf Lock-Niveau: Tablespace, Table bzw. Partition 1447 Lock-Modus auf Lock-Niveau: Page bzw. Row 1449 Zusammenfassung: Aktivierung von Lock-Niveau und Lock-Modus 1450 DB2-Lock-Modus-Entscheidungen1451 Isolation-Level1453 RR - Repeatable Read 1453 RS - Read Stability 1453 CS - Cursor Stability 1454 UR - Uncommitted Read 1454 Lock Promotion 1454 Vorgabemöglichkeiten des Isolation-Levels und Wechselwirkung in Package und Plan 1455 Zugriff auf aktuelle Daten trotz Parallel-Manipulation ("currently committed") oder auch CONCURRENT ACCESS RESOLUTION © Copyright DGD GmbH Germany 65201 Wiesbaden 1456 DB2- Theorie und Praxis : Inhaltsverzeichnis XL Unterschiede zwischen Latch und Lock Lock Avoidance Lock-Besonderheiten beim Cursor-Einsatz 1458 1458 1460 Optimistic Concurrency Control (Optimistic Locking) 1460 LOCK-Besonderheiten bei LOB- und XML-Daten 1461 12.6.3 Drain Lock, Drains und Claims 12.6.4 IRLM - Internal Resource Lock Manager 12.6.5 Data Sharing (DS) 1462 1463 1464 Lock-Optimierungen bei Data Sharing Lock-Typen bei Data Sharing 1464 1464 L-Locks und P-Locks 1465 12.6.6 Zusammenfassung der DB2-Lock-Mechanismen 1467 Welche relevanten Parameter steuern die Lock-Mechanismen? Checkliste für den Einsatz der DB2-Lock-Mechanismen Übersicht: Sperrniveau und Lock-Maßnahmen 1467 1468 1470 12.7 Konsequenzen der DB2-Sperrverfahren auf die Anwendungs-Entwicklung 12.7.1 Zusammenspiel von Isolation-Level, Lock-Modus und -Dauer 12.7.2 Verhinderung eines Parallel-Updates Einsatz des Cursor-Konzeptes 1471 1471 1472 1472 Cursor-Konzept oder SELECT WITH RR bzw. RS? 1473 Optimistic Locking Strategie 1474 12.7.3 Parallelverarbeitung von Online- und Batch-Anwendungen 12.8 Logging-Einrichtungen 12.8.1 Steuerungsfunktionen für die Logging-Abwicklung 1475 1476 1478 Logging-Philosophie1478 Logging-Hierarchie1479 12.8.2 Führen und Ausschreiben von LOG-Informationen 1481 Maßnahmen zur Reduzierung des LOG-Aufwands 1482 12.8.3 Konsistenzsicherung innerhalb des DB2-Subsystems (REDO, UNDO) Manuelle, nicht durch DB2 überwachte Konsistenz-Maßnahmen 1483 1484 12.8.4 Konsistenzsicherung mit Allied Agents 12.8.5 Konsistenzsicherung bei DB2 Data Sharing (DS) 12.9 Storage Server 12.9.1 ESS - Enterprise Storage Server 12.9.2 AUDIT TRACE 1484 1485 1486 1486 1487 Regelbasierte Protokollierung sicherheitsrelevanter Ereignisse (Policy-based Audit Capability) 1488 Übersicht der Komponenten 1488 Audit-Kategorien1489 12.10 Problembereiche der Datensicherheitseinrichtungen 1491 13 Anwendungsprogrammierung unter DB2 13.1 Grafischer Wegweiser durch das Kapitel 13 - Anwendungsprogrammierung 13.2 Anwendungsprogrammierung: Relevante Komponenten im Überblick 13.3 Einsatzspektrum von DB2 13.3.1 Die verschiedenen Programm-Typen Abgrenzung Dialog-, Online-, Batch- und Client/Server-Verarbeitung 1493 1493 1494 1495 1496 1496 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XLI Was versteht man unter Batch-Verarbeitung? 1497 Brauchen wir noch die Batch-Verarbeitung? 1498 Abgrenzung der Online- und Batch-Charakteristiken 1500 Client/Server-Charakteristiken1501 13.3.2 Wahl des geeigneten Trägersystems 1502 Dialog-Verarbeitung1502 Foreground-Verarbeitung1502 Background-Verarbeitung1503 Batch-Verarbeitung1504 Perment laufende Anwendungen, Started Tasks (STC) und Message-Konzept 1505 13.3.3 Die verschiedenen Betriebsformen 1506 Normale Betriebszeiten Erweiterte Betriebszeiten (erweiterte Verfügbarkeit) 24-Stunden-Betrieb (permanente Verfügbarkeit) 1506 1506 1507 Zielsetzungen eines Multi-User-Betriebs Ein Wort zur 'Permanenz' 1508 1508 13.3.4 Programm-Design-Überlegungen 1509 Programmübergreifende Maßnahmen Der Einsatz von SQL: Möglichkeiten und Restriktionen 1509 1511 13.4 Programmentwicklung unter DB2 13.4.1 Unterstützte Programmiersprachen 1513 1513 Embedded SQL Call Level Interface für C- und C++-Programme (CLI bzw. ODBC) Java-Sprachschnittstellen (JDBC und SQLJ) 1513 1513 1514 JDBC-API für Java-Anwendungen SQLJ-API für Java-Anwendungen pureQuery für Java-Anwendungen 1514 1514 1514 13.4.2 Entwicklung einer DB2-Anwendung 1515 Überblick der relevanten Entwicklungs-Komponenten Entwicklungs-Komponenten für Embedded SQL 1515 1516 DB2I: DCLGEN-Generierung 1517 SQL-Preprozessor (SQL Statement-Coprozessor bzw. DB2-Coprozesor) 1518 DB2-Precompiler1519 Aufgaben des Precompilers 1519 Precompiler bzw. Coprocessor-Optionen 1520 Standard-SQL1523 Modifikationen der Programm-Source durch den Precompiler 1525 Entwicklungs-Komponenten für Java-Anwendungen 1527 JDBC-API1527 SQLJ-API1527 Entwicklungs-Komponenten für CLI/ODBC-Anwendungen 1528 BIND-Prozess1529 Aufgaben des BIND-Prozesses Objekte des Bind-Prozesses 1529 1530 DBRM: Database Request Module 1530 Package1530 Package-Zuordnung zu mehreren Collections 1532 Was ist eine invalidated Package? 1533 Plan1534 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XLII Package-Liste im Plan: PKLIST 1536 Nutzung von remote Packages 1538 Packages von Routinen 1538 Die Zuordnung eines Plans zu einem Programm 1539 Dynamische Plan-Zuordnung im CICS 1540 Was ist ein invalidated Plan? 1540 Die verschiedenen BIND- und REBIND-Typen 1541 STATIC BIND: BIND PACKAGE, BIND PLAN 1541 REBIND PACKAGE, REBIND PLAN 1542 FREE PACKAGE, FREE PLAN, DROP PACKAGE 1542 DYNAMIC BIND 1542 AUTOMATIC REBIND 1543 INCREMENTAL BIND 1543 DEFERRED BIND 1543 Relevante Katalog-Tabellen 1544 Konvertierung der in Plänen eingebundenen DBRMs in Packages PLAN Management (müsste eigentlich Package Management heißen) 1544 1545 Binder (Linkage Editor) 1546 Aktivieren der Attachment-Facility-Schnittstellen 1546 13.4.3 Beispiel- und Hilfs-Programme: DSNTIAD, DSNTEP2/4 und DSNTIAUL 1547 Übersicht1547 DSNTIAUL1548 DSNTIAUL-Beispiel1549 DSNTEP2/DSNTEP41551 DSNTEP2/DSNTEP4-Beispiel1552 13.5 SQL-Spracheinsatz in Anwendungsprogrammen 13.5.1 Übersicht der Sprachschnittstellen 1553 1553 Interactive SQL, Embedded SQL, CLI, Static SQL und Dynamic SQL 1553 EXEC-Level-API: Embedded SQL 1554 Behandlung von Datenmengen 1556 CLI: Call-Level-Interface bzw. ODBC-Schnittstelle 1557 Java-Schnittstellen1559 JDBC - Java Database Connectivity SQLJ - SQL for Java 1561 1562 REXX-Schnittstellen1565 13.5.2 Grundstruktur eines DB2-Programmes im EXEC-Level 1566 Relevante Komponenten Basis-Codier-Regeln für SQL-Statements 1566 1567 Allgemeine Regeln 1567 Assembler-Besonderheiten1568 C-Besonderheiten1568 COBOL-Besonderheiten1569 PL/I-Besonderheiten1572 13.5.3 Definition der Variablen und Daten-Strukturen 1573 Definition der SQLCA (SQL Communication Area) 1574 Beschreibung der SQLCA-Struktur-Komponenten SQLCA-Definitions-Struktur: Beispiele COBOL und PL/I 1574 1577 Tabellen- und View-Deklarationen Host-Variablen und NULL-Indikatoren 1578 1580 Typen: Host-Variablen und Host-Strukturen 1580 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Einlesen von NULL-Values (NULL-Markierungen) Setzen von NULL-Werten (NULL-Markierungen) Einsatzspektrum von Host-Variablen und Indikatoren Erweiterte NULL-Indikator-Variablen (Extended Indicator Variables) XLIII 1582 1584 1586 1587 Host-Variablen-Arrays1589 Unterstützte Daten-Typen (mit SQLTYPE) 1590 Konvertierungsregeln zwischen DB2-Spalten und Host-Variablen 1592 Fehlerbehandlung1595 Überblick1595 Returncode-Analyse 1596 SQLCA - SQL Communication Area 1596 Auszug einiger relevanter SQLCODEs und SQLSTATEs 1597 WHENEVER1598 DSNTIAR, DSNTIAC 1598 GET DIAGNOSTICS-Statement Behandlung schwerer Fehler 1599 1601 13.5.4 Cursor-Konzept 1602 Übersicht der Sprachmittel Überblick über die Cursor-Typen 1602 1605 Ist die Result Table des Cursors read-only oder updateable? 1606 Non-Scrollable Cursor 1608 Deklaration des Cursors: DECLARE CURSOR Eröffnen des Cursors: OPEN Bereitstellen einzelner Zeilen der Result Table: FETCH Positioned Update und Delete: WHERE CURRENT OF Schließen des Cursors: CLOSE 1608 1610 1610 1611 1612 Explizites Schließen des Cursors 1612 Implizites Schließen des Cursors 1612 Statische und dynamische Result Table und ableitbare Integritäts- und Performance-Probleme beim Cursor-Konzept Mengenverarbeitung auf Realtime-Daten: das ewige Rätsel 1613 1615 Scrollable Cursor 1617 Positionierungs-Möglichkeiten in der Result Table Cursor- und FETCH-Typen und ihre Sichten auf die Daten der Result Table Statischer Scrollable Cursor (Statisches Cursor-Modell) 1617 1618 1619 Deklaration des Cursors: DECLARE CURSOR .. SCROLL .. 1619 Informationsbereitstellung eines Static Scrollable Cursors 1620 Manipulationen über die Result Table eines Static Scrollable Cursors 1622 Dynamischer Scrollable Cursor (Dynamisches Cursor-Modell) 1623 Deklaration des Cursors 1623 Verarbeitung einer Zeilen-Gruppe (Rowset) 1624 Einlesen eines Rowsets: FETCH FOR n ROWS COBOL-Programm-Beispiel eines Rowset-Cursors mit GET DIAGNOSTICS Scrollable Cursor: Positionierung mit Rowsets 1624 1625 1629 Einfügen eines Rowsets: INSERT .. FOR n ROWS Analyse der Rowset-Verarbeitungs-Ergebnisse mit GET DIAGNOSTICS Einfluss des UOW/UOR-Konzepts auf die Cursor-Verarbeitung Zusammenfassung der relevanten Cursor-Typen und der zu definierenden Klauseln 13.6 Besondere Programmier-Techniken unter DB2 13.6.1 Effiziente Bereitstellung einer Result Table 1630 1630 1631 1633 1634 1634 Relevante WHERE- und ORDER BY-Komponenten 1635 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XLIV Aufsetzen auf einen Composite Key Regeln für das Aufsetzen 1636 1637 13.6.2 Online-Anwendungen 1638 Online-Parallel-Update1638 Online-Browsing/Blättern 1641 13.6.3 Batch- und Multi-User-Anwendungen 1642 Langlaufende oder ressourceintensive Anwendungen UOW und UOR 1642 1643 Die Lebensdauer einer UOW Wirkungen beim Abschluss einer UOR Einsatz von COMMIT (explizit oder implizit) 1643 1643 1644 Probleme, wenn kein COMMIT eingesetzt wird 1644 Was sind Kandidaten für die COMMIT-Schreibung? 1645 Konsequenzen des COMMIT-Einsatzes 1646 Unterstützung von Rollback und Restart der Batch-Programme 1647 Empfehlungen zum Design von Batch-Langläufern 1648 13.6.4 Anwendungen in verteilten Datenbankumgebungen 1649 Zugriffstypen und Protokolle 1649 DB2-Privat-Protokoll-Zugriff und DRDA-Zugriff Two-Phase-Commit (2-Phasen) in einer verteilten Datenbank-Umgebung Syntax-Anforderungen unterschiedlicher Systeme Programmvorbereitungen, Pläne und Packages SQL-Statement-Einsatz in Programmen Vorteile und Beschränkungen der Nutzung von dreiteiligen Objektnamen Behandlung von LOB- und XML-Werten bei remote Zugriffen Performance- und Integritäts-Aspekte 1649 1650 1650 1651 1652 1654 1654 1655 Block-Fetch1656 Limited und Continuous Block-Fetch 1657 13.6.5 Behandlung von LOB- und XML-Werten 1658 Grundsätzliche Verarbeitungsmöglichkeiten für LOB-Werte 1658 LOB-Daten-Typen und ihre Host-Variablen-Repräsentation 1660 LOB-Materialisierung1662 LOB-Referenzierung mittels LOB-Locator 1663 LOB-Verarbeitung mittels File-Referenz-Struktur 1664 Grundsätzliche Verarbeitungsmöglichkeiten für XML-Werte 1665 XML-Funktionen1666 Bereitstellungs-Techniken für XML-Daten SQL-XML-Funktionen: Beispiele für Komposition und De-Komposition 1667 1668 XML-Daten-Typen und ihre Host-Variablen-Repräsentation 1669 13.6.6 Entwicklung und Einsatz von Stored Procedures 1671 Programmtechnische Umsetzung Aufruf-Varianten einer Stored Procedure Parameter der Stored Procedure Codier-Beispiele: Aufruf und Parameterübergabe 1671 1671 1671 1672 Stored Procedure ohne Result Sets 1672 13.6.7 Entwicklung und Einsatz von User-defined Functions 1674 Überblick der Nutzungsmöglichkeiten Aufruf-Varianten einer externen Funktion 1674 1675 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Programmtechnische Besonderheiten XLV 1676 Scratchpad-Bereich1676 Parallellauf-Besonderheiten1676 Parameter der User-defined Function Codier-Beispiele: Aufruf und Parameterübergabe 1676 1677 External Scalar Function External Table Function 1677 1679 13.6.8 Entwicklung und Einsatz von Triggern 1681 Codier-Beispiele: Aufruf mit Übergabe einer Transition-Table 1681 13.6.9 MQ-Series-Funktionen 13.6.10 Session-Variablen und Scalar-Funktion GETVARIABLE 13.6.11 Behandlung unterschiedlicher Codier-Sets für Host-Variablen 13.7 CAF - Call Attachment Facility 13.7.1 Vorteile der CAF-Nutzung 13.7.2 Entwicklung eines CAF-Programms 13.7.3 Nutzbare CAF-Funktionen 1682 1685 1687 1688 1688 1688 1689 Implizite Connection Explizite Connection Generelle Ausprägungen einer CAF-Connection 1690 1690 1690 13.8 RRSAF - Recoverable Resource Manager Services Attachment Facility 13.8.1 Vorteile der RRSAF-Nutzung 13.8.2 Entwicklung eines RRSAF-Programms 13.8.3 Nutzbare RRSAF-Funktionen Abschluss einer UOW 1691 1691 1691 1692 1693 13.9 Universal Language Interface - Universelle Schnittstelle (DSNULI) 13.10 Dynamic SQL 13.10.1 Abgrenzung zu Static SQL 13.10.2 Verhalten von Dynamic SQL-Statements (Statement Behavior) 13.10.3 Funktionsspektrum von Dynamic SQL 1694 1695 1695 1696 1697 Manipulationen und Informationsanforderungen Parameter Markers (?) SQLDA - SQL Descriptor Area Struktur-Komponenten der SQLDA Beispiele der vom Precompiler/Preprozessor generierten SQLDA-Host-Variablen-Strukturen 13.10.4 Manipulationen (Non-SELECT) 1697 1698 1699 1700 1701 1702 Feste Parameter Variable Parameter 1702 1704 13.10.5 Informations-Anforderungen (SELECT) 1705 Feste Parameter: Fixed-List-SELECT Variable Parameter: Varying-List-SELECT 1705 1705 13.10.6 Statement Caching 1708 Prepare-Typen und -Ausführungsarten Ersetzen von Literalen durch generische &-Variablen (Literal-Replacement) Sperr-Dauer bei dynamischen SQL-Statements 13.10.7 Resource Limit Facility (RLF) - DB2 Governor 1709 1710 1710 1711 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XLVI 13.10.8 Vor- und Nachteile von Dynamic SQL 13.11 Programmier-Empfehlungen 1712 1713 14 SQL-Performance 1716 14.1 Grafischer Wegweiser durch das Kapitel 14 - SQL-Performance 14.2 Grundlagen der SQL-Performance 14.2.1 Einleitung, Ansätze der Optimierung 1716 1717 1717 Leistungsbeeinflussende Faktoren Optimierungs-Möglichkeiten und -Maßnahmen 1717 1718 14.2.2 Komponten der Datenbeschaffung (Stages) 1720 Aufgabenteilung von RDS, DM und BM 1720 14.2.3 DB2-Tools zur Unterstützung von Performance-Maßnahmen 1722 Übersicht1722 Statistikdaten des Katalogs 1724 DB2-Trace1725 Leitlinien für Traces 1725 Trace-Typ1726 14.2.4 Thread-Management 1728 Installations-Parameter für das Thread-Management Die Rolle von Prozess, Enklave, Transaktion, Thread, TCB und SRB Allied Thread 1728 1729 1730 Thread-Lebenszyklus1730 Thread-Wiedernutzung (reuse) 1731 DBAT - Database Access Thread 1731 14.2.5 Die relevanten Zeiten einer Statement-Abwicklung 1733 DB2-Accounting-Zeiten1733 14.2.6 Parallel-Verarbeitung 1735 Parallel-Verarbeitungs-Typen1735 Kandidaten für Parallel-Verarbeitung 1735 Query-Typ: CPU bound oder I/O bound 1737 Effekte der Parallel-Verarbeitung 1737 Aktivierung der Parallel-Verarbeitung 1737 Voraussetzungen für die Parallel-Verarbeitung 1738 Restriktionen bei der Nutzung der Parallel-Verarbeitung 1738 Technische Abwicklungs-Modelle 1739 Dynamic Record-Range-Partitioning anstelle Static Keyrange-Partitioning Straw-Modell für eine effiziente Workload-Verteilung 14.3 Zugriffspfad-Analyse des DB2-Optimizers 14.3.1 Aufgaben des Optimizers 14.3.2 Parsing und Parse Tree 14.3.3 Entscheidungs-Faktoren des Optimizers und Zugriffspfad-Varianten 14.3.4 Optimization Bedingte Verarbeitungsanweisung (Prädikat) 1739 1740 1741 1741 1741 1742 1743 1743 Erläuterung1743 Prädikat-Typen1744 Prädikat-Kategorien1744 Einsatz von Literalen (Konstanten) oder Variablen (Input-Variablen) 1745 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis XLVII Filterung1747 Inhaltliche Verteilung von Datenwerten Filter-Faktor (FF) 1748 1748 Aufgabenstellung und Wirkung 1748 Filter-Faktor-Typen1749 Filter-Faktor für gleichmäßige Streuung: Einfache/Simple Prädikate 1750 Filter-Faktor für gleichmäßige Streuung: Interpolations-Formeln für Range-Prädikate 1750 Filter-Faktor für gleichmäßige Streuung: Default-Filter-Faktoren für Interpolation-Formeln (Input-Variablen) 1751 Filter-Faktor für ungleichmäßige Verteilung: Frequenz- (FREQVAL) und Werteverteilungs-Statistiken (KEYCARD) für Spalten oder Spalten-Gruppen 1752 Filter-Faktor für ungleichmäßige Verteilung: Häufigkeitsverteilung (HISTOGRAM) für Spalten oder Spalten-Gruppen 1752 Safe Query Optimization Technik (Index-Probing) STAGE1, STAGE2 und INDEXABLE 1753 1754 Indexable Prädikate 1757 Komplexe Prädikatvorgaben 1758 Column-Correlation1759 Reihenfolge der Prädikat-Bewertung 1760 Aufwands-Kalkulation der SQL-Anforderung 1761 Prozess-Kostenschätzung1761 Auswahl des Zugriffspfades 1761 IO-Kostenermittlung1762 Timeron1763 14.4 DB2-Zugriffspfade auf die Daten 14.4.1 Analysemöglichkeit der Zugriffspfade 1764 1764 Rahmenbedingungen1764 Komponenten der Zugriffspfad-Analyse 1765 EXPLAIN und EXPLAIN_TABLES 1767 Einsatz von Input-Variablen beim EXPLAIN 1768 Beeinflussung der Optimizer-Entscheidungen durch OPTHINT 1768 EXPLAIN-Beispiele1769 EXPLAIN eines einfachen SQL-Statements mit Analyse der PLAN_TABLE Analyse der DSN_STATMNT_TABLE 1769 1770 Analyse von dynamischen SQL-Statements aus dem Dynamic Statement Cache mit der DSN_STATEMENT_CACHE_TABLE EXPLAIN einer Package ohne REBIND 1771 1773 14.4.2 I/O-Zugriffs-Typ 1774 Sequential Prefetch und Dynamic Prefetch List Prefetch 1775 1776 Nutzung dieser Technik List-Prefetch im Index List-Prefetch auf Daten-Pages 1776 1776 1776 14.4.3 Einfache Zugriffspfade 1779 Tablespace Scan (File Page Set Scan) 1781 Index-Zugriffe1782 Matching Index Scan Non-Matching Index Scan Equal Unique Index Access IN-List Index Scan 1782 1784 1785 1786 Einzelne IN-Liste 1786 Mehrere IN-Listen 1787 One-Fetch Access Index-Only Access Range-List-Access (Aufsetzlogik, Inclusion-Methode, Blätter-Funktionalität, Pagination) © Copyright DGD GmbH Germany 65201 Wiesbaden 1788 1789 1790 DB2- Theorie und Praxis : Inhaltsverzeichnis XLVIII Multiple Index Access Multiple DocID Index Access über XML-Indizes 1791 1792 Direkt-Zugriff auf die Daten unter Umgehung von Indizes 1794 Einleitung und unterstützte Direkt-Zugriffs-Typen Direkter Zeilenzugriff über einen Unique Hash-Key Direkter Zeilen-Zugriff über die ROWID Direkter Zeilen-Zugriff über die RID-Funktion 1794 1795 1797 1798 14.4.4 Komplexe Zugriffspfade 1799 Übersicht1799 Join1800 Composite Table und New Table, Outer Table und Inner Table 1800 Ausweis von Joins in der PLAN_TABLE 1801 Join-Typ1802 Inner Join 1802 Outer Join 1803 Historische Entwicklung der Outer Joins 1805 Joins im Bereich des Data Warehouses: Star Join oder Paarweiser Join für Star-Schema und Snowflake-Schema 1807 Wann wird der Star Join genutzt? 1809 Ausweis eines Star Joins in der PLAN_TABLE 1810 Wann wird der Paarweise Join genutzt? 1811 Ausweis eines Paarweisen Joins in der PLAN_TABLE 1812 Klassische Join-Methoden 1813 Nested Loop Join 1813 Merge Scan Join 1816 Hybrid Join 1818 Komplexe Query-Typen 1820 Correlated und Non-Correlated Query-Typen 1820 Query-Block1821 Der Nummerierungs-Wahnsinn der QBLOCKNO 1821 Subquery1822 Non-correlated Subquery 1823 Correlated Subquery 1825 Table Expression 1827 Common Table Expression 1827 Rekursives SQL 1828 Nested Table Expression 1829 Scalar Full-Select SELECT FROM FINAL/OLD TABLE mit Data-Change-Statement 1830 1831 Set-Operator1833 Trigger-Package1834 Sortierung1835 Einige Worte zum Scrollable Cursor 1836 Parallel-Verarbeitung1837 Materialisierung1838 14.4.5 Spezielle Zugriffspfade 1839 IBM Smart Analytics Optimizer (Accelerator Server) 1839 Überblick1839 Technisches Konzept 1840 AQR - Automatic Query Rewrite bei Einsatz von MQTs (Materialisierte Query Tables) 1841 Überblick1841 Nutzungs-Potential von MQT und AQR 1845 © Copyright DGD GmbH Germany 65201 Wiesbaden DB2- Theorie und Praxis : Inhaltsverzeichnis Temporal Tables XLIX 1846 Einleitung1846 Bi-Temporal Table 1847 DDL-Beispiele für SEMTYP, REFERENT und SEMINAR (als Auszug aus dem Seminar-Daten-Modell) 1847 Explain-Analysen1849 Einfache SELECT-Statements 1849 Komplexe SELECT-Statements (Join über 3 Tabellen) 1851 BUSINESS_TIME1851 SYSTEM_TIME1852 Manipulations-Statements1854 14.4.6 Beeinflussung der Zugriffspfad-Entscheidungen 1855 Statement-Modifikationen durch den Optimizer 1856 Prädikat-Modifikationen und Einfügungen 1856 Materialisierungs-Entscheidung1856 Modifikationen der Join-Verarbeitung 1857 Regeln der Transformation von Subqueries in Join 1858 Transformation von Non-Correlated Subqueries in Correlated und umgekehrt 1858 Möglichkeiten für Anwendungsentwickler bei der Beeinflussung des Zugriffspfads 1859 Veränderung von Objekt-Strukturen Manipulation der Statistiken Umschreiben von SQL-Statements OPTIMIZE FOR n ROWS 1859 1862 1863 1865 BIND-Parameter REOPT und seine Auswirkungen 1866 14.5 Stabilität von Zugriffspfaden und Zugriffspfad-Repository (Access-Path-Repository) 14.5.1 Komponenten des Zugriffspfad-Repositories (Access-Path-Repository) 14.5.2 Zugriffspfad-Stabilität: Bewahrung bzw. Kontrolle vorhandener Zugriffspfade Komponenten der Zugriffspfad-Stabilität Kontrolle der Zugriffspfad-Stabilität Was tun bei Änderung des Zugriffspfads 1867 1868 1869 1869 1870 1871 14.5.3 Manuelle Zugriffspfad-Optimierung: Beeinflussung der Zugriffspfad-Entscheidung des Optimizers mittels Optimization-Hints (OPTHINT) 1872 Komponenten1872 Voraussetzungen zur Nutzung 1874 Prioritäten der Berücksichtigung von Optimization Hints 1874 Statement-Level Optimization Hint (Instance-based Statement Hint) - Nutzung des Zugriffspfad-Repositories (Access Path Repository) 1875 Statement-Level Optimization Hint (Instance-based Statement Hint): Parameter-Spezifikationen (Parameter Hints) Statement-Level Optimization Hint (Instance-based Statement Hint): Zugriffspfad-Empfehlungen (Access Path Hints) User-Level Optimization Hint: Vorgabe von Zugriffspfad-Empfehlungen für den Optimizer über die PLAN_TABLE (OPTHINT - Optimization Hints) 14.6 Zusammenfassung der relevanten Performance-Komponenten 14.6.1 DB2-interne Automatismen 1876 1878 1880 1883 1883 Zugriffspfad-Effizienz Mögliche Zugriffspfade 1883 1886 14.6.2 Systemgenerierungs- und Installations-Optionen 14.6.3 Objekt-Definitionen 14.6.4 Anwendungs-Design und -Programmierung 1887 1889 1891 SQL-Query-Empfehlungen1892 Was tun bei langlaufenden Statements? 1893 Zusammenfassende Empfehlungen für Anwendungs-Entwickler 1894 14.7 Testdaten für die Performance-Tests 1895 © Copyright DGD GmbH Germany 65201 Wiesbaden L DB2- Theorie und Praxis : Inhaltsverzeichnis 14.7.1 Physisches Daten-Modell für Performance-Tests 14.7.2 Metadaten-Übersicht der Test-Objekte 14.7.3 DDL für die Performance-Tests 14.7.4 Beispiel-SQL-Statements zur Einfügung der Daten 14.7.5 Beispiel-Ausdrucke der Tabellen 14.7.6 Beispiel-SQL-Statement zur Analyse der PLAN_TABLE für die Performance-Tests © Copyright DGD GmbH Germany 65201 Wiesbaden 1895 1896 1897 1900 1901 1903