Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1
  • 2
  • 3

ТЕМА:

V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3977

Not sure if this is documented but in 11g V$SESSION started tracking trigger issued SQL statements
SQL> select  *
  2    from  v$version
  3  /

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for 32-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> create table t(txt varchar2(10))
  2  /

Table created.

SQL> create or replace
  2    trigger trg
  3      before insert
  4      on t
  5      declare
  6          sql_text varchar2(1000);
  7      begin
  8          select  sql_text
  9            into  sql_text 
 10            from  v$sql s,
 11                  v$session e
 12            where s.sql_id = e.sql_id
 13              and e.sid = sys_context('USERENV','SID');
 14          dbms_output.put_line(sql_text);
 15  end;
 16  /

Trigger created.

SQL> set serveroutput on
SQL> insert into t values ('michel');
insert into t values ('michel')

1 row created.
SQL> select  *
  2    from  v$version
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS for HPUX: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

SQL> create table t(txt varchar2(10))
  2  /

Table created.

SQL> create or replace
  2    trigger trg
  3      before insert
  4      on t
  5      declare
  6          sql_text varchar2(1000);
  7      begin
  8          select  sql_text
  9            into  sql_text 
 10            from  v$sql s,
 11                  v$session e
 12            where s.sql_id = e.sql_id
 13              and e.sid = sys_context('USERENV','SID');
 14          dbms_output.put_line(sql_text);
 15  end;
 16  /

Trigger created.

SQL> set serveroutput on
SQL> insert into t values ('michel');
SELECT SQL_TEXT FROM V$SQL S, V$SESSION E WHERE S.SQL_ID = E.SQL_ID AND E.SID = SYS_CONTEXT('USERENV','SID')

1 row created.

SQL>

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

Re: V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3978

Bug 8560561: TRIGGER RETURNS DIFFERENT RESULT IN 11G THAN IN 10G

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

Re: V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3979

Duh пишет: Bug 8560561: TRIGGER RETURNS DIFFERENT RESULT IN 11G THAN IN 10G


Since you read it, bug which way? Is 10g behavior correct one and V$SESSION shouldn't track trigger issued SQL or 11g is correct?

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

Re: V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3980

Стало не возможно производить DML AUDITING. Есть пример как можно сделать такой триггер по другому через v$open_cursor и одно место.

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

Re: V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3981

Спасибо.

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

Re: V$SESSION.SQL_ID behavior change in 11G 12 года 3 мес. назад #3982

Piston пишет: Стало не возможно производить DML AUDITING. Есть пример как можно сделать такой триггер по другому через v$open_cursor и одно место.

I checked MetaLink and there is no пример. I tried триггер по другому через v$open_cursor and v$open_cursor is empty:
SQL> insert into t values ('michel');
SQL> create or replace
  2    trigger trg
  3      before insert
  4      on t
  5      declare
  6          sql_text varchar2(1000);
  7      begin
  8          for v_rec in (
  9                        select  sql_text
 10                          from  v$open_cursor
 11                       ) loop
 12            dbms_output.put_line(sql_text);
 13          end loop;
 14  end;
 15  /
SQL> set serveroutput on
SQL> insert into t values ('michel');
SQL>

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

  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.248 секунд