mirror of
https://github.com/theoleuthardt/hwr-notes.git
synced 2026-06-06 02:31:08 +00:00
138 lines
5.1 KiB
Markdown
138 lines
5.1 KiB
Markdown
# 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 |
|