hwr-notes/Datenbanken/Zusammenfassungen/g_Speicherstrukturen - zusammenfassung.md
2026-04-09 11:24:56 +02:00

138 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Speicherstrukturen Zusammenfassung
**Dozent:** A. Zimmermann | HWR Berlin | 2026 | **Folien 111**
---
## 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 37)
### 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 810)
### System Global Area SGA (Folien 89)
| 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 |