Недавно выполненный SQL не в V $ SQL

#sql #oracle

#sql #Oracle

Вопрос:

При каких обстоятельствах запрос select не отображается в представлении V $ SQL?

Например, если я выполню это:

 select /*findme*/ * from T ...
  

А затем сразу после этого запустите это:

 select * from v$sql where sql_text like '%/*findme*/%';
  

При каких обстоятельствах я не получу возвращенных строк? И при таких обстоятельствах могу ли я принудительно записать информацию о запросе в V $ SQL?

Комментарии:

1. Вы работаете в кластере? Вы пытались выбрать из gv$sql ?

2. У вашего пользователя есть свой собственный объект V $ SQL

3. @MatthewMcPeak Новость для меня, но, видимо, да. Можете ли вы добавить в качестве ответа? Спасибо!

4. Вы уверены, что находитесь в кластере? Или вы просто попробовали gv$sql , и это сработало? Потому что это также может означать, что @MichaelPiankov догадался об этом.

5. @MatthewMcPeak Это RAC. Хотя мне интересно узнать, как пользователь может иметь свой собственный объект V $ SQL тоже. Исследую это…

Ответ №1:

При каких обстоятельствах запрос select не отображается в представлении V $ SQL?

Одна ситуация связана с реальным кластером приложений (RAC). В таких средах V$SQL будет содержать только кэш библиотеки текущего узла. Чтобы просмотреть кэш библиотеки на всех узлах, выберите из GV$SQL .