Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

python:conectando-se a um banco de dados Oracle usando wallet/tnsnames da Oracle


Não posso ajudar a converter o lado Java para o lado C necessário para o cx_Oracle, mas talvez o seguinte ajude a mostrar o que o cx_Oracle precisa. Vou usar um exemplo baseado no Oracle Exadata Express, que usa uma carteira para conectar, veja as instruções genéricas para conectar linguagens de script ao Exadata Express aqui .

Sua configuração e arquivos exatos podem ser diferentes. Como Anthony indicou, a configuração de segurança não é específica para cx_Oracle. Especialistas em segurança mais experientes e úteis podem estar à espreita em outros fóruns.

Para o Exadata Express, um arquivo zip de carteira pré-fornecido é baixado. Para aplicativos Oracle Call Interface como cx_Oracle, precisamos apenas desses arquivos do zip:sqlnet.ora, tnsnames.ora e cwallet.sso. Você precisará criar/encontrar esses arquivos (ou o que precisar).

Meus arquivos são:

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 :Vou deixar isso para sua imaginação...

Eu coloquei esses três arquivos em /Users/cjones/Cloud e defina o ambiente para encontrá-los:
$ export TNS_ADMIN=/Users/cjones/Cloud

Agora posso me conectar usando o nome da conexão no tnsnames.ora Arquivo:
$ 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>

No cx_Oracle seu dsn seria dbaccess também.