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

Откуда:
Сообщений: 416
добрый день,

настроил логгирование всех действий определенных юзеров после логона в базу,создается файл трассировки вида SID_ORA_PID.TRC,но вот вопрос:как мне, имея этот файл, узнать чей он?

select p.spid
from v$process p, v$session s
where p.addr = s.paddr
and s.audsid = userenv('SESSIONID');-----действует только в рамках сессии,а если я через месяц захочу копнуть?


alter session set tracefile_identifier='***';---он добавляет к имени файла ***.trc,но так тоже у всх будет одинаково.


подскажите плиз как изменить формат файла,чтобы в названии был юзер или где внутри файла найти чей он.


спасибо
27 июл 11, 14:45    [11034426]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
LudeV
подскажите плиз как изменить формат файла,чтобы в названии был юзер

Как вариант, формируйте его динамически в триггере на логон.
автор
где внутри файла найти чей он.

Информации в заголовке недостаточно ?
27 июл 11, 14:49    [11034467]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
LudeV
Member

Откуда:
Сообщений: 416
pravednik,

если я через 2 дня открою папку с файлами трассировки,когда уже сессия пользователя отключена,то я не пойму чей он,т.к. в заголовке есть только идентификатор текущей сессии.Если сессию закрыть,то и в v$process ее нет.

как формировать динамически?

внутри скрипта перед включением трассы я делал alter session set tracefile_identifier='***';, но он тоже дописывает одно и тоже в конце имени файла,а мне нужно чтобы в конце имени файла был текущий юзер.

как это сделать?может в этой же строке просто по-другому написать как-нить,чтобы передать ему юзера как параметр?
27 июл 11, 14:55    [11034517]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
LudeV,
SELECT s.sid,
       s.serial#,
       pa.value || '/' || LOWER(SYS_CONTEXT('userenv','instance_name')) ||    
       '_ora_' || p.spid || '_' || user || '.trc' AS trace_file
FROM   v$session s,
       v$process p,
       v$parameter pa
WHERE  pa.name = 'user_dump_dest'
AND    s.paddr = p.addr
AND    s.audsid = SYS_CONTEXT('USERENV', 'SESSIONID');
Добавь выделенное перед set tracefile_identifier. Что мешает?
27 июл 11, 15:09    [11034611]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dba123
Member

Откуда:
Сообщений: 1054
LudeV,

во время подключения можно установливать идентификатор клиента, он всегда пишется в трейс
dbms_session.set_identifier(sid||serial||username)
27 июл 11, 15:20    [11034685]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
dba123
LudeV,

во время подключения можно установливать идентификатор клиента, он всегда пишется в трейс
dbms_session.set_identifier(sid||serial||username)

угу.
В заголовке трейса появляется доп. строчка
*** CLIENT ID: ....
27 июл 11, 15:25    [11034718]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dba123
Member

Откуда:
Сообщений: 1054
pravednik,

извини, повторился

мне проще правда, я все пакеты, и dbms_session также, убираю от public
27 июл 11, 15:30    [11034749]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
dba123
pravednik,

извини, повторился

Дык нет, не повторился...
Без dbms_session CLIENT ID в заголовке нет
27 июл 11, 15:33    [11034779]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
LudeV
Member

Откуда:
Сообщений: 416
pravednik,

я чет туплю.подскажите как это написать-то правильно?


create or replace trigger logon_trigger2
after logon on database
begin
execute immediate
'dbms_session.set_identifier(sid||serial||username)'
end;
/

так не работает
27 июл 11, 15:47    [11034872]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dbms_session
Guest
dba123
мне проще правда, я все пакеты, и dbms_session также, убираю от public

А зачем, если не секрет?
27 июл 11, 16:12    [11035091]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dba123
Member

Откуда:
Сообщений: 1054
dbms_session,

слишком много пакетов открыто ему

