powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как обойти триггер
20 сообщений из 20, страница 1 из 1
Как обойти триггер
    #39325584
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В БД успешно долгое время работает триггер AFTER UPDATE OR INSERT OR DELETE FOR EACH ROW, но очень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал. База сторонняя, поэтому там могли нахимичить как угодно, но ALL_OBJECTS показывает, что триггер не отключался и не изменялся.

Отсюда вопрос, есть ли способы (какие-то опции или методы внесения данных), которые позволяют обновить записи мимо триггера?
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325589
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubes,

Интересно, каким образом ALL_OBJECTS может показать, что триггер не отключался?
По вашему вопросу - например exchange partition можно обновить данные в обход триггера, можно наверное поизмышлять еще как нибудь...

Best regards

Maxim
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325603
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325619
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubesмимо триггера?Ошибка в 17-ой строке.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325622
veep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubesВ БД успешно долгое время работает триггер AFTER UPDATE OR INSERT OR DELETE FOR EACH ROW, но очень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал. База сторонняя, поэтому там могли нахимичить как угодно, но ALL_OBJECTS показывает, что триггер не отключался и не изменялся.

Отсюда вопрос, есть ли способы (какие-то опции или методы внесения данных), которые позволяют обновить записи мимо триггера?

Надо смотреть код триггера. Может там какой нибудь exception when others или еще что.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325663
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubes,

как варіант, прямая загрузка
наскоко помню мимо триггевов

....
stax
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325666
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko, да, с отключением я, пожалуй, погорячился, просто не было DDL. Данных пришло мало, поэтому exchange partition не подойдет.

Elic, тоже не подходит - LOB'ов нет.

veep, обработок исключений тоже никаких нет, как не было и ошибок при этом.


Из того, что удалось найти, вроде бы относительно интересный вариант - это dbms_xstream_gg.set_foo_trigger_session_contxt. Но как-то шибко хитро, не верится, что могло быть использовано что-то подобное.

Может быть, есть какой-то вариант проследить историю состояния триггера?
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325671
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax.., ну просто append же вряд ли отключит, или ошибаюсь?
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325676
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вообще то при exchange partition порция измененных данных может быть любой - от 0% до 146%,
append hint игнорируется если есть триггер, проследить изменение состояния триггера имхо - или audit или logminer.

Regards

Maxim
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325835
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Editions?
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325840
kubesНо как-то шибко хитро, не верится, что могло быть использовано что-то подобное.Если оно в репликации и триггер fire_once, то ничего хитрого - штатная ситуация. Применимо не только к ГГ, но и стримсам вообще.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39325864
!Z!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
!Z!
Гость
kubes,

Есть такая фича
dbms_xstream_gg.set_foo_trigger_session_contxt(fire=>true);
которая напрямую отключала триггеры на сессию в версиях Oracle до 11.2.0.4

Потом пофиксили, но все равно можно обойти ограничение довольно извратным способом https://www.pythian.com/blog/disabling-triggers-in-oracle-11-2-0-4/
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326176
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko, имел в виду, что малая часть партиции изменилась. Audit и LogMiner недоступны, тк БД чужая, но спасибо за дельные комментарии.

Elic, EE 11.2.0.3.

триггер фиринг проперты, штатная может, но маловероятно, что кто-то руками там ее запустил. Тут похоже, что цели такой такой не было, но случайно как-то обошли этот триггер, внеся данные особым способом.

!Z!, мы же как раз обсуждаем эту процедуру.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326494
Avotge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имхо для начала попробовать повторить этот же апдейт/инсерт (с такими же данными), если будет ощущение, что триггер как бы все равно не сработал, значит надо разбираться с самим триггером )
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326497
Avotge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. вариантов немного же:
- апдейта не было
- апдейт был, но триггер сработал не так, как ожидается
- триггер кто-то отключил, как-то обошел (самый маловероятный имхо, то есть сначала разобраться с первыми двумя))
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326626
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Avotge, предыдущие два отмел, поэтому перешел к третьему.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326663
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubesAvotge, предыдущие два отмел, поэтому перешел к третьему.

А что-же тут переходить? С него и надо было начинать:

Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
SQL> create table tbl(n number);

Table created.

SQL> create or replace
  2    trigger tbl_bir
  3      before insert
  4      on tbl
  5      for each row
  6      begin
  7          null;
  8  end;
  9  /

Trigger created.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2    from user_objects
  3    where object_name = 'TBL_BIR'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
10/13/2016 15:02:48

SQL> alter trigger tbl_bir disable
  2  /

Trigger altered.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2    from user_objects
  3    where object_name = 'TBL_BIR'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
10/13/2016 15:04:00

SQL> alter trigger tbl_bir enable
  2  /

Trigger altered.

SQL> select to_char(last_ddl_time,'mm/dd/yyyy hh24:mi:ss')
  2    from user_objects
  3    where object_name = 'TBL_BIR'
  4  /

TO_CHAR(LAST_DDL_TI
-------------------
10/13/2016 15:04:23

SQL>




А вот кто - это уже в аудит или в log miner.

SY.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326865
kubes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY, по USER_OBJECTS никаких изменений не было, в первом посте написал.
...
Рейтинг: 0 / 0
Как обойти триггер
    #39326932
user1241
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kubesочень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал
по LAST_DDL_TIME нельзя делать выводов, что триггер не сработал.
Очень похоже, что сработал, но не так как нужно, из-за какой-нибудь типичной ошибки
...
Рейтинг: 0 / 0
Как обойти триггер
    #39327208
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kubesUSER_OBJECTS никаких изменений не было, в первом посте написал.

Значит триггер (или eго часть) при каких-то условиях (например в триггере есть WHEN clause) не вызывается или есть проверка данных по результатам которой триггер не выполняет какую-то часть, и.т.п.

SY.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как обойти триггер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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