Oracle: Datenbank starten
Verwalten der Datenbank-Instanz
BearbeitenEine Oracle-Datenbank besteht aus den Dateien und einem Programm, das im Arbeitsspeicher aktiv ist. Das aktive Programm bezeichnet man auch als Oracle-Instanz.
Die Instanz kann gestartet werden
- mit dem Enterprise Manager
- dem SQL*Plus-Befehl STARTUP
- bei Windows durch Starten der Dienste
Beim Starten der Instanz werden verschiedene Zustände durchlaufen:
- SHUTDOWN
- NOMOUNT
- MOUNT
- OPEN
Diese Zustände können alle nacheinander durchlaufen werden bis zum Status OPEN, in dem die Instanz die normale Arbeit ausführen kann. Man kann die Status auch einzeln durchlaufen, um bestimmte administrative Arbeiten ausführen zu können.
Der aktuelle Status der Datenbank kann ermittelt werden mit dem Befehl:
select status from v$instance;
DB-Status SHUTDOWN
BearbeitenSowohl die physische Datenbank, als auch die Instanz ist heruntergefahren.
In diesem Zustand kann sich nur ein User als SYSDBA anmelden. Die Anmeldung wird bestätigt mit der Meldung:
Bei einer nicht hochgefahrenen Instanz angemeldet.
Zum Hochfahren der Datenbank müssen noch drei weitere Phasen durchlaufen werden:
Zustand NOMOUNT
Zustand MOUNT
Zustand OPEN
Eine gestoppte Datenbank kann komplett hochgefahren werden (und alle Phasen des Start-Prozesses durchlaufen) mit dem Befehl:
startup
oder
startup normal
DB-Status NOMOUNT
BearbeitenEine Database kann vom Administrator in verschiedene Status versetzt werden:
Der erste Schritt zum Starten einer Datenbank ist das Starten der Instanz im Zustand NOMOUNT.
Startup nomount
In diesem Zustand ist die Instanz hochgefahren, hat aber noch keine Verbindung zur physischen Database aufgenommen.
Nur in diesem Zustand kann eine neue Datenbank erstellt werden.
In diesem Zustand sind nur Befehle zulässig, die auf keine Datenbank-Dateien zugreifen:
show sga;
Total System Global Area 73701404 bytes Fixed Size 75804 bytes Variable Size 56770560 bytes Database Buffers 16777216 bytes Redo Buffers 77824 bytes
Folgende Dictionary-Views sind selektierbar:
v$controlfile v$instance v$option v$parameter v$session v$sga v$version
DB-Status MOUNT
BearbeitenUm die physische Datenbank zu öffnen, wird sie in den Status MOUNT versetzt.
Wenn die Database im Zustand SHUTDOWN ist, dann kann sie in den Status MOUNT gebracht werden durch den Befehl:
startup mount
Wenn die Database im Zustand NOMOUNT ist, dann kann sie in den Status MOUNT gebracht werden durch den Befehl:
alter database mount
Um die Datenbank in den Zustand MOUNT zu versetzen, müssen die Controldateien gelesen werden, um zu ermitteln, welche Dateien zur physischen Datenbank gehören.
Falls die Control-Dateien nicht gefunden werden oder inkonsistent sind, dann kann die Datenbank nicht in den MOUNT-Zustand versetzt werden.
In diesem Zustand sind weitere Dictionary-Views selektierbar:
v$database v$controlfile v$datafile v$logfile v$datafile_header
Zugriffe auf die Benutzer- oder Dictionary-Tabellen ist in diesem Zustand noch nicht möglich
DB-Status OPEN
BearbeitenUm das reguläre Arbeiten mit der Datenbank zu ermöglichen, muss die Datenbank noch geöffnet werden.
Wenn die Database im Zustand SHUTDOWN ist, dann kann sie in den Status OPEN gebracht werden durch den Befehl:
STARTUP OPEN
Wenn die Datenbank im Zustand NOMOUNT oder MOUNT ist, dann kann sie in den Status OPEN gebracht werden durch den Befehl:
ALTER DATABASE OPEN
Erst jetzt sind die Benutzer- und Dictionary-Tabellen zugreifbar. Nur in diesem Zustand können sich User ohne SYSDBA-Privileg an der Datenbank anmelden.
Ist eine Datenbank aus einem Onlinebackup zurückgespielt worden, werden die ArchivedRedoLogs mit
RECOVER DATABASE
in die Datenbank eingepflegt. Sind alle ArchivedRedoLogs eingepflegt, muss die Datenbank noch mit
ALTER DATABASE OPEN RESETLOGS
geöffnet werden. Da die OnlineRedoLogs nicht mehr aktuell sind, müssen sie neu initialisiert werden.
Weitere Startmöglichkeiten
BearbeitenSTARTUP FORCE
Entspricht einem SHUTDOWN ABORT und anschließendem STARTUP NORMAL
STARTUP RECOVER
Öffnen der Datenbank nach vorherigem Recover
STARTUP READ ONLY
Öffnen der Datenbank nur für Lese-Operationen.
DB-Status RESTRICT
BearbeitenUm Wartungsarbeiten an der Datenbank auszuführen, kann die Datenbank im Zustand RESTRICT geöffnet werden. Dieser Zustand ist derselbe, wie der OPEN-Zustand, aber es dürfen sich nur User mit dem Systemprivileg "restricted Session" anmelden.
STARTUP RESTRICT
Voraussetzung: Die Datenbank muss im Zustand SHUTDOWN sein. Sie wird nun hochgefahren in den OPEN Zustand. Der Administrator kann jetzt auf alle Tabellen zugreifen, aber ein Anmelden anderer Benutzer ist ausgeschlossen. Genauer ausgedrückt: Nur Benutzer mit dem Systemprivileg "restricted session" können sich jetzt anmelden.
"Normale" Benutzer, die sich in diesem Zustand anmelden wollen, erhalten die Fehlermeldung:
ERROR: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
Falls die Datenbank aus dem laufenden Betrieb in den RESTRICT-Zustand versetzt werden soll, dann kann das mit dem folgenden Befehl geschehen:
ALTER SYSTEM ENABLE RESTRICTED SESSION
Achtung: Falls jedoch noch andere Benutzer noch mit der Datenbank verbunden sind, dann werden diese Verbindungen nicht getrennt. Nur Neuanmeldungen von "normalen" Benutzern sind ausgeschlossen. Falls die anderen Benutzer zwangsweise abgemeldet werden sollen, dann ist ein Shutdown erforderlich.
Die Datenbank kann für den normalen Betrieb wieder freigegeben werden durch den Befehl:
ALTER SYSTEM DISABLE RESTRICTED SESSION
SHUTDOWN-Befehl
BearbeitenBeim Herunterfahren der Datenbank muss angegeben werden, wie mit anderen noch mit der Datenbank arbeitenden Benutzern und den noch aktiven Transaktionen umgegangen werden soll:
SHUTDOWN
oder
SHUTDOWN NORMAL
wartet solange, bis alle aktiven Benutzer mit "EXIT" ihre Arbeiten beendet haben. Ein erneuter LOGON ist nicht möglich.
SHUTDOWN TRANSACTIONAL
Alle Transaktionen dürfen ihre Arbeiten bis zum nächsten Commit-Punkt fortsetzen, die geänderten Daten werden gespeichert und dann wird der Benutzer von der Datenbank getrennt. Falls eine Transaktion "klemmt", weil sie z.B. auf eine andere Transaktion wartet z.B. in einem Deadlock, dann kann die Datenbank nicht herunterfahren. Wenn die datenbank durch einen SHUTDOWN TRANSACTIONAL heruntergefahren werden konnte, dann sind die Daten in jedem Fall konsistent.
SHUTDOWN IMMEDIATE
Nun wird nicht mehr bis zum nächsten Commit gewartet, sondern alle Aktivitäten der noch aktiven Benutzer werden sofort gestoppt. Alle Datenänderungen werden mit Rollback zurückgerollt. Auf diese Weise können auch Deadlock-Situationen aufgelöst werden. Alle Daten sind durch den Rollback in einem konsistenten Zustand.
SHUTDOWN ABORT
Bei diesem Befehl wird sofort der Kontakt der Instanz zur physischen Datenbank unterbrochen. Falls andere Transaktionen noch aktiv waren, dann sind die Daten inkonsistent. Beim nächsten Hochfahren muss erst mal ein Recover ausgeführt werden. SHUTDOWN ABORT hat dieselbe Wirkung wie eine Unterbrechung der Stromversorgung.
Bei Ausführung des Shutdown-Befehls wird folgende Meldung ausgegeben:
Datenbank geschlossen. Datenbank abgehängt. ORACLE-Instanz heruntergefahren.
Dadurch wird exakt protokolliert, wie die Datenbank die einzelnen Phasen des Startup-Befehle in genau der umgekehrten Reihenfolge durchläuft. Wenn als Letztes die Instanz heruntergefahren ist, dann befindet sich die Datenbank im SHUTDOWN-Zustand.
Sollte beim Herunterfahren der Datenbank ein Problem auftreten, dann besteht die Möglichkeit für den Administrator, sich in einer weiteren Session anzumelden und mit dem Befehl
SHUTDOWN IMMEDIATE
oder
SHUTDOWN ABORT
das Herunterfahren zu beschleunigen.
In der folgenden Tabelle sind die relevanten Aktionen dargestellt.
Modus für das Herunterfahren | A | I | T | N |
---|---|---|---|---|
Lässt neue Anmeldungen zu | Nein | Nein | Nein | Nein |
Wartet, bis aktuelle Sessions beendet sind | Nein | Nein | Nein | Ja |
Wartet, bis aktuelle Transaktionen beendet sind | Nein | Nein | Ja | Ja |
Erzwingt Checkpoint und schließt Dateien | Nein | Ja | Ja | Ja |
A = ABORT, I = IMMEDIATE, T = TRANSACTIONAL, N = NORMAL,