Bonjour à tous,

Je rencontre un soucis en passant d'un client 7 à 9i.

J'ai un programme en VB6 utilisant OO4O, qui modifie le TNSNames.ORA afin de changer l'adresse IP d'une entrée. Ceci nous permet d'exécuter par exemple une requête sur une 100aine de serveurs en automatique.

En Oracle 7, aucun soucis, à chaque nouvelle connexion on pointe bien sur le bon serveur. Depuis le passage en Oracle 9, pendant 1 à 2 secondes, une nouvelle connexion ne se fait pas sur le contenu réel du fichier TNSNames mais sur un précédent. Je pense donc à une mise en cache du fichier par le client Oracle.

Pour que cela passe, je suis obligé de mettre une pause de 2 secondes entre chaque connexion sinon j'ai qlq chose comme :

Code :
1
2
3
4
5
6
7
8
 
TNSNAME     Connexion réelle
Serveur1    Serveur1
Serveur2    Serveur1
Serveur3    Serveur1
Serveur4    Serveur4
Serveur5    Serveur4
Serveur6    Serveur4
Vous auriez une idée pour résoudre ça ?

J'ai testé ma pause de 2 secondes avant de modifier le fichier TNSNames afin de m'assurer que ce n'est pas provoqué par une lenteur de prise en compte de la modification du fichier. Ca fait donc [Pause] Modif - connexion [Pause] Modif - connexion d'où mon idée de mise en cache par le client.

Merci !

Niveau code VB, je fais du classique :
Code :
1
2
3
4
5
6
7
Set gsesOraSession = CreateObject("OracleInProcServer.XOraSession")
Set gdtbOraDataBase = gsesOraSession.OpenDatabase("oracle", "User/Mdp", 0&)
 
...mon traitement...
 
Set gdtbOraDataBase = Nothing
Set gsesOraSession  = Nothing
Et le contenu de mon SqlNet.ora (la partie Trace a été ajoutée après constatation du soucis, mais rien vu de probant dedans) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# SQLNET.ORA Network Configuration File: c:\oracle\ora92\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
 
TRACE_DIRECTORY_CLIENT = C:\oracle\ora92\network\log
LOG_FILE_CLIENT = journal.log
TRACE_UNIQUE_CLIENT = on
SQLNET.CLIENT_REGISTRATION = 0
TRACE_DIRECTORY_SERVER = C:\oracle\ora92\network\log
LOG_DIRECTORY_CLIENT = C:\oracle\ora92\network\log
TRACE_FILE_CLIENT = client.log
TRACE_FILE_SERVER = serveur.log
TRACE_LEVEL_CLIENT = USER
TRACE_LEVEL_SERVER = USER
 
AUTOMATIC_IPC = OFF
NAMES.DEFAULT_DOMAIN = world
NAME.DEFAULT_ZONE = world
SQLNET.CRYPTO_SEED = "1008983755-86573922"
NAMES.DIRECTORY_PATH= (TNSNAMES)