# Speicherstrukturen – Zusammenfassung **Dozent:** A. Zimmermann | HWR Berlin | 2026 | **Folien 1–11** --- ## 1. Überblick (Folie 2) Oracle verwaltet eigene Speicherstrukturen auf dem **Datenträger** und im **Arbeitsspeicher** zwecks effizienter und konsistenter Datenbearbeitung. | Ort | Strukturen | |---|---| | **Datenträger** | Tablespaces, Datenbankdateien, Segmente, Redo-Log-Dateien | | **Arbeitsspeicher** | System Global Area (SGA), Program Global Area (PGA), User Global Area (UGA) | --- ## 2. Datenträger (Folien 3–7) ### Tablespace (Folie 3) Ein Tablespace enthält theoretisch mehrere **Tabellen** und **Indizes**, verteilt auf mehrere **Datenbankdateien**. ``` Tablespace ├── Tabelle A, Tabelle B, Tabelle C ├── Index D, Index E ├── Datenbankdatei 1 └── Datenbankdatei 2 ``` ### Hierarchie der Strukturen (Folie 4) Ein separates Tablespace ist für **jede Anwendung** gedacht (alle User, Tabellen, Indizes, Prozeduren). | Ebene | Beschreibung | |---|---| | **Datenbank** | Besteht aus mehreren **Tablespaces** | | **Tablespace** | Besteht aus mehreren **Datenbankdateien** | | **Datenbankdatei** | Besteht aus mehreren **Segmenten** (Extenten), zugeordnet zu Tabellen oder Indizes | | **Segment** | Besteht aus mehreren **Blöcken** | | **Block** | Kleinste Einheit, die gelesen/geschrieben werden kann | Ist eine Tabelle voll, kann sie durch ein **Segment (Extent)** erweitert werden. ### Logische vs. Physische Objekte (Folie 5) | Typ | Beispiele | |---|---| | **Logische Objekte** | Tabellen, Indizes, User, Prozeduren | | **Physische Objekte** | Tablespace, Datenbankdatei, Segment (Extent), Block | ### CREATE TABLE mit Storage-Klausel (Folie 5) ```sql CREATE TABLE T ( A INTEGER, B VARCHAR2(20) ) TABLESPACE myTabSpc STORAGE ( INITIAL 1M -- Anfangssegment NEXT 500K -- Extente (weitere Segmente) MINEXTENTS 1 -- minimale Anzahl der Segmente MAXEXTENTS 100 -- maximale Anzahl der Segmente PCTINCREASE 10 -- Größe der Segmente wächst um 10% ); ``` ### Tablespace-Verwaltung (Folie 6) ```sql -- Tablespace anzeigen SELECT * FROM user_tablespaces; SELECT * FROM dba_tablespaces; -- Tablespace erstellen CREATE TABLESPACE orion DATAFILE 'c:\oracle\oradata\ora\orion.dbf' SIZE 10M AUTOEXTEND ON NEXT 200K MAXSIZE 200M; -- Datenbankdatei hinzufügen ALTER TABLESPACE orion ADD DATAFILE 'c:\oracle\oradata\ora\orion2.dbf' SIZE 10M AUTOEXTEND ON NEXT 100K MAXSIZE 800M; -- Tablespace offline/online schalten ALTER TABLESPACE orion OFFLINE IMMEDIATE; ALTER TABLESPACE orion ONLINE; -- Einzelne Datenbankdateien offline/online ALTER DATABASE DATAFILE '...\orion3.dbf' OFFLINE DROP; ALTER DATABASE DATAFILE '...\orion4.dbf' ONLINE; ``` ### Rollback-Segmente und Redo-Log-Dateien (Folie 7) | Struktur | Funktion | |---|---| | **Rollback-Segmente** | Speichern Daten **vor** Änderungen; Anfragen lesen aus Rollback-Segmenten, solange Änderungen noch nicht COMMIT sind; in Oracle automatisch via **Undo-Management** im UNDO-Tablespace verwaltet | | **Redo-Log-Dateien** | Enthalten **schon durchgeführte** Änderungen; ermöglichen Nachvollziehen der gesamten Datenänderungsgeschichte; werden **zyklisch beschrieben** und automatisch archiviert | --- ## 3. Arbeitsspeicher (Folien 8–10) ### System Global Area – SGA (Folien 8–9) | Komponente | Beschreibung | |---|---| | **Database-Buffer-Cache** | Enthält Datenblöcke (z. B. Zeilen einer Tabelle), die angezeigt/geändert werden müssen; lädt mehrere Zeilen (auch benachbarte) für hohe Zugriffsgeschwindigkeit; wird von speziellen Algorithmen verwaltet (Verdrängung nicht benötigter Daten) | | **Dirty List** | Liste mit Blockadressen aus dem Database-Buffer-Cache, deren Daten **geändert** wurden; geänderte Blöcke werden nach COMMIT anhand der Dirty List in die Datenbank geschrieben | | **Redo-Log-Buffer** | Protokolliert Daten vom Database-Buffer-Cache für den Fall eines **unerwarteten Systemabsturzes** | | **Shared Pool** | Verarbeitet SQL-Anweisungen: Benutzerrechte prüfen, Existenz von Tabellen/Spalten prüfen, Syntax prüfen, Optimierung; nutzt Metadaten aus dem **Data Dictionary** (Tablespace SYSTEM) | | **Large Pool** | Speicherplatz für System-Komponenten wie z. B. **Recovery-Manager** | | **Java Pool** | Virtuelle Umgebung für **Java-Anwendungen** | ### Program Global Area – PGA (Folie 10) Beinhaltet Informationen, die für die **Steuerung der gesamten Oracle-Prozesse** notwendig sind. ### User Global Area – UGA (Folie 10) Beinhaltet Informationen, die einem **aktuell verbundenen Benutzer** zugeordnet sind (Sitzung). --- ## Zusammenfassung | Ebene | Struktur | Funktion | |---|---|---| | **Datenträger** | Tablespace | Container für Anwendungsdaten | | | Datenbankdatei | Physische Dateien im Tablespace | | | Segment/Extent | Erweiterbare Speichereinheit für Tabellen/Indizes | | | Block | Kleinste I/O-Einheit | | | Rollback-Segment | Daten vor Änderung (UNDO) | | | Redo-Log-Datei | Daten nach Änderung (REDO) | | **Arbeitsspeicher** | SGA | Globaler Speicher: Buffer-Cache, Dirty List, Redo-Log-Buffer, Shared Pool, Large Pool, Java Pool | | | PGA | Prozesssteuerung | | | UGA | Benutzer-Sitzungsdaten |