Una possibile soluzione è implementare Oracle Wallet. La creazione di una voce Oracle Wallet implica avere:
- un nome di risoluzione tnsname stabilito per detta istanza
- un nome utente e una password
Esempio:il sid Oracle con cui sto lavorando si chiama ORCL, l'utente con cui devo connettermi si chiama my_user. Nel tuo file tnsnames.ora hai già una voce che risolve il nome/sid del servizio ORCL, creane un'altra con esattamente gli stessi parametri:
#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)))
Dopo che la nuova voce è stata risolta correttamente, crea la voce del portafoglio Oracle per il nome locale ORCL_MY_USER. Questo nuovo nome locale che utilizzerai nel tuo script python per connetterti senza fornire o codificare una password al suo interno.
Esempio: