Oracle: Datenbank starten


Verwalten der Datenbank-Instanz

Bearbeiten

Eine 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

Bearbeiten

Sowohl 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

Bearbeiten

Eine 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

Bearbeiten

Um 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

Bearbeiten

Um 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

Bearbeiten
 STARTUP 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

Bearbeiten

Um 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

Bearbeiten

Beim 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,