Nos bases de données de développement (Oracle 9i) utilisent une liaison de base de données distante vers une base de données partagée distante.Test d'une requête SQL sur Oracle qui inclut une base de données distante
Cette décision a été prise il y a des années lorsqu'il n'était pas pratique de mettre certains des schémas de base de données sur une machine de développement - ils étaient trop gros.
Nous avons certains schémas sur les machines de développement et nous donnons l'apparence locale aux schémas distants en utilisant les liens de base de données d'Oracle, ainsi que quelques synonymes sur les machines de développement. Le problème que j'ai est que je voudrais tester un morceau de SQL qui joint des tables dans les schémas de chaque côté du lien de base de données.
par exemple. (Un cas simplifié):
select a.col, b.col
from a, b
where a.b_id = b.id
- un est sur la base de données locale
- b est sur la base de données de suppression
- J'ai un synonymn sur les paramètres régionaux DB afin que « b » indique effectivement à b @remotedb.
L'exécution de la requête prend des âges dans l'environnement de développement en raison du lien. Les requêtes fonctionnent bien en production (je ne pense pas que l'optimiseur Oracle basé sur les coûts puisse très bien gérer les liens de base de données).
Nous n'avons pas très bien réussi à écrire des tests unitaires pour ces types de requêtes dans le passé - probablement en raison des mauvaises performances - alors j'aimerais commencer à créer des tests pour ces types de requêtes.
Est-ce que quelqu'un a des stratégies pour écrire un test unitaire pour une telle requête, afin d'éviter les problèmes de performance liés à l'utilisation du lien de base de données? Normalement, je chercherais des moyens d'essayer de simuler le service distant, mais comme tout cela se trouve dans une requête SQL, je ne vois pas comment on peut facilement se moquer de la base de données supprimée.
La création locale des schémas est un exercice non trivial. C'est une base de données Oracle Applications (http://www.oracle.com/applications/home.html - finances, RH, recrutement, etc.). Tous les schémas et les tables sont fortement couplés. Il existe des dizaines de schémas et des milliers d'objets de base de données. En réalité, je ne m'intéresse qu'à environ 5 à 10 tables de cette base de données. –
Pouvez-vous exporter les 5 à 10 tables de la base de données qui vous intéresse sans aucune donnée et les importer dans le dev db? Vous pouvez choisir d'inclure toutes les tables de référence si vous préférez un ensemble plus complet ou uniquement les tables que vous voulez avec/sans données. Vous pouvez créer l'utilisateur qui possède la table à l'avance dans la base de données dev et lui assigner un espace de table et un quota appropriés, puis importer votre fichier d'exportation pour créer le schéma. Suivez cela en les peuplant avec les données appropriées, puis importez les statistiques. – MichaelN