- пользователей создаю только с create session
- без ролей (security application role - её можно не грантовать - она все равно установится)
- некоторым продвинутым юзерам даю роль , но не по умолчанию (alter user .. default role none)
- в логон триггере устанавливаю инит-контекст всем
- создаю security схему, там все: таблица пользователей, приложений, логон-триггер, аудит пакеты..., обертки (dbms_session...)
и процедура, которую необходимо запустить пользователю перед работой, например, set_application
в которой, устанавливаю пользователю схему с данными и роли (аппликэйшн||остальные не по умолчанию)
- профили пользователей, password_function

разработчики используют данные из инит-контекста, могут устанавливать/читать свои контекстные переменные
такой минимальной защитой(как бы прикрыться по 153 фз) можно обернуть любое клиент-серверное приложение
ytpfvtnyj b ghjphfxyj
27 июл 11, 16:50    [11035395]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
LudeV
Member

Откуда:
Сообщений: 416
dbms_photoshop,

не могли бы Вы подсказать синтаксис такого триггера плиз?

перепробовал разные варианты-не получается(
27 июл 11, 17:02    [11035488]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
LudeV
dbms_photoshop,

не могли бы Вы подсказать синтаксис такого триггера плиз?

перепробовал разные варианты-не получается(
У меня нет оракла под рукой. Но могу только заметить, что tracefile_identifier работает только для той сессии, где вызван.
Так что с заголовками твоя идея в некоторых случаях нереализуема.
Что касается содержания, то точно в трейсе можно увидеть "Parsing user id:".

Может какую-нить дополнительную инфу можно установить через DBMS_APPLICATION_INFO или подобным образом и тоже увидеть в трейсе. Я не уверен.
27 июл 11, 17:55    [11035861]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
LudeV
Member

Откуда:
Сообщений: 416
dbms_photoshop,

в трэйсе есть только строка SESSION ID:(76.37704) 2011-07-28 08:56:45

в select * from v$session можно отследить кто это,но как только сессия прерывается - невозможно понять кто выполнял действия,даже имея файл под рукой.

как идентифицировать?
28 июл 11, 09:31    [11037724]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
serpv
Member

Откуда: n-ск
Сообщений: 220
можно местами раскомментировать или дописать по вкусу:
CREATE OR REPLACE TRIGGER SYS.db_logons_trigger
 AFTER LOGON ON DATABASE
BEGIN
  --if user in ('USERNAME') then
  --if to_number(to_char(sysdate, 'hh24')) between 12 and 18 then
    declare
      v_sid     number;
      v_serial  number;
      os_us     varchar2(30);
   begin
    select s.sid, s.serial#, s.osuser
    into v_sid, v_serial, os_us
    from sys.v_$session s, v$mystat ms
    where s.sid = ms.sid
    and rownum < 2; 
    --if os_us in ('os_username') then
        execute immediate 'alter session set tracefile_identifier=''logon_trigger_'||v_sid||'_'||os_us||'''';
        --execute immediate 'alter session set max_dump_file_size=''1000M''';
        --dbms_system.set_ev(v_sid, v_serial, 10046, 12, '');
    --end if;
   end;
 --end if;
 --end if;
END;
/
28 июл 11, 11:06    [11038309]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
trcsess
Guest
Может быть, Вам поможет trcsess?
28 июл 11, 11:54    [11038629]     Ответить | Цитировать Сообщить модератору
 Re: как изменить имя файла трассировки?  [new]
LudeV
Member

Откуда:
Сообщений: 416
serpv,

спасибо огромное!все получилось.

тему можно считать закрытой
28 июл 11, 12:41    [11038982]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: как изменить имя файла трассировки?  [new]
Paranoiac
Member

Откуда: Saint Petersburg
Сообщений: 389
Ребят, а есть какая-нибудь возможность обзывать файлы самому при мониторинге через dbms_monitor?(чужих сессий)tracefile_identifier я так понимаю для этого совсем никак не годиться.
13 авг 13, 11:34    [14700892]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить