Jede Oracle-Datenbank braucht Parameter! Insgesamt gibt es mittlerweile ca. 258 (Version 9.2) verschiedene Einstellmöglichkeiten, um die Datenbank schon beim Start für den gewünschten Zweck zu konfigurieren oder zu beschleunigen. Einige davon sind für den Betrieb absolut erforderlich, für andere hält das System Default-Werte bereit.
Wo findet das System nun diese Initialisierungen? Weil vor dem Datenbankstart noch kein Zugriff auf die Tabellen der Datenbank möglich ist, werden diese Informationen in einer Datei bereitgestellt. Speicherort und Name dieser Datei kann beim Start der Datenbank als Parameter des startup-Kommandos (über Schlüsselwort PFILE) mitgegeben werden. Falls startup ohne Parameter abgesetzt wird, erwartet Oracle in seinem ORACLE_HOME-Verzeichnis ein Unterverzeichnis mit dem Namen 'dbs' (Unix) bzw. 'database' (NT). In diesem Verzeichnis wird nach einer Parameterdatei gesucht. Es gibt zwei verschiedene Formate für diese Parameterdatei:
a) editierbare Textdatei mit Namen
'init<SID>.ora'
b) ab Version 9i eine maschinenlesbare Binärdatei mit Namen
'spfile<SID>.ora'
Falls eine maschinenlesbare binäre Parameterdatei gefunden wird, wird diese verwendet. Andernfalls wird nach der Textversion gesucht. Falls in ORACLE_HOME/dbs keine der beiden Dateien gefunden werden, wird der Datenbankstart mit der Meldung ORA-01078 abgebrochen.
Die Verwendung der editierbaren Textdatei hat einen Nachteil. Sie muss bei jeder Parameteränderung (ALTER SYSTEM SET PARAMETER...) von Hand nachgepflegt werden, damit die vorgenommene Änderung einen späteren Neustart der Datenbank überlebt. Alternativ könnte die init<SID>.ora-Datei geändert und danach die Datenbank durchgestartet werden - auch nicht viel besser.
Deshalb wurde mit der Version 9i das sogenannte binäre SPFILE (ServerParameterFile) eingeführt. Diese Server-Datei enthält sämtliche Parameterwerte und wird beim Datenbankstart ausgewertet. Außerdem kann sie direkt von der Datenbankinstanz geändert werden. Eine Parameteränderung wird also nur noch per ALTER SYSTEM durchgeführt. Je nach SCOPE (ALTER SYSTEM Option) wird die Änderung nur in der laufenden Instanz oder auch in der zugehörigen Parameterdatei oder nur in der Parameterdatei durchgeführt.
Beispiel:
Mit der Option SCOPE=MEMORY wird die Änderung auf die laufende Instanz beschränkt (keine Änderung der ServerParameterDatei):
ALTER SYSTEM SET log_checkpoint_timeout=1700 SCOPE=MEMORY;
Mit der Option SCOPE=SPFILE wird die Änderung nur in der ServerParameterDatei eingetragen (keine Änderung der lfd. Instanz):
ALTER SYSTEM SET log_checkpoint_timeout=1700 SCOPE=SPFILE;
Mit der Option SCOPE=BOTH wird die Änderung sowohl in der lfd. Instanz als auch in der ServerParameterDatei durchgeführt:
ALTER SYSTEM SET log_checkpoint_timeout=1700 SCOPE=BOTH;
Von einer Parameterdateiänderung sind alle Instanzen betroffen, die später gestartet werden. Leider ist diese binäre Parameterdatei nicht mehr manuell pflegbar.
Um eine ServerParameterDatei (SPFILE) zum Datenbankstart verwenden zu können, muß sie per SQL-Befehl CREATE SPFILE aus einer herkömmlichen Text-Initialisierungsdatei erzeugt werden:
CREATE SPFILE FROM PFILE;
Dabei wird eine herkömmliche Initialisierungsdatei eingelesen und daraus eine Serverparameterdatei erstellt. Hier besteht sogar die Möglichkeit, eine lesbare Initialisierungsdatei auf dem Client-Rechner bereitzustellen. Dazu ist dann der CREATE-Befehl noch um den Pfad und Dateinamen der Initialisierungsdatei zu erweitern:
CREATE SPFILE FROM PFILE='c:\xyz\t_init1.ora';
Mit diesem Befehl wird die Serverparameterdatei im ORACLE_HOME/dbs-Verzeichnis des Servers genau an der Stelle erzeugt, wo es von nachfolgenden Datenbankstarts automatisch verwendet wird. (und zwar mit den Client-lokalen Parameterwerten aus 'c:\xyz\t_init1.ora'!)
Dazu ist allerdings die Rolle SYSDBA oder SYSOPER erforderlich.
Eine weitere Möglichkeit ist die Benennung der zu erstellenden ServerParameterDatei mit einem nondefault-Namen. Dazu ist der gewünschte Name im Create-Befehl mit anzugeben:
CREATE SPFILE='s_params.ora' FROM PFILE='c:\xyz\t_init1.ora';
Damit nun der Server diese Parameter beim Datenbankstart verwenden kann, ist noch eine herkömmliche Text-Parameterdatei (z.Bsp. mit Namen new_param.ora) zu erstellen, die nur die eine Zeile
spfile='s_params.ora'
enthält und so die angegebene ServerParameterDatei inkludiert. Im SQL*Plus wird nun der Startup-Befehl folgendermaßen angegeben:
SQL> STARTUP PFILE='new_param.ora'
So wird die Instanz mit den Parametern gestartet, die vom Client aus über 'c:\xyz\t_init1.ora' bereitgestellt worden sind.
NB: Falls eine Instanz mit einer ServerParameterDatei gestartet wurde, ist in der Variablen spfile der Pfad und Name dieser Datei abgelegt. Andernfalls ist die Variable spfile leer.
Abfragen der Variablen mit SQL*Plus:
SQL> show parameter spfile
Telefon:
089 6228 6789-0
Telefon (gültig bis Ende 2010):
089 679090-40
E-Mail:
› info@muniqsoft.de
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.