Interroger les valeurs des paramètres de session de la session en cours d'exécution

8

Je ne pense pas qu'il existe un moyen de le faire, mais j'aimerais pouvoir demander quelle valeur une session en cours d'exécution a actuellement pour son paramètre de session COMMIT_WRITE.

Je n'ai rien vu dans les vues de performances v $ ... quelqu'un connaît-il une vue SYS x $ à partir de laquelle une telle valeur pourrait être récupérée?


Clarification - la nécessité est de tirer le réglage des paramètres pour une autre session, fonctionnant indépendamment de la session en cours.

KevinKirkpatrick
la source

Réponses:

7

Je sais que cette question remonte à plus d'un an, mais au cas où quelqu'un trébucherait ici comme moi, vous pouvez interroger V $ SES_OPTIMIZER_ENV:

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

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

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

Rph
la source
4

Oui, il existe un moyen de vérifier cela.

Vous pouvez interroger V $ PARAMETER avec ce SQL:

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

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

Modifiez ensuite le paramètre par session:

ALTER SESSION SET commit_write = 'IMMEDIATE';

Et interrogez à nouveau le paramètre v $:

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

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE
ora-600
la source
1
Ajout de clarification à la question d'origine - le défi est de découvrir quelle est la valeur de ce paramètre v $ pour une session différente .
KevinKirkpatrick
Vous pouvez probablement utiliser la commande oradebug pour vider les valeurs des paramètres modifiés. Je ne pense pas que les paramètres liés à l'optimiseur d'une autre session ne soient pas visibles depuis n'importe quel gv $ ou x $. Parfois, ils sont stockés dans la session UGA et ne sont pas exposés. Les esprits curieux veulent savoir, pourquoi en avez-vous besoin?
Raj
Je voulais vérifier qu'un déclencheur d'ouverture de session définissait correctement le paramètre commit_write pour cette session (et que le paramètre commit_write ne change pas pour cette session même si je fais un changement ALTER SYSTEM) ... il y a un moyen de "pic" sur les paramètres des sessions en cours d'exécution, ce serait plutôt pratique ". Pas critique - nous verrons assez tôt si cela n'a pas fonctionné (il semble que oui), mais nous voulions voir si quelqu'un avait un moyen rapide de vérifier directement.
KevinKirkpatrick
1
Je ne pense pas qu'il soit possible d'obtenir la valeur d'une session différente. Mais normalement, vous ne modifiez pas cette valeur deux fois par jour, les autres sessions doivent donc avoir la valeur système configurée. Si vous voulez savoir si la valeur est modifiée en fonction de la session, vous devez suivre cette session. Un déclencheur d'ouverture de session n'aidera pas beaucoup car juste après l'ouverture de session, la valeur basée sur la session est toujours la même que la valeur à l'échelle du système.
ora-600 du
"et que le paramètre commit_write ne change pas pour cette session même si je fais un changement ALTER SYSTEM)". Ceci est impossible à appliquer, sauf si vous révoquez bien sûr 'ALTER SESSION' ou 'ALTER SYSTEM' des utilisateurs que vous ne souhaitez pas modifier. J'espère que ALTER SYSTEM n'est pas accordé aux utilisateurs non DBA. Révoquer ALTER SESSION est probablement plus facile, définissez commit_write au niveau du système, mais vous devez tenir compte des exigences du code fournisseur si c'est le cas. ALTER SESSION remplacera également le paramètre ALTER SYSTEM au niveau de la session s'il est effectué après ALTER SYSTEM. Alors, révoquez ce privilège pour être en sécurité.
Raj