|
|
|
Как определить, какие таблицы БД изменила программа
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, всезнающий All. Может быть , странного хочу... Дано: Есть программа P, выполняющая над БД Informix/Oracle некоторые (неизвестные заранее действия), изменяющие (или не изменяющие) таблицы БД. P выполняет Действия типа UPDATE, DELETE, INSERT. Возможны ситуации, когда P делает INSERT записи ( а возможно,и не одной) , потом UPDATE ее же, потом DELETE ее же. В БД наличествует куча триггеров, процедур и прочей бизнес-лигики, которая в свою очередь может работать со своимим таблицами -> проследить цепочки затруднительно. Хочется: 1. перед запуском программы P получить времена (типа timestamp) обновления каждой таблицы. Пусть это будет делать программа Q. 2. Запустить программу P и пусть она себе модифицирует БД. 3. вновь запустить программу Q, получить времена модификации таблиц, сравнить с полученными на шаге 1 и сделать вывод о том, какие таблицы затрагиваются программой P. Полагаю, что существует (увы, неизвестный мне) способ получения времени модификации таблиц БД встроенными средствами Informix/Oracle. Не подскажет ли кто-нибудь что-нибудь о таком способе? PS: Вариант с добавлением триггера или поля timestamp ко всем таблицам БД понятен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2005, 17:15 |
|
||
|
Как определить, какие таблицы БД изменила программа
|
|||
|---|---|---|---|
|
#18+
Настроить аудит, но это ресурсоемко если по строкам. Правдо можно настроить только событие на открытеи таблицы. sysmaster:sysptntab - говорит фигню на счет времени ( у меня ) Если только нужно сделать вывод о том какие таблицы используются, можно поступить так: Если это однопользовательская среда, то: 1. Перезапускаете Информикс (TBLSPACE_STATS 1 в onconfig) 2. Выполняете только нужную программу 3. смотрите onstat -g ppf 3. По partnum определяете имена таблиц (удаленных естественно не будет) Можно воспользоваться трассированием сессии, например перед запуском приложения выставить переменну окр SQLIDEBUG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2005, 18:52 |
|
||
|
Как определить, какие таблицы БД изменила программа
|
|||
|---|---|---|---|
|
#18+
время последнего изменения таблицы нигде, кроме логов, не хранится. попробуйте распарсить логи, или настраивайте аудит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2005, 00:42 |
|
||
|
Как определить, какие таблицы БД изменила программа
|
|||
|---|---|---|---|
|
#18+
Посмотри http://www.sql.ru/forum/actualthread.aspx?tid=217248 может увидишь интересные идеи. Чаще всего регистрацию событий в прикладной системе вешают на саму прикладную систему (сервер приложений), совмещая с подсистемой регламентации доступа и контроля. Аудит - универсальная вещь, в Информиксе имеет большие возможности, но требует большого внимания и работы по настройке, к тому же, это могут быть большие объемы информации, которые потом еще необходимо загружать в другую БД и обрабатывать. Для получения более точных ответов необходимо задать более точный вопрос - что все таки нужно? - узнать кто и когда (точное время) изменил таблицы, причем сохранив старое значение - узнать, какие таблицы изменяет запрос Х (программа ХХ) и в какое время, независимо от того, кто ее запускал - регистрировать все и вся (кто, что, когда изменял) - просто знать, какие таблицы будут изменены (прочитаны) при выполнении программы ХХ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2005, 12:57 |
|
||
|
Как определить, какие таблицы БД изменила программа
|
|||
|---|---|---|---|
|
#18+
2vasilis Спасибо за линк. Задача идентично той, что в посте-начале ветки (с точностью до Informix/Oracle). Мы сами придумали триггер и timestamp, но как-то громоздко, хотелось более простого решения. Будем, наверное, копать аудит. Спасибо vybegallo&zaiets. А упомянутый в ветке CREATE EVENT MONITOR - похоже то, что можно использовать. Жаль, он в DB2. И еще вот это хорошо - ".. задачу можног решить Q Replication Event Publishing. Это дает возможность публиковать в виде XML через MQ message изменения строк (всех или по условию WHERE), изменение отдельных колонок, изменение строки при изменении колонок которые не мониторятся, before and after значение и многое еще чего. Любое приложение может subscribe на интересующие его публикуемые изменения..." . IBM рулит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2005, 18:41 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33279862&tid=1608908]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
82ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 415ms |

| 0 / 0 |
