python: подключение к базе данных Oracle с использованием кошелька Oracle / tnsnames - PullRequest
0 голосов
/ 05 июля 2018

Так что я могу подключиться к базе данных Oracle как таковой:

import cx_Oracle as ora
dsnStr = ora.makedsn(host="ABC.COM", port="ABC_PORT", sid="ABC")
con = ora.connect(user="ABC_USER", password="ABC_PASSWORD", dsn=dsnStr)
print(con.version)
con.close()

и это работает очень хорошо, но я бы хотел подключиться, используя Oracle wallet / tnsnames / database.properties (я из мира Java). Пока не могу найти ничего о том, как этого добиться. Кроме того, как я могу "настроить" cx_Oracle с точки зрения путей к этим Oracle wallet / tnsnames / database.properties соответствующим файлам.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я не могу помочь с преобразованием стороны Java в сторону C, необходимую для cx_Oracle, но, возможно, следующее поможет показать, что нужно cx_Oracle. Я буду использовать пример, основанный на Oracle Exadata Express, который использует кошелек для подключения, см. Общие инструкции по подключению языков сценариев к Exadata Express здесь .

Ваши точные настройки и файлы могут отличаться. Как указал Энтони, настройки безопасности не относятся к cx_Oracle. Более опытные и полезные эксперты по безопасности могут скрываться на других форумах.

Для Exadata Express загружается предварительно предоставленный файл почтового индекса кошелька. Для приложений Oracle Call Interface, таких как cx_Oracle, нам просто нужны эти файлы из zip: sqlnet.ora, tnsnames.ora и cwallet.sso. Вам нужно будет создать / найти эти (или нужные вам) файлы.

Мои файлы:

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 : Я оставлю это вашему воображению ...

Я поместил эти три файла в /Users/cjones/Cloud и настроил среду для их поиска:

$ export TNS_ADMIN=/Users/cjones/Cloud

Теперь я могу подключиться, используя имя подключения в файле tnsnames.ora:

$ sqlplus -l cj/mypassword@dbaccess

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>

В cx_Oracle ваш dsn тоже будет dbaccess.

0 голосов
/ 05 июля 2018

cx_Oracle использует те же методы для подключения к базе данных, что и SQL Plus. Таким образом, вы можете сначала протестировать с SQL Plus, если вам будет проще.

Для этого вам нужно создать файл конфигурации sqlnet.ora. Это позволяет вам установить такие параметры, как местоположение файла кошелька . Переменная среды TNS_ADMIN может использоваться для указания местоположения этого и других файлов конфигурации (например, tnsnames.ora), если оно не найдено в расположении по умолчанию. См. документацию для получения дополнительной информации.

...