Oracle Database: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 343: Zeile 343:
* Datenbank öffnen
* Datenbank öffnen


Löschen von Tablespaces
=== Löschen von Tablespaces ===
* erfolgt mit Befehl DROP TABLESPACE
 
* erfolgt mit Befehl "DROP TABLESPACE tablespace"
* Tablespace SYSTEM kann nicht gelöscht werden
* Tablespace SYSTEM kann nicht gelöscht werden
* Löschen von Segmenten mit INCLUDING CONTENTS
* Löschen von Segmenten
* Löschen von Datendateien mit INCLUDING CONTENTS AND DATAFILES
DROP TABLESPACE userdata
  INCLUDING CONTENTS;
* Löschen von Datendateien (nur aus Sicht von Oracle - physisch sind sie noch da!)
  DROP TABLESPACE userdata
  DROP TABLESPACE userdata
   INCLUDING CONTENTS AND DATAFILES;
   INCLUDING CONTENTS AND DATAFILES;
* Löschen aller referentiellen Integritäts-Constraints mit CASCADE CONSTRAINTS
* Löschen aller referentiellen Integritäts-Constraints mit zusätzlichem "CASCADE CONSTRAINTS"
 
=== Anzeige von Informationen über Tablespaces ===
* DBA_TABLESPACES (Data Dictionary)
* V$TABLESPACE (select * from v$tablespace)


Anzeige von Informationen über Tablespaces
=== Anzeige von Informationen über Datendateien ===
* DBA_TABLESPACES
* DBA_DATA_FILES (Data Dictionary)
* V$TABLESPACE
* V$DATAFILE (select * from v$datafile)


Anzeige von Informationen über Datendateien
== Segmente ==
* DBA_DATA_FILES
* V$DATAFILE


Segmente
* sind die Objekte, die einem Tablespace zugewiesen werden können
* sind die Objekte, die einem Tablespace zugewiesen werden können
* beispielsweise Tabellen, Indizes, Views, Undo-Daten usw.
* beispielsweise Tabellen, Indizes, Views, Undo-Daten usw.


Storage-Klausel
Storage-Klausel (wichtig nur bis Oracle Database 8)
* Auf Segmentebene kann in einer Storage-Klausel angegeben werden, wie Extents einem Segment zugeordnet werden
* Auf Segmentebene kann in einer Storage-Klausel angegeben werden, wie Extents einem Segment zugeordnet werden
* Alle auf Segmentebene festgelegten Speicherparameter setzen die auf Tablespace-Ebene eingestellten Optionen ausser Kraft (ausser MINIMUM EXTENT und UNIFORM SIZE)
* Alle auf Segmentebene festgelegten Speicherparameter setzen die auf Tablespace-Ebene eingestellten Optionen ausser Kraft (ausser MINIMUM EXTENT und UNIFORM SIZE)


Extents
== Extents ==
 
* Speicherbereiche bestimmter Grösse, die einem Segment zugewisen werden
* Speicherbereiche bestimmter Grösse, die einem Segment zugewisen werden
* ein Segment besteht aus einem oder mehreren Extents
* ein Segment besteht aus einem oder mehreren Extents


Extent-Zuweisung und -Freigabe
=== Extent-Zuweisung und -Freigabe ===
 
* ein Extent ist ein von einem Segment belegter Speicherplatzbereich
* ein Extent ist ein von einem Segment belegter Speicherplatzbereich
* Zuweisung bei Erstellung, Erweiterung oder Änderung des Segments
* Zuweisung bei Erstellung, Erweiterung oder Änderung des Segments
* Freigabe bei Löschung, Änderung oder Leeren eines Segments
* Freigabe bei Löschung, Änderung oder Leeren eines Segments


Datenblock
== Datenblock ==
 
