sql >> Base de Datos >  >> RDS >> Oracle

python:conexión a una base de datos de Oracle usando la billetera/tnsnames de Oracle

No puedo ayudar con la conversión del lado Java al lado C que necesita cx_Oracle, pero tal vez lo siguiente ayude a mostrar lo que necesita cx_Oracle. Usaré un ejemplo basado en Oracle Exadata Express, que usa una billetera para conectarse; consulte las instrucciones genéricas para conectar lenguajes de secuencias de comandos a Exadata Express aquí .

Su configuración y archivos exactos pueden diferir. Como indicó Anthony, la configuración de seguridad no es específica de cx_Oracle. Los expertos en seguridad más experimentados y útiles pueden estar al acecho en otros foros.

Para Exadata Express, se descarga un archivo zip de billetera proporcionado previamente. Para las aplicaciones de Oracle Call Interface como cx_Oracle, solo necesitamos estos archivos del zip:sqlnet.ora, tnsnames.ora y cwallet.sso. Deberá crear/encontrar estos (o lo que necesite) archivos.

Mis archivos son:

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 :Dejo esto a tu imaginación...

Puse esos tres archivos en /Users/cjones/Cloud y configura el entorno para encontrarlos:

$ export TNS_ADMIN=/Users/cjones/Cloud

Ahora puedo conectarme usando el nombre de conexión en tnsnames.ora archivo:

$ 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>

En cx_Oracle su dsn sería dbaccess también.