查询正在运行的会话的会话参数值


8

我不认为有办法做到这一点,但我想能够查询当前正在运行的会话对其COMMIT_WRITE会话参数的值。

我在v $性能视图中什么都没有看到……有人知道SYS x $视图可以从中检索出这样的值吗?


澄清-需要为另一个会话拉出参数设置,该设置独立于当前会话运行。

Answers:


7

我知道这个问题已有一年多的历史了,但是如果有人像我一样在这里跌跌撞撞,可以查询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

资料来源:http : //oracleinaction.com/other-session-params/


4

是的,有一种方法可以检查这一点。

您可以使用以下SQL查询V $ PARAMETER:

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

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

然后根据会话更改参数:

ALTER SESSION SET commit_write = 'IMMEDIATE';

并再次查询v $ parameter:

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

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

1
在最初的问题上增加澄清-挑战是找出不同会话的 v $ parameter值是什么。
KevinKirkpatrick

您可能可以使用oradebug命令转储修改后的参数值。我认为从任何gv $或x $中都看不到另一个会话中与优化程序无关的参数。有时它们存储在会话UGA中而不公开。好奇的人想知道,为什么需要这个?
2015年

想要理智地检查登录触发器是否已为该会话正确设置了commit_write参数(并且即使我进行了ALTER SYSTEM更改,commit_write参数对于该会话也不会更改)...然后发生在我身上,“嘿,如果有一种方法可以在运行会话的参数上“达到峰值”,这很方便”。并不重要-我们会尽快找出它是否无效(似乎可以解决),但想看看是否有人可以快速进行直接验证。
KevinKirkpatrick

1
我认为不可能获得不同会议的价值。但是通常您不会每天两次更改该值,因此其他会话应具有配置的系统值。如果您想知道该值是否基于会话更改,则必须跟踪该会话。登录触发器无济于事,因为登录后基于会话的值仍与系统范围的值相同。
ora-600

“并且即使我进行ALTER SYSTEM更改,commit_write参数也不会在该会话中更改)”。这是无法强制执行的,除非您当然要从不想进行更改的用户那里撤销“ ALTER SESSION”或“ ALTER SYSTEM”。我希望ALTER SYSTEM不会授予非DBA用户。撤消ALTER SESSION可能更容易,请在系统级别设置commit_write,但在这种情况下,您必须考虑供应商的代码要求。同样,如果在ALTER SYSTEM之后执行,则ALTER SESSION将在会话级别覆盖ALTER SYSTEM设置。因此,为了安全起见,请撤消该特权。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.