蟒蛇:使用Oracle的钱包连接到Oracle数据库/ TNSNAMES(python: conne

2019-11-04 23:18发布

所以,我可以连接到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相应的文件。

Answer 1:

cx_Oracle使用相同的技术来连接到数据库为SQL Plus 所以,你可以用SQL测试加上第一,如果你发现更容易做。

为了做到这一点,你需要创建一个SQLNET.ORA配置文件。 这允许您设置等参数的位置钱包文件 。 环境变量TNS_ADMIN可以用来指定此位置和其他配置文件(如tnsnames.ora中),如果它不是在默认位置找到。 请参阅文档以获取更多信息。



Answer 2:

我不能与Java端转换到由cx_Oracle所需的C面的帮助,但也许下面将有助于显示什么cx_Oracle需要。 我将使用基于Oracle数据库云服务器快车,它采用了钱包进行连接,查看脚本语言连接到数据库云服务器Express中的通用指令的例子在这里 。

您的确切配置和文件可能会有所不同。 安东尼表示,安全设置不特定于cx_Oracle。 更多有经验的和有益的安全专家可以在其他论坛上潜伏。

对于Exadata的快递,预先提供的钱包zip文件下载。 对于Oracle调用接口的应用,如cx_Oracle我们刚刚从zip需要这些文件:sqlnet.ora中,tnsnames.ora中,和cwallet.sso。 您将需要创建/找到这些(或whater需要)文件。

我的文件是:

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您的dsndbaccess了。



文章来源: python: connecting to an Oracle database using Oracle's wallet/tnsnames