我无法帮助将 Java 端转换为 cx_Oracle 所需的 C 端,但也许以下内容将有助于说明 cx_Oracle 需要什么。我将使用一个基于 Oracle Exadata Express 的示例,该示例使用钱包进行连接,请参阅将脚本语言连接到 Exadata Express here 的通用说明。
您的确切配置和文件可能会有所不同。正如 Anthony 所指出的,安全设置并非特定于 cx_Oracle。更有经验和乐于助人的安全专家可能会潜伏在其他论坛中。
对于 Exadata Express,会下载预先提供的钱包 zip 文件。对于像 cx_Oracle 这样的 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。