* kleinste Ein- bzw. Ausgabeeinheit
* kleinste Ein- bzw. Ausgabeeinheit
* besteht aus einem oder mehreren Betriebssystemblöcken und wird durch den Parameter DB_BLOCK_SIZE bestimmt
* besteht aus einem oder mehreren Betriebssystemblöcken und wird durch den Parameter "DB_BLOCK_SIZE" bestimmt
* jedes Extent besteht aus Datenbankblöcken, die in den meisten Implementierungen 2 bis 8 KB gross sind
* jedes Extent besteht aus Datenbankblöcken von einer Grösse von 2, 4, 8, 16 oder 32 KB (anstatt einer grösseren Blockgrösse wäre zur Verbesserung der Performance auch ein zweiter DB-Buffer in Betracht zu ziehen)
* eine Datenbank kann mit einer Standardblockgrösse und bis zu vier Nicht-Standardblockgrössen erstellt werden
 
=== Inhalt eines Datenbankblocks ===
 
* der Block-Header enthält Datenbankblockadresse, Tabellenverzeichnis, Zeilenverzeichnis und Transaktionseinträge
** Der Datentyp varchar2() ist vorsichtig zu verwenden!
* im Datenspeicherplatz werden Zeilen von unten nach oben in den Block eingefügt
* freier Speicherplatz befindet sich in der Mitte des Blocks


Standardblockgrösse
Für Daten- und Indexsegmente kann die Speicherplatznutzung über Parameter für die Blocknutzung (auf Tabellenebene) gesteuert werden:
* wird beim Erstellen der Datenbank mit dem Parameter DB_BLOCK_SIZE festgelegt
* INITTRANS: anfängliche Anzahl der Transaktionseinträge
* MAXTRANS: maximale Anzahl der Transaktionseinträge
* PCTFREE: Grösse des für das Wachstum bestehender Zeilen reservierten Speicherplatzes (von oben her; Standard 10%)
* PCTUSED: anzustrebender Mindestfüllgrad (von unten her; Standard 40%)
 
Ansehen der aktuellen Werte über "Administration > Schema: Datenbankobjekte > Tabellen > Erstellen > Speicherung".
 
=== Standardblockgrösse ===
 
* wird beim Erstellen der Datenbank mit dem Parameter "DB_BLOCK_SIZE" festgelegt
* kann nicht geändert werden, ohne die Datenbank neu zu erstellen
* kann nicht geändert werden, ohne die Datenbank neu zu erstellen
* wird für den SYSTEM-Tablespace und die TEMPORARY-Tablespaces verwendet
* wird für den SYSTEM-Tablespace und die TEMPORARY-Tablespaces verwendet
* Der Parameter DB_CACHE_SIZE gibt die Grösse für die Standard-Blockgrösse an:
* Der Parameter DB_CACHE_SIZE gibt die Grösse für die Standard-Blockgrösse an:
** die Mindestgrösse ist ein Granulat (4 oder 16 MB)
** die Mindestgrösse ist ein Granulat (4 MB - oder 16 MB, falls SGA grösser als 100 MB ist)
** Standardwert ist 48 MB
** Standardwert ist 48 MB


Unterstützung verschiedener Blockgrössen
=== Nicht-Standardblockgrösse ===
* eine Datenbank kann mit einer Standardblockgrösse und bis zu vier Nicht-Standardblockgrössen erstellt werden
* die Blockgrösse kann eine beliebige Potenz von 2 zwischen 2 und 32 KB sein


Nicht-Standardblockgrösse
* Zusätzliche Caches können mit folgenden dynamischen Parametern erstellt werden:
* Zusätzliche Caches können mit folgenden dynamischen Parametern erstellt werden:
** DB_2K_CACHE_SIZE für 2 KB-Blöcke
** DB_2K_CACHE_SIZE für 2 KB-Blöcke
** DB_4K_CACHE_SIZE für 4 KB-Blöcke
** DB_8K_CACHE_SIZE für 8 KB-Blöcke
** DB_16K_CACHE_SIZE für 16 KB-Blöcke
** DB_32K_CACHE_SIZE für 32 KB-Blöcke
** DB_32K_CACHE_SIZE für 32 KB-Blöcke
* DB_<i>n</i>K_CACHE ist nicht zulässig, wenn <i>n</i>K die Standardblockgrösse ist
* DB_<i>n</i>K_CACHE ist nicht zulässig, wenn <i>n</i>K die Standardblockgrösse ist
Zeile 408: Zeile 432:
   SIZE 10M BLOCKSIZE 4K;
   SIZE 10M BLOCKSIZE 4K;


