Consultar valores de parâmetros da sessão em execução

8

Eu não acho que exista uma maneira de fazer isso, mas eu gostaria de poder consultar qual valor uma sessão em execução atualmente tem para seu parâmetro de sessão COMMIT_WRITE.

Eu não vi nada nas visualizações de desempenho v $ ... alguém conhece uma visualização SYS x $ da qual esse valor pode ser recuperado?


Esclarecimento - a necessidade é puxar a configuração do parâmetro para outra sessão, executando independentemente da sessão atual.

KevinKirkpatrick
fonte

Respostas:

7

Eu sei que esta pergunta tem mais de um ano, mas se alguém tropeçar aqui como eu, você pode 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

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

Rph
fonte
4

Sim, existe uma maneira de verificar isso.

Você pode consultar V $ PARAMETER com este SQL:

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

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

Depois altere o parâmetro com base na sessão:

ALTER SESSION SET commit_write = 'IMMEDIATE';

E consulte o parâmetro v $ novamente:

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

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE
ora-600
fonte
11
Adicionando esclarecimentos à pergunta original - o desafio é descobrir qual é esse valor do parâmetro v $ para uma sessão diferente .
precisa saber é o seguinte
Você provavelmente pode usar o comando oradebug para despejar valores de parâmetros modificados. Eu não acho que os parâmetros relacionados ao não otimizador de outra sessão sejam visíveis a partir de qualquer $ gv $ ou x $. Às vezes, eles são armazenados na sessão UGA e não expostos. Mentes curiosas querem saber, por que você precisa disso?
Raj
Queria verificar por sanidade se um gatilho de logon definiu corretamente o parâmetro commit_write para essa sessão (e se o parâmetro commit_write não muda para essa sessão, mesmo que eu faça uma alteração do ALTER SYSTEM) ... ocorreu-me "ei, se existe uma maneira de "atingir o pico" nos parâmetros das sessões em execução, isso seria bastante útil ". Não é crítico - descobriremos em breve se não funcionou (parece que funcionou), mas queremos ver se alguém tem uma maneira rápida de verificar diretamente.
precisa saber é o seguinte
11
Não acho que seja possível obter o valor de uma sessão diferente. Mas normalmente você não altera esse valor duas vezes por dia para que as outras sessões tenham o valor do sistema configurado. Se você deseja saber se o valor é alterado na sessão, é necessário rastrear essa sessão. Um gatilho de logon não ajuda muito, porque logo após o logon o valor com base na sessão ainda é o mesmo que o valor do sistema.
precisa
"e que o parâmetro commit_write não muda para essa sessão, mesmo que eu faça uma alteração do ALTER SYSTEM)". Isso é impossível de aplicar, a menos que você revogue 'ALTER SESSION' ou 'ALTER SYSTEM' de usuários que você não deseja fazer alterações. Espero que o ALTER SYSTEM não seja concedido a usuários não DBA. Revogar ALTER SESSION é provavelmente mais fácil, defina commit_write no nível do sistema, mas você deve considerar os requisitos de código do fornecedor, se for o caso. ALTER SESSION também substituirá a configuração ALTER SYSTEM no nível da sessão, se for feita após ALTER SYSTEM. Então, revogue esse privilégio para estar seguro.
Raj