V$-Views für Server-Parameter

Auf die Frage, wie man aktuelle Werte Server-Parameter (a.k.a. init.ora-Parameter) nachschauen kann, bekommt man oft die Antwort „mit SHOW PARAMETER in SQL*Plus“ oder „in der View V$PARAMETER“. Das ist aber nur teilweise richtig.

Beide Antworten liefern de facto das gleiche Ergebnis: SQL*Plus nutzt für den SHOW PARAMETER-Befehl die View V$PARAMETER.

V$PARAMETER liefert allerdings die eingestellten Werte für die eigene Sitzung (Session). Falls z.B. durch einen ALTER SESSION-Befehl ein Parameter geändert wurde, so findet man den geänderten Wert in V$PARAMETER – das kann z.B. durch einen Logon-Trigger erfolgt sein.

Möchte man den aktuell für die Instanz geltenden Wert ermitteln, so ist die View V$SYSTEM_PARAMETER abzufragen. Die hier ermittelten Werte sind entweder die Startwerte ode durch ALTER SYSTEM-Befehle modifizierte Werte.

Sowohl V$PARAMETER als auch V$SYSTEM_PARAMETER gibt es in einer Variante mit der angehängten Ziffer „2“. In den Varianten wird bei Parametern, die eine Liste von Werten akzeptieren, pro Listenelement eine eigen Zeile ausgegeben. Die Spalte ORDINAL enthält die Nummer des Listenelements. Ein Beispiel für einen solchen Parameter ist CONTROL_FILES, mit dem man ja ein oder mehrere Kontrolldateien spezifizieren kann.

Zusätzlich gibt es noch die View V$SPPARAMETER. Hier werden die Werte aus dem SPFile angezeigt (vorausgesetzt, es wird ein solches genutzt). Diese können sich von den aktuellen unetrscheiden, da sowohl die aktiven Parameter als auch die im SPFile modifizert werden können. Bei der Abfrage von V$SPPARAMETER empfiehlt sich der Filter ISSPECIFIED = ‚TRUE‘, um nur die tatsächlich im SPFile enthaltenen Parameter zu sehen.

Interessant bei der Betrachtung der Views ist, dass diese für RACs einen unterschiedlichen Scope haben: V$PARAMETER und V$SYSTEM_PARAMETER betrachten nur die aktuelle Sitzung bzw. Instanz, daher macht es im Cluster durchaus Sinn, GV$SYSTEM_PARAMETER abzufragen, um einen Überblick über alle Instanzen zu bekommen. Da SPFiles „RAC-enabled“ sind, enthält die View V$SPPARAMETER bereits eine Spalte SID. Ist der SID = ‚*‘, so gilt der Parameter für alle Instanzen, ansonsten sollte für jede Instanz ein eigener Wert definiert sein. Somit macht es auch keinen Sinn, GV$SPPARAMETER abzufragen — man bekommt den gleichen Inhalt mehrfach ausgegeben.

Zum Schluß noch die Bemerkung, dass es in SQL*Plus einen eigenen Befehl gibt, um V$SPPARAMETER abzufragen: SHOW SPPARAMETER.

Schreibe einen Kommentar