Oracle
 sql >> Database >  >> RDS >> Oracle

python:connessione a un database Oracle utilizzando wallet/tnsnames di Oracle

Non posso aiutare a convertire il lato Java nel lato C necessario per cx_Oracle, ma forse quanto segue aiuterà a mostrare ciò di cui cx_Oracle ha bisogno. Userò un esempio basato su Oracle Exadata Express, che utilizza un portafoglio per la connessione, vedere le istruzioni generiche per la connessione di linguaggi di scripting a Exadata Express qui .

La tua configurazione e i tuoi file esatti potrebbero differire. Come indicato da Anthony, l'impostazione della sicurezza non è specifica per cx_Oracle. Esperti di sicurezza più esperti e disponibili potrebbero essere in agguato in altri forum.

Per Exadata Express, viene scaricato un file zip del portafoglio pre-fornito. Per le applicazioni Oracle Call Interface come cx_Oracle abbiamo solo bisogno di questi file dallo zip:sqlnet.ora, tnsnames.ora e cwallet.sso. Dovrai creare/trovare questi (o qualunque cosa ti serva).

I miei file sono:

sqlnet.ora :

WALLET_LOCATION = (SOURCE = (METHOD = file)
                   (METHOD_DATA = (DIRECTORY="$TNS_ADMIN")))

SSL_SERVER_DN_MATCH=yes

tnsnames.ora :

dbaccess = (description=
          (address=(protocol=tcps)(port=1522)(host=whereever.com))
          (connect_data=(service_name=whereever2.com))   
          (security=(ssl_server_cert_dn="CN=wherever2.com,O=Oracle Corporation,L=Redwood Shores,ST=California,C=US"))  
       )

cwallet.sso :Lascio questo alla tua immaginazione...

Ho messo quei tre file in /Users/cjones/Cloud e imposta l'ambiente per trovarli:

$ export TNS_ADMIN=/Users/cjones/Cloud

Ora posso connettermi usando il nome della connessione in tnsnames.ora file:

$ sqlplus -l cj/[email protected]

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 6 10:20:21 2018

Copyright (c) 1982, 2017, Oracle.  All rights reserved.

Last Successful login time: Tue Jul 03 2018 13:00:06 +10:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

In cx_Oracle il tuo dsn sarebbe dbaccess anche.