Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Определить когда вызывалась функция  [new]
Landgraf
Member

Откуда:
Сообщений: 278
Приветствую всех!

У меня есть pipelined функция, которую периодически дергают различные пользователи. Возможно ли через какие-нибудь системные оракловые представления увидеть когда и кем вызывалась данная функция?
Конечно можно создать таблицу, а в теле функции написать блок по ее заполнению. И при вызове заполнять таблицу данными: логин пользователя, время вызова и параметры, передаваемые в процедуру. Но хотелось бы узнать, может есть представления Oracle позволяющие увидеть вызов функции!
3 окт 12, 16:41    [13263014]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
Landgraf,

попробуйте поюзать v$db_object_cache.
3 окт 12, 16:50    [13263070]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
Landgraf,
Включить конкретно для нее аудит.
3 окт 12, 16:55    [13263096]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Landgraf
Member

Откуда:
Сообщений: 278
comphead
Landgraf,

попробуйте поюзать v$db_object_cache.


К сожалению, там нет даты вызова объекта. Здесь вот наткнулся на представление V$SQL. Никто не использовал?
3 окт 12, 17:07    [13263172]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Охрименко
Member

Откуда: Украина, Киев
Сообщений: 1440
Landgraf,

Если найдете sql_id запроса в котором ваша функция вызывается, есть шанс найти. Если у вас не Standard Edition.
3 окт 12, 18:27    [13263607]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
Landgraf
comphead
Landgraf,

попробуйте поюзать v$db_object_cache.


К сожалению, там нет даты вызова объекта. Здесь вот наткнулся на представление V$SQL. Никто не использовал?

Там sql-ники, находящиеся в шаредпуле, наврядле то, что вам нужно?

http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2113.htm

За какой период интересует история ?
3 окт 12, 21:11    [13264237]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Landgraf
Member

Откуда:
Сообщений: 278
Максим Н
Landgraf
пропущено...


К сожалению, там нет даты вызова объекта. Здесь вот наткнулся на представление V$SQL. Никто не использовал?

Там sql-ники, находящиеся в шаредпуле, наврядле то, что вам нужно?

http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2113.htm

За какой период интересует история ?


Хотя бы за несколько дней.
4 окт 12, 11:02    [13266048]     Ответить | Цитировать Сообщить модератору
 Re: Определить когда вызывалась функция  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
Landgraf,


Тогда про V$SQL можно забыть.

Можно трассировку включить, там увидите :)

CREATE OR REPLACE FUNCTION test_function
RETURN NUMBER
IS
BEGIN
  RETURN NULL;
END;
/

ALTER SESSION SET sql_trace = true;
ALTER SESSION SET tracefile_identifier = mysqltrace_test;

SELECT test_function
  FROM dual;

DECLARE
  r NUMBER;
BEGIN
  r := test_function;
END;
/

ALTER SESSION SET sql_trace = false;


*** TRACE DUMP CONTINUED FROM FILE d:\oracle\product\10.2.0\admin\infotech\udump\infotech_ora_4088.trc ***


EXEC #15:c=0,e=34672,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=5389899639
=====================
PARSING IN CURSOR #16 len=32 dep=0 uid=57 oct=3 lid=57 tim=5392836852 hv=2999476958 ad='293ad0b8'
SELECT test_function
  FROM dual
END OF STMT
PARSE #16:c=0,e=21366,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=5392836848
EXEC #16:c=0,e=9126,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=5392846751
FETCH #16:c=0,e=60,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=5392846985
=====================
PARSING IN CURSOR #15 len=52 dep=0 uid=57 oct=47 lid=57 tim=5395336226 hv=1042970264 ad='293a0294'
DECLARE
  r NUMBER;
BEGIN
  r := test_function;
END;
END OF STMT
PARSE #15:c=0,e=61,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=5395336221
EXEC #15:c=0,e=95,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=5395337263
=====================
PARSING IN CURSOR #12 len=35 dep=0 uid=57 oct=42 lid=57 tim=5397559584 hv=0 ad='55afc04'
ALTER SESSION SET sql_trace = false
END OF STMT
PARSE #12:c=0,e=360,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=5397559581
EXEC #12:c=0,e=55,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=5397560223
4 окт 12, 13:21    [13267249]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить