Запрос значений параметров сеанса запущенного сеанса


8

Я не думаю, что есть способ сделать это, но я хотел бы иметь возможность узнать, какое значение текущий сеанс имеет для своего параметра сеанса COMMIT_WRITE.

Я не видел ничего в представлениях производительности v $ ... кто-нибудь знает представление SYS x $, из которого можно получить такое значение?


Пояснение - необходимо перенести настройку параметра для другого сеанса, работающего независимо от текущего сеанса.

Ответы:


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

Да, есть способ проверить это.

Вы можете запросить V $ PARAMETER с этим SQL:

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

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

Затем измените параметр на основе сеанса:

ALTER SESSION SET commit_write = 'IMMEDIATE';

И снова запросите v $ параметр:

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

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

1
Добавление пояснения к исходному вопросу - задача состоит в том, чтобы выяснить, каково значение этого параметра v $ для другого сеанса .
Кевин Киркпатрик,

Вы, вероятно, можете использовать команду oradebug для вывода измененных значений параметров. Я не думаю, что связанные с неоптимизатором параметры из другого сеанса видны из любого gv $ или x $. Иногда они хранятся в сеансе UGA и не выставляются. Любопытные умы хотят знать, зачем тебе это?
Радж

Хотел проверить, что триггер входа в систему правильно установил параметр commit_write для этого сеанса (и что параметр commit_write не изменился для этого сеанса, даже если я произвел изменение ALTER SYSTEM) ... затем со мной произошла "эй, если есть способ «пиковать» параметры запущенных сессий, это было бы удобно ». Не критично - мы скоро узнаем, не сработало ли это (кажется, что оно есть), но хотели бы узнать, есть ли у кого-нибудь быстрый способ проверки напрямую.
Кевин Киркпатрик

1
Я не думаю, что возможно получить значение другого сеанса. Но обычно вы не меняете это значение два раза в день, поэтому другие сеансы должны иметь настроенное системное значение. Если вы хотите знать, изменяется ли значение на основе сеанса, вы должны проследить этот сеанс. Триггер входа не сильно поможет, потому что сразу после входа значение, основанное на сеансе, остается таким же, как и значение в масштабе всей системы.
ora-600

msgstr "и что параметр commit_write не изменяется для этого сеанса, даже если я изменяю ALTER SYSTEM)". Это невозможно осуществить, если, конечно, вы не отмените «ALTER SESSION» или «ALTER SYSTEM» у пользователей, которым вы не хотите вносить изменения. Я надеюсь, что ALTER SYSTEM не предоставляется пользователям, не являющимся администраторами баз данных. Отзыв ALTER SESSION, вероятно, проще, установите commit_write на системном уровне, но в этом случае вы должны учитывать требования к коду поставщика. Также ALTER SESSION переопределит настройку ALTER SYSTEM на уровне сеанса, если это будет сделано после ALTER SYSTEM. Итак, отмените эту привилегию, чтобы быть в безопасности.
Радж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.