2010-01-22 19 views
0

Je suis en train de configurer un serveur de build central. Le serveur est responsable de produire les artefacts de construction officiels qui seront déployés dans tous les environnements. Pour l'une des applications, il existe une étape de génération qui écrit dans une base de données. Au moment du déploiement, nous aurions besoin d'exécuter cette étape de construction dans l'environnement approprié. Comme il est difficile/coûteux de reproduire de manière fiable cette étape de construction plus tard, l'idée est née de capturer l'exécution de sql juste le script sql plus tard au moment du déploiement.Comment tracer des commandes sql pour une connexion spécifique à db2?

Je n'ai aucun contrôle sur le code source qui génère le sql. C'est un programme Java qui utilise Hibernate. Je n'ai pas encore trouvé, où mettre le log4j.properties/log4j.xml pour utiliser la fonctionnalité de trace hibernate. Et il pourrait y avoir un problème avec les déclarations préparées montrant '?' au lieu de la valeur réelle.

Est-ce que quelqu'un a de l'expérience avec Activity Monitor de DB2 et comment l'utiliser? Ou existe-t-il d'autres options (plus faciles) comme le remplacement du pilote db2 dans la configuration d'hibernation? Je veux toujours utiliser le pilote DB2Dialect, cependant.

EDIT: Je n'ai aucun contrôle sur la structure de la base de données. La structure de la base de données peut être mise à jour ou le processus peut écrire dans différentes tables à l'avenir. Cela ne devrait pas avoir d'impact sur la solution que je suis en train de mettre en place maintenant.

Répondre

0

Jetez un oeil à P6Spy:

P6Spy est un framework open source pour applications de support qui interceptent et éventuellement modifier la base de données déclarations. La distribution P6Spy inclut les modules suivants:

P6Log. P6Log intercepte et enregistre les instructions de base de données de toute application qui utilise JDBC. Cette application est particulièrement utile pour les développeurs à surveiller les instructions SQL produites par serveurs EJB, permettant au développeur d'écrire code qui atteint l'efficacité maximale sur le serveur. P6Spy est conçu pour être installé en minutes et ne nécessite aucun changement de code.

http://www.p6spy.com/

+0

J'avais l'impression que p6spy ne concernait que les applications fonctionnant sur un serveur d'application. Comme il s'agit d'une étape de génération, aucun serveur d'applications n'est impliqué. Je vais regarder de plus près. –

0

Si la table est inexistante/vide avant qu'elle ne soit remplie, vous pouvez également exporter la table résultante, y compris les enregistrements, et l'importer dans votre base de données de production au moment du déploiement.

Comme vous l'avez déjà dit, il peut s'avérer impossible de déterminer le contenu des tables en utilisant un journal des actions effectuées. Consigner les instructions préparées ne contiendra pas les données liées et si plus de simples insertions sont exécutées, vous pourriez être forcé d'implémenter des parties de SQL pour reproduire ce que vous avez enregistré.

+0

Cet outil écrit à une base de données existante. Je ne peux pas garantir qu'il n'écrit que sur une table et je ne peux pas garantir que la structure de la base de données changera à l'avenir. Le processus devrait toujours fonctionner. –

+0

Si l'outil * met à jour * une base de données existante sur laquelle vous n'avez aucun contrôle, comment pouvez-vous vous assurer que le script SQL enregistré peut réellement être exécuté sur les bases de production? – rsp

+0

Je reçois les scripts pour créer la base de données et mettre à jour la base de données. Nous (aurons) des environnements de développement et d'assurance qualité. Cependant, nous utilisons une bibliothèque développée par un tiers et distribuée sous forme de fichiers binaires. Par conséquent, nous ne pouvons pas changer la structure db.Et nous avons le désir de ne pas changer nos processus quand 'juste' la structure deb change. –