Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1

ТЕМА: Обнуление вьюхи v$sqltext в Oracle

Обнуление вьюхи v$sqltext в Oracle 21 июль 2011 00:35 #2585

  • vetal
  • vetal аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 49
  • Спасибо получено: 0
Добрый день. Как обнулить вьюху v$sqltext, может быть, кто - нибудь знает. Заходил SYSTEM'ом, SYS'ом - выдается сообщение CAN ONLY SELECT FROM FIXED TABLE/VIEWS. Данная вьюшка ссылается на таблицу V_$SQLTEXT - пробую удалить и там, но та же история. Помогите, пожалуйста, кто знает...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Обнуление вьюхи v$sqltext в Oracle 21 июль 2011 00:45 #2586

А зачем надо её "обнулять",если не секрет?
Вьюшка, кстати, не "ссылается", а является публичным синонимом другой вьюшки (а не таблицы).

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Обнуление вьюхи v$sqltext в Oracle 21 июль 2011 00:45 #2587

  • vetal
  • vetal аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 49
  • Спасибо получено: 0
Обнулять вьюху надо вот зачем. Есть прога, которая делает некоторый запрос - при этом очень надолго задумывается. Есть подозрение, что этот запрос делается по таблице, для которой не построены нужные индексы, поэтому все так долго. Надо вычислить запрос, а как? Для этого делетим v$sqltext, затем запускаем прогу - затем читаем, что там добавилось во вьюху
v$sqltext и т.д....:-)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Обнуление вьюхи v$sqltext в Oracle 21 июль 2011 00:47 #2588

  • reset
  • reset аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 49
  • Спасибо получено: 0
Привет!
Ужас:)А не лучше ли сделать трассировку сессии, и анализировать то, что получилось? По-моему намного проще)))

Вкраце: для своей сессии начать трассировку:
alter session set sql_trace=true;
для _чужой_ сессии, не своей:
-определяю sid и serial# сессии из v$session;
-начать трассировку сессии:
exec sys.dbms_system.set_sql_trace_in_session(:sid, :serial, true);
соответственно закончить:
exec sys.dbms_system.set_sql_trace_in_session(:sid, :serial, false);
После начала в директории, точно путь не скажу, но типа /admin/%service_name%/udump появится файл трассировки. Напускаешь на него утилиту tkprof, у меня обычно так:
tkprof !.! output=!.txt insert=!.sql record=!.rec sys=yes
И смотришь, что получилось. Есть еще один вариант:
exec dbms_system.set_ev(<SID>,<SERIAL#>,10046,<LEVEL>,'')

LEVEL

0 - отключить трэйс

1 - обычный трэйс

4 - трэйс с переменными

8 - с задержками (данными о задержках)

12 - с переменными и задержками
Вроде как 10046 - это и есть set sql_trace=true.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от reset.
  • Страница:
  • 1