Abfragen von Sitzungsparameterwerten der laufenden Sitzung

8

Ich glaube nicht, dass es eine Möglichkeit gibt, dies zu tun, aber ich möchte abfragen können, welchen Wert eine laufende Sitzung derzeit für ihren Sitzungsparameter COMMIT_WRITE hat.

Ich habe in den v $ -Leistungsansichten nichts gesehen ... kennt jemand eine SYS x $ -Ansicht, aus der ein solcher Wert abgerufen werden kann?


Erläuterung - Die Parametereinstellung muss für eine andere Sitzung abgerufen werden, die unabhängig von der aktuellen Sitzung ausgeführt wird.

KevinKirkpatrick
quelle

Antworten:

7

Ich weiß, dass diese Frage mehr als ein Jahr alt ist, aber falls hier jemand wie ich stolpert, können Sie V $ SES_OPTIMIZER_ENV abfragen:

SYS> select name, value 
        from  V$SES_OPTIMIZER_ENV 
        where sid=54 
           and name='hash_area_size';

NAME                                     VALUE
—————————————- ————————-
hash_area_size                           100000

Quelle: http://oracleinaction.com/other-session-params/

Rph
quelle
4

Ja, es gibt eine Möglichkeit, dies zu überprüfen.

Sie können V $ PARAMETER mit dieser SQL abfragen:

SELECT name, value
  FROM v$parameter
 WHERE name like 'commit_write'
;

NAME                 VALUE
-------------------- --------------------
commit_write         (null)

Ändern Sie anschließend den Parameter auf Sitzungsbasis:

ALTER SESSION SET commit_write = 'IMMEDIATE';

Und fragen Sie den Parameter v $ erneut ab:

SELECT name, value
  FROM v$parameter
 WHERE name like 'commit_write'
;

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE
ora-600
quelle
1
Hinzufügen von Klarstellungen zur ursprünglichen Frage - Die Herausforderung besteht darin, herauszufinden, was dieser v $ -Parameterwert für eine andere Sitzung ist .
KevinKirkpatrick
Sie können wahrscheinlich den Befehl oradebug verwenden, um geänderte Parameterwerte zu sichern. Ich glaube nicht, dass nicht mit dem Optimierer verbundene Parameter aus einer anderen Sitzung von gv $ oder x $ aus sichtbar sind. Manchmal werden sie in Sitzungs-UGA gespeichert und nicht verfügbar gemacht. Neugierige wollen wissen, warum brauchen Sie das?
Raj
Wollte überprüfen, ob ein Anmeldetrigger den Parameter commit_write für diese Sitzung richtig festgelegt hat (und dass sich der Parameter commit_write für diese Sitzung nicht ändert, selbst wenn ich eine Änderung am ALTER SYSTEM vornehme) ... dann ist mir "hey, if Es gibt eine Möglichkeit, die Parameter für das Ausführen von Sitzungen zu erreichen, was praktisch wäre. " Nicht kritisch - wir werden früh genug herausfinden, ob es nicht funktioniert hat (es scheint zu funktionieren), wollten aber sehen, ob jemand eine schnelle Möglichkeit hatte, dies direkt zu überprüfen.
KevinKirkpatrick
1
Ich denke nicht, dass es möglich ist, den Wert einer anderen Sitzung zu erhalten. Normalerweise ändern Sie diesen Wert jedoch nicht zweimal täglich, sodass die anderen Sitzungen den konfigurierten Systemwert haben sollten. Wenn Sie wissen möchten, ob der Wert auf Sitzungsbasis geändert wird, müssen Sie diese Sitzung verfolgen. Ein Anmeldetrigger hilft nicht viel, da der sitzungsbasierte Wert direkt nach der Anmeldung immer noch mit dem systemweiten Wert übereinstimmt.
ora-600
"und dass sich der Parameter commit_write für diese Sitzung nicht ändert, selbst wenn ich eine Änderung am ALTER SYSTEM vornehme)". Dies kann nicht durchgesetzt werden, es sei denn, Sie widerrufen natürlich "ALTER SESSION" oder "ALTER SYSTEM" von Benutzern, die keine Änderungen vornehmen möchten. Ich hoffe, dass ALTER SYSTEM nicht für Nicht-DBA-Benutzer gewährt wird. Das Widerrufen von ALTER SESSION ist wahrscheinlich einfacher. Legen Sie commit_write auf Systemebene fest. In diesem Fall müssen Sie jedoch die Anforderungen an den Herstellercode berücksichtigen. Auch ALTER SESSION überschreibt die Einstellung von ALTER SYSTEM auf Sitzungsebene, wenn dies nach ALTER SYSTEM erfolgt. Widerrufen Sie dieses Privileg, um sicher zu gehen.
Raj