Oracle Database
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
...
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
- Zieldatendateien müssen vorhanden sein
- Datendatei wird mit Betriebssystembefehl kopiert
- anschliessend Tablespace online setzen
ALTER TABLESPACE userdata RENAME DATAFILE 'd:\prog\oracle\oradata\ora01\u01.dbf' TO 'd:\prog\oracle\oradata\ora02\u01.dbf';
Methode mit ALTER DATABASE (z. B. wenn SYSTEM-Tablespace verschoben werden muss)
- Datenbank herunterfahren
- Datendatei wird mit Betriebssystembefehl kopiert
- Datenbank in Modus MOUNT setzen
- Ausführen des Befehls "ALTER DATABASE RENAME FILE"
- Datenbank öffnen
ALTER DATABASE RENAME FILE 'd:\prog\oracle\oradata\ora01\u01.dbf' TO 'c:\prog\oracle\oradata\ora02\u01.dbf'
Löschen von Tablespaces
- erfolgt mit Befehl DROP TABLESPACE
- Tablespace SYSTEM kann nicht gelöscht werden