Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / V$SQL , GV$SQL / 8 сообщений из 8, страница 1 из 1
04.03.2020, 20:25
    #39934361
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Доброго времени суток.

Как определить по sql_text или sql_id источник (procedure , package , view , synonym , function , trigger ) и т.д. в V$SQL , GV$SQL?

Возможно это вообще ?

Спасибо.
...
Рейтинг: 0 / 0
04.03.2020, 20:29
    #39934362
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Aleks Niches,

Смотри в v$active_sessiin_history
...
Рейтинг: 0 / 0
04.03.2020, 20:35
    #39934363
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Aleks Niches,

dba_statements
...
Рейтинг: 0 / 0
04.03.2020, 20:36
    #39934365
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Aleks Niches,

Для хранимого кода есть идентификатор объекта и номер строки где конкретный запрос хранится.
Код: plsql
1.
2.
3.
4.
5.
6.
select (select object_name
          from dba_objects
         where object_id = v.program_id) name,
       program_line# line,
       v.*
  from v$sql v
...
Рейтинг: 0 / 0
05.03.2020, 08:34
    #39934430
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Спасибо всем , кто откликнулся
...
Рейтинг: 0 / 0
05.03.2020, 14:23
    #39934677
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
Кобанчег
Для хранимого кода есть идентификатор объекта и номер строки где конкретный запрос хранится.
только одно уточнение: program_id, module, action и тому подобные поля в v$sql принадлежат родительскому курсору, соответственно, если этот запрос много где вызывается и даже имеет для разных мест разные дочерние курсоры, то получите вы все равно только значения, полученные при первом парсе родительского курсора.

Простой пример:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
create or replace procedure parse1(s varchar2) is
 n int;
begin
   select/*+zz*/ count(*) into n from dual z where rownum=s;
   select/*+zz*/ count(*) into n from dual z where rownum=s;
   select/*+zz*/ count(*) into n from dual z where rownum=s;
end;
/
create or replace procedure parse2(i number) is
 n int;
begin
   select/*+zz*/ count(*) into n from dual z where rownum=i;
   select/*+zz*/ count(*) into n from dual z where rownum=i;
   select/*+zz*/ count(*) into n from dual z where rownum=i;
end;
/
begin
   parse1('1');
   parse2(1);
end;
/
select (select object_name
          from dba_objects
         where object_id = v.program_id) name,
       program_line# line,
       v.child_number,
       v.open_versions,
       v.executions,
       v.sql_text
from v$sql v
where sql_text like 'SELECT/*+zz*/%'
/
NAME             LINE CHILD_NUMBER OPEN_VERSIONS EXECUTIONS SQL_TEXT
---------- ---------- ------------ ------------- ---------- ------------------------------------------------------------
PARSE1              4            0             0          3 SELECT/*+zz*/ COUNT(*) FROM DUAL Z WHERE ROWNUM=:B1
PARSE1              4            1             1          3 SELECT/*+zz*/ COUNT(*) FROM DUAL Z WHERE ROWNUM=:B1

2 rows selected.

...
Рейтинг: 0 / 0
05.03.2020, 14:45
    #39934687
feagor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
xtender,

к слову ситуации, когда SQL текст в 2 разных процедурах абсолютно идентичен не так часто встречаются(системы конечно бывают разные, тем не менее) и данный запрос в абсолютном большинстве случаев покажет реальное местонахождение запроса. А быстрый запрос в v$active_session_history может и не попасть
...
Рейтинг: 0 / 0
05.03.2020, 15:29
    #39934728
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V$SQL , GV$SQL
feagor,

В процедурах - да, но мне чаще приходится иметь дело с выяснением софтины отправившей запрос: разные софтины или системы или даже разные версии одного приложения. И про ash - все верно. Но вопросы обычно не про быстрые лёгкие и редкие запросы, а про тяжёлые, которые вызывают проблемы
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / V$SQL , GV$SQL / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]