Inhalt eines Datenbankblocks
* der Block-Header enthält Datenbankblockadresse, Tabellenverzeichnis, Zeilenverzeichnis und Transaktionseinträge
* im Datenspeicherplatz werden Zeilen von unten nach oben in den Block eingefügt
* freier Speicherplatz befindet sich in der Mitte des Blocks


Für Daten- und Indexsegmente kann die Speicherplatznutzung über Parameter für die Blocknutzung gesteuert werden:
* INITTRANS: anfängliche Anzahl der Transaktionseinträge
* MAXTRANS: maximale Anzahl der Transaktionseinträge
* PCTFREE: Grösse des für das Wachstum reservierten Speicherplatzes
* PCTUSED: anzustrebender Mindestfüllgrad


Anzeige von Speicherinformationen über folgende Views:
Anzeige von Speicherinformationen über folgende Views:

Version vom 22. Juni 2010, 12:09 Uhr

Notizen vom Kurs "Oracle Administration" 21.-25. Juni 2010

Oracle Universal Installer

  • wird zum Installieren, Aktualisieren oder Deinstallieren von Softwarekomponenten und zum Erstellen einer Datenbank verwendet
  • basiert auf einer Java-Engine

Oracle Database Configuration Assistant

  • Datenbank erstellen
  • Datenbankoptionen konfigurieren
  • Datenbanken löschen
  • Templates verwalten

SQL *Plus

  • Aufruf über
    • Administration > Zugehörige Links > iSQL*Plus (Anmelden als Benutzer "SYSTEM" mit Passwort "miro")
    • Start > Programme > Oracle > Anwendungsentwicklung > SQL Plus
    • über Befehlszeile: "sqlplus system/miro" (Benutzername/Passwort)
  • Oracle-Werkzeug, das folgendes ermöglicht:
    • Dialog und Manipulation von Datenbanken (z. B. "select sysdate from dual;", Skript laden, Skript speichern, Historie)
    • Hoch- und Herunterfahren von Datenbanken, Erstellung von Abfragen, Hinzufügen von Zeilen usw.
  • Ist eine Teilmenge der SQL-Standardsprache mit speziellen Ergänzungen

Oracle Enterprise Manager (Database Control)

  • http://<Rechnername>:1158/em
  • vordefinierter Benutzer "SYS" (Passwort "miro", anmelden als "SYSDBA") bzw. benutzer "SYSTEM" (Passwort "miro")
  • dient als zentralisierte Systemverwaltung für Systemverwalter
  • Werkzeug für Verwaltung, Diagnose und Optimierung mehrerer Datenbanken
  • Werkzeug zum Verwalten mehrerer Netzwerkknoten und -dienste von verschiedenen Standorten aus

Oracle Server

  • ein Datenbank-Management-Syste, das einen offenen, umfassenden und integrierten Ansatz für die Informationsverwaltung bereitstellt
  • besteht aus einer Oracle-Instanz und einer Oracle-Datenbank

Oracle-Instanz

  • dient dazu, um auf eine Oracle-Datenbank zuzugreifen
  • öffnet immer genau eine Datenbank. Es können auch mehrere Instanzen auf dieselbe Datenbank zugreifen, eine Instanz kann aber nie auf mehr als eine Datenbank zugreifen.
  • besteht aus Speicher- und Hintergrundprozess-Strukturen

