Как отследить команды sql для конкретного подключения к db2?

Я нахожусь в процессе настройки центрального сервера сборки. Сервер отвечает за создание официальных артефактов сборки, которые будут развернуты во всей среде. Для одного из приложений есть шаг сборки, который записывает в базу данных. Во время развертывания нам нужно будет запустить этот шаг сборки в соответствующей среде. Поскольку надежно воспроизвести этот шаг сборки позже сложно/дорого, родилась идея зафиксировать запуск sql только скриптом sql позже во время развертывания.

У меня нет контроля над исходным кодом, который генерирует sql. Это Java-программа, использующая режим гибернации. Я еще не выяснил, куда поместить log4j.properties/log4j.xml, чтобы использовать функцию трассировки гибернации. И может возникнуть проблема с подготовленными операторами, показывающими '?' вместо фактического значения.

Есть ли у кого-нибудь опыт работы с монитором активности DB2 и как его использовать? Или есть другие (более простые) варианты, такие как замена драйвера db2 в конфигурации спящего режима? Однако я все еще хочу использовать драйвер DB2Dialect.

EDIT: я не могу контролировать структуру базы данных. Структура базы данных может быть обновлена, или в будущем процесс может выполнять запись в другие таблицы. Это не должно повлиять на решение, которое я сейчас настраиваю.


person Peter Schuetze    schedule 22.01.2010    source источник


Ответы (2)


Посмотрите на p6spy:

P6Spy — это платформа с открытым исходным кодом для поддержки приложений, которые перехватывают и при необходимости изменяют операторы базы данных. В состав дистрибутива P6Spy входят следующие модули:

P6Лог. P6Log перехватывает и регистрирует операторы базы данных любого приложения, использующего JDBC. Это приложение особенно полезно разработчикам для мониторинга операторов SQL, создаваемых серверами EJB, что позволяет разработчику писать код, обеспечивающий максимальную эффективность на сервере. P6Spy устанавливается за считанные минуты и не требует изменения кода.

http://www.p6spy.com/

person Thorbjørn Ravn Andersen    schedule 22.01.2010
comment
У меня сложилось впечатление, что p6spy предназначен только для приложений, работающих на сервере приложений. Поскольку это этап сборки, сервер приложений не задействован. Я посмотрю поближе. - person Peter Schuetze; 23.01.2010

Если таблица не существует / пуста до заполнения идентификатора, вы также можете экспортировать полученную таблицу, включая записи, и импортировать ее в производственную базу данных во время развертывания.

Как вы уже сказали, определить содержимое таблиц по журналу выполненных действий может оказаться невозможным. Подготовленные операторы регистрации не будут содержать связанных данных, и если выполняется больше, чем простые вставки, вам может потребоваться реализовать части SQL для воспроизведения того, что вы записали.

person rsp    schedule 22.01.2010
comment
Этот инструмент записывает в существующую базу данных. Я не могу гарантировать, что он записывает только в одну таблицу, и я не могу гарантировать, что структура базы данных изменится в будущем. Процесс должен по-прежнему работать, чем. - person Peter Schuetze; 23.01.2010
comment
Если инструмент обновляет существующую базу данных, которую вы не контролируете, как сделать/можно ли убедиться, что записанный сценарий SQL действительно может быть успешно выполнен для рабочих баз данных? - person rsp; 23.01.2010
comment
Я получаю сценарии для создания БД и обновления БД. У нас (будет) иметь среду разработки и контроля качества. Однако мы используем библиотеку, разработанную третьей стороной и распространяемую в виде двоичных файлов. Поэтому мы не можем изменить структуру БД. И у нас есть желание не менять наши процессы, когда меняется «просто» структура дэбов. - person Peter Schuetze; 23.01.2010