Consultar valores de parámetros de sesión de sesión en ejecución

8

No creo que haya una manera de hacerlo, pero me gustaría poder consultar qué valor tiene actualmente una sesión en ejecución para su parámetro de sesión COMMIT_WRITE.

No he visto nada en las vistas de rendimiento v $ ... ¿Alguien sabe de una vista SYS x $ de la que se pueda recuperar dicho valor?


Aclaración: la necesidad es extraer la configuración de parámetros para otra sesión, que se ejecuta independientemente de la sesión actual.

KevinKirkpatrick
fuente

Respuestas:

7

Sé que esta pregunta tiene más de un año, pero en caso de que alguien tropiece aquí como yo, puede consultar 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

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

Rph
fuente
4

Sí, hay una manera de verificar esto.

Puede consultar V $ PARAMETER con este SQL:

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

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

Luego cambie el parámetro en base a la sesión:

ALTER SESSION SET commit_write = 'IMMEDIATE';

Y consulta el parámetro v $ nuevamente:

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

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE
ora-600
fuente
1
Agregar aclaración a la pregunta original: el desafío es descubrir cuál es el valor de este parámetro v $ para una sesión diferente .
KevinKirkpatrick
Probablemente pueda usar el comando oradebug para volcar valores de parámetros modificados. No creo que los parámetros relacionados con el no optimizador de otra sesión sean visibles desde cualquier gv $ o x $. A veces se almacenan en sesión UGA y no se exponen. Las mentes curiosas quieren saber, ¿por qué necesitas esto?
Raj
Quería verificar que un inicio de sesión establezca correctamente el parámetro commit_write para esa sesión (y que el parámetro commit_write no cambia para esa sesión incluso si hago un cambio ALTER SYSTEM) ... luego se me ocurrió "hey, if hay una manera de 'alcanzar el pico' en los parámetros de ejecución de sesiones, eso sería bastante útil ". No es crítico: pronto descubriremos si no funcionó (parece que sí), pero quería ver si alguien tenía una forma rápida de verificar directamente.
KevinKirkpatrick
1
No creo que sea posible obtener el valor de una sesión diferente. Pero normalmente no cambia ese valor dos veces al día, por lo que las otras sesiones deben tener el valor del sistema configurado. Si desea saber si el valor cambia en función de la sesión, debe rastrear esa sesión. Un desencadenador de inicio de sesión no ayudará mucho porque justo después de iniciar sesión, el valor basado en la sesión sigue siendo el mismo que el valor de todo el sistema.
ora-600
"y que el parámetro commit_write no cambia para esa sesión incluso si hago un cambio ALTER SYSTEM"). Esto es imposible de aplicar, a menos que, por supuesto, revoque 'ALTER SESSION' o 'ALTER SYSTEM' de los usuarios a los que no desea realizar cambios. Espero que ALTER SYSTEM no se otorgue a usuarios que no sean DBA. Revocar ALTER SESSION probablemente sea más fácil, configure commit_write a nivel del sistema, pero debe tener en cuenta los requisitos del código del proveedor si ese es el caso. También ALTER SESSION anulará la configuración de ALTER SYSTEM en el nivel de sesión si se realiza después de ALTER SYSTEM. Por lo tanto, revoque ese privilegio para estar seguro.
Raj