Oracle-Datenbank

  • ist eine Zusammenstellung von Daten, die als Einheit betrachtet werden
  • besteht aus drei Dateitypen:
    • Datendateien
    • Kontrolldateien
    • Redo Log-Dateien (für Transaktionen)
  • weitere Dateistrukturen:
    • Parameterdatei (enthält die Eigenschaften der Oracle-Instanz)
    • archivierte Redo Log-Dateien (Kopien der Redo Log-Dateien, sofern die Datenbank im Archiver-Modus läuft)
    • Passwortdatei (enthält die Benutzer, welche die Oracle-Instanz hoch- und herunterfahren können)


...

Dynamische Performance-Tabellen

  • V$CONTROLFILE
  • V$DATAFILE
  • V$PARAMETER
  • V$SGA
  • V$TABLESPACE

Kontrolldatei

  • Kleine binäre Datei
  • Definiert den aktuellen Status der aktuellen Datenbank
  • Erforderlich im Status "MOUNT" beim Hochfahren der Datenbank
  • Ein Verlust kann "Recovery" notwendig machen
  • Ist mit einer ganz bestimmten Datenbank verknüpft
  • Die Kontrolldatei sollte redundant gesichert werden über "Administration > Datenbankverwaltung > Speicherung > Kontrolldateien" gesichert werden.

Inhalt

  • Datenbankname
  • Zeitstempel der Datenbankerstellung
  • Namen und Speicherorte von Datendateien und Redo Log-Dateien
  • Aktuelle Sequenznummer der Redo Log-Datei
  • Checkpoint-Informationen
  • Backup-Informationen (z. B. des Recovery Manager)

Spiegeln der Kontrolldatei bei Verwendung von SPFILE

  • Änderung von SPFILE (unter Angabe der bestehenden sowie der neuen Kontrolldatei)
ALTER SYSTEM SET control_files=... SCOPE = SPFILE;
  • Herunterfahren der Datenbank
shutdown immediate
  • Erstellung zusätzlicher Kontrolldateien durch Kopieren der Kontrolldatei
  • Hochfahren der Datenbank
startup;

Spiegeln der Kontrolldatei bei Verwendung von PFILE

  • Herunterfahren der Datenbank
shutdown immediate
  • Erstellung zusätzlicher Kontrolldateien durch Kopieren der Kontrolldatei
  • Hinzufügen der Kontrolldateinamen zu PFILE durch Bearbeiten des Parameters "CONTROL_FILES"
CONTROL_FILES=...;
  • Hochfahren der Datenbank
startup pfile='c:\oracle\init.ora';

Abrufen der Kontrolldatei-Informationen

  • grafische Oberfläche unter "Administration > Datenbankverwaltung > Speicherung > Kontrolldateien"
  • Auflisten von Namen und Status für alle Kontrolldateien der Instanz auf
select * from v$controlfile;
  • Auflisten von Namen, Status und Speicherort der Kontrolldateien
show parameter control_files;

Verwendung von Redo Log-Dateien

Redo Log-Dateien

  • erfassen alle an den Daten vorgenommenen Änderungen
  • stellen einen Recovery-Modus bereit
  • können in Gruppen organisiert werden, wobei mindestens zwei Gruppen benötigt werden, unter "Administration > Datenbankverwaltung > Speicherung > Redo Log-Gruppen"

Funktionsweise

  • Redo Log-Dateien werden in zyklischer Weise verwendet
  • Ist eine Redo Log-Datei voll, so wechselt LGWR zur nächsten Redo Log-Gruppe
    • Dies wird als Log-Switch bezeichnet
    • Checkpoint-Vorgang tritt ebenfalls ein
    • Informationen werden in die Kontrolldatei geschrieben

Mögliche Statusangaben

  • Current: In diese wird gerade hineingeschrieben
  • Active: enthalten Logeinträge, die noch im DB-Buffer enthalten sind (würde also für ein Instance Recovery benötigt)
  • Inactive:

Log-Switch erzwingen

ALTER SYSTEM SWITCH LOGFILE;

Checkpoint erzwingen (z. B. in SQL-Skripten; auf der Konsole macht es wenig Sinn)

ALTER SYSTEM CHECKPOINT;

