|
|
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
В БД успешно долгое время работает триггер AFTER UPDATE OR INSERT OR DELETE FOR EACH ROW, но очень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал. База сторонняя, поэтому там могли нахимичить как угодно, но ALL_OBJECTS показывает, что триггер не отключался и не изменялся. Отсюда вопрос, есть ли способы (какие-то опции или методы внесения данных), которые позволяют обновить записи мимо триггера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 18:27 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubes, Интересно, каким образом ALL_OBJECTS может показать, что триггер не отключался? По вашему вопросу - например exchange partition можно обновить данные в обход триггера, можно наверное поизмышлять еще как нибудь... Best regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 18:33 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubesмимо триггера?Ошибка в 17-ой строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 19:00 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubesВ БД успешно долгое время работает триггер AFTER UPDATE OR INSERT OR DELETE FOR EACH ROW, но очень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал. База сторонняя, поэтому там могли нахимичить как угодно, но ALL_OBJECTS показывает, что триггер не отключался и не изменялся. Отсюда вопрос, есть ли способы (какие-то опции или методы внесения данных), которые позволяют обновить записи мимо триггера? Надо смотреть код триггера. Может там какой нибудь exception when others или еще что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 19:01 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubes, как варіант, прямая загрузка наскоко помню мимо триггевов .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 20:24 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko, да, с отключением я, пожалуй, погорячился, просто не было DDL. Данных пришло мало, поэтому exchange partition не подойдет. Elic, тоже не подходит - LOB'ов нет. veep, обработок исключений тоже никаких нет, как не было и ошибок при этом. Из того, что удалось найти, вроде бы относительно интересный вариант - это dbms_xstream_gg.set_foo_trigger_session_contxt. Но как-то шибко хитро, не верится, что могло быть использовано что-то подобное. Может быть, есть какой-то вариант проследить историю состояния триггера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 20:36 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
stax.., ну просто append же вряд ли отключит, или ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 20:41 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Ну, вообще то при exchange partition порция измененных данных может быть любой - от 0% до 146%, append hint игнорируется если есть триггер, проследить изменение состояния триггера имхо - или audit или logminer. Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2016, 20:52 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubesНо как-то шибко хитро, не верится, что могло быть использовано что-то подобное.Если оно в репликации и триггер fire_once, то ничего хитрого - штатная ситуация. Применимо не только к ГГ, но и стримсам вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 08:06 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
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/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 08:50 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko, имел в виду, что малая часть партиции изменилась. Audit и LogMiner недоступны, тк БД чужая, но спасибо за дельные комментарии. Elic, EE 11.2.0.3. триггер фиринг проперты, штатная может, но маловероятно, что кто-то руками там ее запустил. Тут похоже, что цели такой такой не было, но случайно как-то обошли этот триггер, внеся данные особым способом. !Z!, мы же как раз обсуждаем эту процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 12:51 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Имхо для начала попробовать повторить этот же апдейт/инсерт (с такими же данными), если будет ощущение, что триггер как бы все равно не сработал, значит надо разбираться с самим триггером ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:01 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Т.е. вариантов немного же: - апдейта не было - апдейт был, но триггер сработал не так, как ожидается - триггер кто-то отключил, как-то обошел (самый маловероятный имхо, то есть сначала разобраться с первыми двумя)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 17:06 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
Avotge, предыдущие два отмел, поэтому перешел к третьему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 20:36 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
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. А вот кто - это уже в аудит или в log miner. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 22:07 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
SY, по USER_OBJECTS никаких изменений не было, в первом посте написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 10:52 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubesочень похоже, что на днях был update данных в таблице, на которой висит этот триггер, и он не сработал по LAST_DDL_TIME нельзя делать выводов, что триггер не сработал. Очень похоже, что сработал, но не так как нужно, из-за какой-нибудь типичной ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 11:57 |
|
||
|
Как обойти триггер
|
|||
|---|---|---|---|
|
#18+
kubesUSER_OBJECTS никаких изменений не было, в первом посте написал. Значит триггер (или eго часть) при каких-то условиях (например в триггере есть WHEN clause) не вызывается или есть проверка данных по результатам которой триггер не выполняет какую-то часть, и.т.п. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39325676&tid=1887233]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
538ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 889ms |

| 0 / 0 |
