Interroga i valori dei parametri della sessione in corso


8

Non credo che ci sia un modo per farlo, ma vorrei essere in grado di interrogare il valore che una sessione in esecuzione ha attualmente per il suo parametro di sessione COMMIT_WRITE.

Non ho visto nulla nelle visualizzazioni delle prestazioni v $ ... qualcuno sa di una vista SYS x $ da cui è possibile recuperare tale valore?


Chiarimento: è necessario estrarre l'impostazione dei parametri per un'altra sessione, in esecuzione indipendentemente dalla sessione corrente.

Risposte:


7

So che questa domanda ha più di un anno, ma nel caso qualcuno dovesse inciampare qui come ho fatto io, puoi chiedere a 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

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


4

Sì, c'è un modo per verificarlo.

Puoi interrogare V $ PARAMETER con questo SQL:

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

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

Successivamente modificare il parametro in base alla sessione:

ALTER SESSION SET commit_write = 'IMMEDIATE';

E interroga nuovamente il parametro $ v:

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

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE

1
Aggiungendo chiarimenti alla domanda originale: la sfida è scoprire qual è il valore di questo parametro v $ per una sessione diversa .
KevinKirkpatrick,

Probabilmente puoi usare il comando oradebug per scaricare i valori dei parametri modificati. Non credo che i parametri non ottimizzatori di un'altra sessione siano visibili da qualsiasi $ o x $. A volte sono memorizzati nella sessione UGA e non esposti. Le menti curiose vogliono sapere, perché ne hai bisogno?
Raj,

Volevo verificare la sanità mentale che un trigger di accesso impostasse correttamente il parametro commit_write per quella sessione (e che il parametro commit_write non cambi per quella sessione anche se faccio una modifica ALTER SYSTEM) ... poi mi sono verificato "hey, if c'è un modo per "dare il massimo" ai parametri delle sessioni in esecuzione, sarebbe utile ". Non critico: scopriremo abbastanza presto se non ha funzionato (sembra che abbia funzionato), ma volevamo vedere se qualcuno avesse un modo rapido per verificare direttamente.
KevinKirkpatrick il

1
Non penso che sia possibile ottenere il valore di una sessione diversa. Ma normalmente non si modifica quel valore due volte al giorno, quindi le altre sessioni dovrebbero avere il valore di sistema configurato. Se vuoi sapere se il valore viene modificato in base alla sessione devi tracciare quella sessione. Un trigger di accesso non sarà di grande aiuto poiché subito dopo l'accesso il valore basato sulla sessione è sempre uguale al valore di sistema.
ora-600,

"e che il parametro commit_write non cambia per quella sessione anche se faccio una modifica ALTER SYSTEM)". Questo è impossibile da applicare, a meno che, naturalmente, non venga revocato "ALTER SESSION" o "ALTER SYSTEM" dagli utenti che non si desidera apportare modifiche. Spero che ALTER SYSTEM non sia concesso agli utenti non DBA. La revoca di ALTER SESSION è probabilmente più semplice, impostare commit_write a livello di sistema, ma in questo caso è necessario tenere conto dei requisiti del codice fornitore. Inoltre ALTER SESSION sovrascriverà l'impostazione ALTER SYSTEM a livello di sessione se viene eseguita dopo ALTER SYSTEM. Quindi, revoca quel privilegio per essere al sicuro.
Raj,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.