Une solution possible consiste à implémenter Oracle Wallet. La création d'une entrée Oracle Wallet implique d'avoir :
- un nom de résolution tnsname établi pour ladite instance
- un nom d'utilisateur et un mot de passe
Exemple :Le sid Oracle avec lequel je travaille s'appelle ORCL, l'utilisateur avec lequel je dois me connecter s'appelle my_user. Dans votre fichier tnsnames.ora, vous avez déjà une entrée qui résout le nom/sid du service ORCL, créez-en une autre avec exactement les mêmes paramètres :
#initial local name entry:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
#create an additional local name entry:
ORCL_MY_USER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
Une fois la nouvelle entrée résolue avec succès, créez l'entrée de portefeuille oracle pour le nom local ORCL_MY_USER. Ce nouveau nom local que vous allez utiliser dans votre script python pour vous connecter sans fournir ni coder en dur un mot de passe.
Exemple :