powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как определить, какие таблицы БД изменила программа
5 сообщений из 5, страница 1 из 1
Как определить, какие таблицы БД изменила программа
    #33279523
awn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
awn
Гость
Доброго времени суток, всезнающий 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 ко всем таблицам БД понятен
...
Рейтинг: 0 / 0
Как определить, какие таблицы БД изменила программа
    #33279862
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Настроить аудит, но это ресурсоемко если по строкам.
Правдо можно настроить только событие на открытеи таблицы.
sysmaster:sysptntab - говорит фигню на счет времени ( у меня )


Если только нужно сделать вывод о том какие таблицы используются, можно поступить так:
Если это однопользовательская среда, то:
1. Перезапускаете Информикс (TBLSPACE_STATS 1 в onconfig)
2. Выполняете только нужную программу
3. смотрите onstat -g ppf
3. По partnum определяете имена таблиц (удаленных естественно не будет)

Можно воспользоваться трассированием сессии, например перед запуском приложения выставить переменну окр SQLIDEBUG
...
Рейтинг: 0 / 0
Как определить, какие таблицы БД изменила программа
    #33280097
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
время последнего изменения таблицы нигде, кроме логов, не хранится. попробуйте распарсить логи, или настраивайте аудит.
...
Рейтинг: 0 / 0
Как определить, какие таблицы БД изменила программа
    #33280994
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри http://www.sql.ru/forum/actualthread.aspx?tid=217248
может увидишь интересные идеи.
Чаще всего регистрацию событий в прикладной системе вешают на саму прикладную систему (сервер приложений), совмещая с подсистемой регламентации доступа и контроля.
Аудит - универсальная вещь, в Информиксе имеет большие возможности, но требует большого внимания и работы по настройке, к тому же, это могут быть большие объемы информации, которые потом еще необходимо загружать в другую БД и обрабатывать.
Для получения более точных ответов необходимо задать более точный вопрос - что все таки нужно?
- узнать кто и когда (точное время) изменил таблицы, причем сохранив старое значение
- узнать, какие таблицы изменяет запрос Х (программа ХХ) и в какое время, независимо от того, кто ее запускал
- регистрировать все и вся (кто, что, когда изменял)
- просто знать, какие таблицы будут изменены (прочитаны) при выполнении программы ХХ
...
Рейтинг: 0 / 0
Как определить, какие таблицы БД изменила программа
    #33282305
awn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
awn
Гость
2vasilis
Спасибо за линк.
Задача идентично той, что в посте-начале ветки (с точностью до Informix/Oracle).
Мы сами придумали триггер и timestamp, но как-то громоздко, хотелось более простого решения.
Будем, наверное, копать аудит. Спасибо vybegallo&zaiets.


А упомянутый в ветке CREATE EVENT MONITOR - похоже то, что можно использовать. Жаль, он в DB2.
И еще вот это хорошо - "..
задачу можног решить Q Replication Event Publishing.
Это дает возможность публиковать в виде XML через MQ message изменения строк (всех или по условию WHERE), изменение отдельных колонок, изменение строки при изменении колонок которые не мониторятся, before and after значение и многое еще чего.
Любое приложение может subscribe на интересующие его публикуемые изменения..." . IBM рулит.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как определить, какие таблицы БД изменила программа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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