Hinzufügen von Redo Log-Gruppen mit dem Befehl "ALTER DATABASE" unter Angabe der "Members". Die Redo Log-Dateien sollten nicht allzu klein sein. Beispiel:

ALTER DATABASE
  ADD LOGFILE GROUP 3 ('c:\verzeichnis\u01\log3a.rdo', 'd:\ORADATA\u01\log3b.rdo) SIZE 50M;

Abruf von Informationen über Gruppen und Member über folgende Views:

  • V$LOG
  • V$LOGFILE

Archivierte Redo Log-Dateien

  • Gefüllte Online Redo Log-Dateien können archiviert werden
  • Datenbank muss sich im Modus "ARCHIVELOG" befinden
  • Zweck: Wiederherstellung der Datenbank bei Ausfall einer Festplatte
  • Archivierung erfolgt automatisch durch ARCn
  • Bei erfolgreicher Archivierung:
    • wird ein Eintrag in die Kontrolldatei geschrieben
    • werden der Name der archivierten Log-Datei, die Log-Sequenznummer sowie die erste und letzte SCN erfasst

Tablespace und Datendateien

Oracle speichert Daten logisch in Tablespaces und physisch in Datendateien.

Tablespaces

  • gehören immer nur zu einer Datenbank
  • bestehen aus einer oder mehreren Datendateien
  • werden weiter unterteilt in logische Einheiten

Datendateien

  • gehören immer nur zu einem Tablespace
  • sind ein Repositoiry für Schemaobjektdaten

...Bild logische und physische Sicht...

Arten von Tablespaces:

SYSTEM-Tablespace (Löschen ist nicht möglich)

  • wird mit einer Datenbank erstellt
  • enthält das Data Dictionary
  • enthält das SYSTEM-Undo-Segment

Non-System-Tablespace

  • ermöglicht die Speicherung verschiedener Segmente
  • erleichtert die Speicherverwaltung
  • steuert die einem Benutzer zugeordnete Speichermenge (Quota)

Erstellen über Administration > Datenbankverwaltung: Speicherung > Tablespaces > Erstellen"

Befehl "CREATE TABLESPACE"

CREATE TABLESPACE tablespace
  [DATAFILE clause]
  [MINIMUM EXTEND integer[K|M]]
  [BLOCKSIZE integer [K]]
  [LOGGING|NOLOGGING]
  [DEFAULT storage_clause]
  [ONLINE|OFFLINE]
  [PERMANENT|TEMPORARY]
  [extent_management_clause]
  [segment_managment_clause]
  

Erstellen eines Tablespace mit dem Befehl "CREATE TABLESPACE", wobei der Pfad zur angegebenen Datendatei bereits vorhanden sein muss. Üblicherweise liegen die Dateien unter "c:\oracle\product\10.2.0\oradata\<Rechnername>". Beispiel:

CREATE TABLESPACE userdata
  DATAFILE 'c:\u01\oradata\data01.dbf' SIZE 100M
  AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

Einem Tablespace können weitere Datendateien hinzugefügt werden. Beispiel:

ALTER TABLESPACE tb1
  ADD DATAFILE 'c:\u01\oradata\data02.dbf' SIZE 200M;

Löschen eines Tablespace, dabei wird die zugehörige Datendatei allerdings nicht gelöscht:

DROP TABLESPACE userdata;

Ansehen der vorhandenen Tablespaces unter "Administration > Datenbankverwaltung > Speicherung > Tablespaces". Ansicht der physischen Sicht unter "Datendateien".

Speicherverwaltung in Tablespaces:

  • Lokal verwalteter Tablespace
    • freie Extents werden in Tablespace verwaltet
    • Bitmap wird zur Erfassung freier Extents verwendet
  • Vom Dictionary verwalteter Tablespace
    • freie Extents werden durch das Data Dictionary verwaltet

EXTENT MANAGEMENT-Klausel

[EXTENT MANAGEMENT [DICTIONARY|LOCAL [AUTOALLOCATEUNIFORM [SIZE integer [K|M]]]]]
  • AUTOALLOCATE: Tablespace wird vom System verwaltet, Benutzer kann Extent-Grösse nicht selber festlegen
  • UNIFORM: Tablespace wird mit einheitlichen Extents der Grösse "SIZE" Byte verwaltet

Lokal verwaltete Tablespaces (neu)

  • Verringerung der Konflikte beim Zugriff auf Data Dictionary-Dateien
  • Keine Zusammenführung von freiem Speicherplatz erforderlich
  • Beispiel:
CREATE TABLESPACE userdata
  DATAFILE 'd:\prog\oracle\oradata\ora01\data01.dbf' SIZE 100M
  EXTENT MANAGEMENT LOCAL
  UNIFORM SIZE 128K;

Vom Data Dictionary verwaltete Tablespaces (alt bis Oracle 8, sollte nicht verwendet werden!)

  • Extents werden im Data Dictionary verwaltet
  • Jedes Segment kann über eine unterschiedliche STORAGE-Klausel verfügen
  • Beispiel:
CREATE TABLESPACE userdata
  DATAFILE 'd:\prog\oracle\oradata\ora01\data01.dbf' SIZE 100M
  EXTENT MANAGEMENT DICTIONARY
  DEFAULT STORAGE
  (initial 1M NEXT 1M PCTINCREASE 0);

Undo-Tablespace

  • dient zur Speicherung von Undo-Segmenten, die gerade bearbeitete Tabelleninhalte speichern
  • kann keine anderen Objekte enthalten
  • Extents werden lokal verwaltet
  • Beispiel:
CREATE UNDO TABLESPACE userdata
  DATAFILE 'd:\prog\oracle\oradata\ora01\data01.dbf' SIZE 100M;

Temporäre Tablespaces

  • werden für Sortiervorgänge verwendet (DISTINCT, ORDER BY, GROUP BY, UNION...)
  • dürfen keine permanenten Objekte enthalten
  • es wird empfohlen, Extents lokal zu verwalten
  • Beispiel:
CREATE TEMPORARY TABLESPACE temp
  DATAFILE 'd:\prog\oracle\oradata\ora01\data01.dbf' SIZE 100M
  EXTENT MANAGEMENT LOCAL
  UNIFORM SIZE 4M;

Temporärer Tablespace als Default

  • gibt für die gesamte Datenbank gültigen temporären Tablespace als Default an
  • verhindert, dass der SYSTEM-Tablespace zum Speichern temporärer Daten verwendet wird, was die Performance verringern würde
  • kann nur gelöscht werden, wenn zuvor ein neuer Default-Tablespace verfügbar gemacht wurde
  • kann nicht offline gesetzt werden
  • kann nicht in einen permanenten Tablespace geändert werden
ALTER DATABASE
  DEFAULT TEMPORARY TABLESPACE temp;

Tablespaces können in den Modus "READ ONLY" gesetzt werden.

  • Löst einen Checkpoint aus
  • Daten sind nur für Lesevorgänge verfügbar
  • Objekte können aus Tablespace gelöscht werden
  • Beispiel:
ALTER TABLESPACE userdata READ ONLY;

Tablespace offline setzen

  • nicht verfügbar für den Datenzugriff
  • Folgende Tablespaces können nicht offline gesetzt werden:
    • SYSTEM-Tablespace
    • Tablespaces mit aktiven Undo-Segmenten
ALTER TABLESPACE tablespace
  [ONLINE|OFFLINE [NORMAL|IMMEDIATE|TEMPORARY]]
  • NORMAL: leert alle Blöcke aus der SGA, kein Media-Recovery (die Standardoption)
  • IMMEDIATE: kein Checkpoint, gegebenenfalls ist ein Media Recovery erforderlich
  • TEMPORARY: lert alle Blöcke für Dateien, die online sind, gegebenenfalls ist ein Media Recovery erforderlich

Beispiel:

ALTER TABLESPACE userdata OFFLINE;

Tablespace online setzen:

ALTER TABLESPACE userdata ONLINE;

Änderung der Grösse eines Tablespace ist auf zwei Arten möglich:

  • durch Änderung der Grösse der Datendatei
    • automatisch mit der Klausel "AUTOEXTEND ON", sodass nur eine Datendatei benötigt wird. Beispiel:
CREATE TEMPORARY userdata
  DATAFILE 'd:\prog\oracle\oradata\ora01\data01.dbf' SIZE 200M
  AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
  • manuelles Hinzufügen einer Datendatei mit ALTER TABLESPACE, wobei die Datendatei vergrösser oder verkleinert werden kann
    • Nicht belegter Speicherplatz wird in der Datenbank freigegeben
    • Beispiel:
ALTER DATABASE
  DATAFILE 'd:\prog\oracle\oradata\ora01\userdata02.dbf'
  RESIZE 200M;

Hinzufügen einer Datendatei zu Tablespace

  • vergrössert den Tablespace durch Hinzufügen weiterer Datendateien (dadurch wird der Eintrag in der Kontrolldatei verändert)
  • Hinzufügen der Datendatei mit der KLausel "ADD DATAFILE"
  • Beispiel:
ALTER TABLESPACE
  ADD DATAFILE 'd:\prog\oracle\oradata\ora01\userdata02.dbf' SIZE 200M;

Methode mit ALTER TABLESPACE

  • Tablespace muss offline sein (ALTER TABLESPACE userdata OFFLINE;)
  • Zieldatendateien müssen vorhanden sein
  • Datendatei wird mit Betriebssystembefehl kopiert
  • Änderung
ALTER TABLESPACE userdata RENAME
  DATAFILE 'c:\u01\oradata\data01.dbf'
  TO 'c:\u02\oradata\data01.dbf';
  • anschliessend Tablespace online setzen (ALTER TABLESPACE userdata online)

Methode mit ALTER DATABASE (z. B. wenn SYSTEM-Tablespace verschoben werden muss)

  • Datenbank herunterfahren (shutdown immediate;)
  • Datendatei wird mit Betriebssystembefehl kopiert
  • Datenbank in Modus MOUNT setzen
  • Ausführen des Befehls "ALTER DATABASE RENAME FILE"
ALTER DATABASE RENAME
  FILE 'd:\prog\oracle\oradata\ora01\u01.dbf'
  TO 'c:\prog\oracle\oradata\ora02\u01.dbf'
  • Datenbank öffnen

Löschen von Tablespaces

  • erfolgt mit Befehl "DROP TABLESPACE tablespace"
  • Tablespace SYSTEM kann nicht gelöscht werden
  • Löschen von Segmenten
DROP TABLESPACE userdata
  INCLUDING CONTENTS;
  • Löschen von Datendateien (nur aus Sicht von Oracle - physisch sind sie noch da!)
DROP TABLESPACE userdata
  INCLUDING CONTENTS AND DATAFILES;
  • Löschen aller referentiellen Integritäts-Constraints mit zusätzlichem "CASCADE CONSTRAINTS"

Anzeige von Informationen über Tablespaces

  • DBA_TABLESPACES (Data Dictionary)
  • V$TABLESPACE (select * from v$tablespace)

Anzeige von Informationen über Datendateien

  • DBA_DATA_FILES (Data Dictionary)
  • V$DATAFILE (select * from v$datafile)

Segmente

  • sind die Objekte, die einem Tablespace zugewiesen werden können
  • beispielsweise Tabellen, Indizes, Views, Undo-Daten usw.

Storage-Klausel (wichtig nur bis Oracle Database 8)

  • Auf Segmentebene kann in einer Storage-Klausel angegeben werden, wie Extents einem Segment zugeordnet werden
  • Alle auf Segmentebene festgelegten Speicherparameter setzen die auf Tablespace-Ebene eingestellten Optionen ausser Kraft (ausser MINIMUM EXTENT und UNIFORM SIZE)

Extents

  • Speicherbereiche bestimmter Grösse, die einem Segment zugewisen werden
  • ein Segment besteht aus einem oder mehreren Extents

Extent-Zuweisung und -Freigabe

  • ein Extent ist ein von einem Segment belegter Speicherplatzbereich
  • Zuweisung bei Erstellung, Erweiterung oder Änderung des Segments
  • Freigabe bei Löschung, Änderung oder Leeren eines Segments

Datenblock

  • kleinste Ein- bzw. Ausgabeeinheit
  • besteht aus einem oder mehreren Betriebssystemblöcken und wird durch den Parameter "DB_BLOCK_SIZE" bestimmt
  • jedes Extent besteht aus Datenbankblöcken von einer Grösse von 2, 4, 8, 16 oder 32 KB (anstatt einer grösseren Blockgrösse wäre zur Verbesserung der Performance auch ein zweiter DB-Buffer in Betracht zu ziehen)
  • eine Datenbank kann mit einer Standardblockgrösse und bis zu vier Nicht-Standardblockgrössen erstellt werden

Inhalt eines Datenbankblocks

  • der Block-Header enthält Datenbankblockadresse, Tabellenverzeichnis, Zeilenverzeichnis und Transaktionseinträge
    • Der Datentyp varchar2() ist vorsichtig zu verwenden!
  • im Datenspeicherplatz werden Zeilen von unten nach oben in den Block eingefügt
  • freier Speicherplatz befindet sich in der Mitte des Blocks

Für Daten- und Indexsegmente kann die Speicherplatznutzung über Parameter für die Blocknutzung (auf Tabellenebene) gesteuert werden:

  • INITTRANS: anfängliche Anzahl der Transaktionseinträge
  • MAXTRANS: maximale Anzahl der Transaktionseinträge
  • PCTFREE: Grösse des für das Wachstum bestehender Zeilen reservierten Speicherplatzes (von oben her; Standard 10%)
  • PCTUSED: anzustrebender Mindestfüllgrad (von unten her; Standard 40%)

Ansehen der aktuellen Werte über "Administration > Schema: Datenbankobjekte > Tabellen > Erstellen > Speicherung".

Standardblockgrösse

  • wird beim Erstellen der Datenbank mit dem Parameter "DB_BLOCK_SIZE" festgelegt
  • kann nicht geändert werden, ohne die Datenbank neu zu erstellen
  • wird für den SYSTEM-Tablespace und die TEMPORARY-Tablespaces verwendet
  • Der Parameter DB_CACHE_SIZE gibt die Grösse für die Standard-Blockgrösse an:
    • die Mindestgrösse ist ein Granulat (4 MB - oder 16 MB, falls SGA grösser als 100 MB ist)
    • Standardwert ist 48 MB

Nicht-Standardblockgrösse

  • Zusätzliche Caches können mit folgenden dynamischen Parametern erstellt werden:
    • DB_2K_CACHE_SIZE für 2 KB-Blöcke
    • DB_4K_CACHE_SIZE für 4 KB-Blöcke
    • DB_8K_CACHE_SIZE für 8 KB-Blöcke
    • DB_16K_CACHE_SIZE für 16 KB-Blöcke
    • DB_32K_CACHE_SIZE für 32 KB-Blöcke
  • DB_nK_CACHE ist nicht zulässig, wenn nK die Standardblockgrösse ist
  • die Mindestgrösse für jeden Cache ist ein Granulat

Erstellung von Tablespaces mit Nicht-Standardblockgrösse

  • Verwendung der BLOCKSIZE-Klausel zum Festlegen einer Nicht-Standardblockgrösse
CREATE TABLESPACE tbs_1
  DATAFILE 'c:\oracle\oradata\tbs_1.dbf'
  SIZE 10M BLOCKSIZE 4K;


Anzeige von Speicherinformationen über folgende Views:

  • DBA_EXTENTS
  • DBA_SEGMENTS
  • DBA_DATA_FILES