Nous utilisons ADO pour accéder à Oracle 10g version 2, fournisseur Oledb pour Oracle 10g. Nous sommes confrontés à un problème avec la mise en commun des connexions. La base de données réside sur la machine distante et le regroupement de connexions se produit comme il se doit. Mais si la machine distante tombe en panne pour une raison quelconque, la connexion est renvoyée à partir du pool et la requête sur cette connexion échoue. Lorsque cette connexion est fermée, elle est renvoyée au pool au lieu d'être invalide. Les demandes d'ouverture de connexion suivantes sont réussies mais la requête échoue. C'est un comportement étrange, selon les spécifications OLEDB, le fournisseur doit prendre en charge la propriété DBPROP_CONNECTIONSTATUS, donc en cas de connexion invalide, il ne serait pas retourné au pool.Oracle OLEDB Connexion Pooling et connexions non valides
Les choses se gâchent quand la machine distante arrive. Les connexions dans le pool sont toujours non valides et bien que l'ouverture de connexion réussisse, la requête sur la connexion échoue. Oracle OLEDB ne peut plus se connecter au serveur et nous devons redémarrer notre application. Eh bien, ce n'est pas souhaitable car notre application est une application critique.
Des idées sur la façon de surmonter ce problème.
Merci Mubashir
Je ne suppose pas que ce soit un projet .NET? Je demande parce que nous n'avons eu aucun problème avec le pilote ODP. NET sur 10g, a bien fonctionné. –
non ce n'est pas .NET. nous utilisons le fournisseur OLEDB pour Oracle avec ADO dans VC++ projet –
Utilisez-vous des méthodes statiques pour ouvrir les connexions à la base de données? Il s'agit d'une approche longue car il s'agit d'OLEDB/Oracle/VC++, mais il existe un comportement documenté dans la corruption du pool de bases de données .NET/SQL Server lorsqu'une connexion à une base de données est ouverte dans une méthode statique. –