数据库
应用开发
使用 Oracle JDBC 和 Oracle 通用连接池 (UCP) 从 Java SE 应用、Java Web 应用(即 Servlet)和 Java EE 容器访问 Oracle Database Exadata Express 云服务。使用可从数据库服务下载的 TLS v1.2 和 Java KeyStore (JKS) 文件增强安全性。可以使用以下步骤创建一个成功的连接。
您必须已经安装了 JDK8(JDK8u71 或更高版本)或 JDK 7(JDK7u80 或更高版本)
下载 JCE 无限强度权限策略文件。请参见 README 中的安装说明。
将 12.2.0.1 JDBC 瘦驱动程序 (ojdbc8.jar) 和 12.2.0.1 ucp.jar
或安装了补丁的 12.1.0.2 JDBC 瘦驱动程序 (ojdbc7.jar) 和 12.1.0.2 UCP (ucp.jar) 下载到某个位置,然后将该位置添加为类路径。
注:您必须使用安装了补丁的 12.1.0.2 版本,可以从云下载页面下载该版本或者应用针对 bug 23176395 的补丁。有关更多详细信息,请参见 MOS 说明 2122800.1。
在您的 Web 浏览器中,导航至 Exadata Express 服务控制台。
如果当前未启用客户端访问,请在控制台上点击 Enable Client Access。
在控制台上点击 Download Client Credentials 下载 client_credentials.zip 文件,其中包含的安全凭证和网络配置文件将允许客户端访问您的云数据库。将这个 zip 文件保存到一个安全的位置。
解压缩 client_credentials.zip 文件并将其内容移至某个目录。例如,将文件移至 /home/myuser/cloud 或 C:\cloudtest
安全地存储 JKS 文件(truststore.jks 和 keystore.jks),确保只有授权连接 Exadata Express 服务的用户才能访问它们。默认情况下,Oracle 建议仅授予文件所有者权限。
将以下连接属性设置为系统属性或连接属性。有关如何设置连接级属性的更多详细信息,请参见 OracleConnection。
使用 oracle.net.tns_admin 系统属性设置 tnsnames.ora 文件的路径。
通过将 oracle.net.ssl_server_dn_match 系统属性设置为 true 来启用服务器 DN 匹配。
使用 javax.net.ssl.trustStore 和 javax.net.ssl.keyStore 系统属性设置 JKS keystore(密钥库)和 truststore(信任证书库)文件的位置。
使用 javax.net.ssl.keyStorePassword 和 javax.net.ssl.trustStorePassword 设置 JKS 密码。
(使用下载 client_credentials.zip 时提供的密码)
将 oracle.net.ssl_version 设置为 1.2(仅适用于 12.1.0.2 JDBC 驱动程序)
对于 JDK7,请设置一个额外的 SSL 属性以允许加密套件,即 oracle.net.ssl_cipher_suites =(TLS_RSA_WITH_AES_256_CBC_SHA256)
将应用更改为使用解压缩后的 tnsnames.ora 文件中指定的 Oracle 网络服务名称。例如,使用 jdbc:oracle:thin:@dbaccess 作为连接字符串。
如果遇到任何错误或异常,请参见 JDBC 故障排除提示页面。
运行 Java 应用的示例命令:
java -Doracle.net.tns_admin=/home/myuser/cloud \
-Doracle.net.ssl_server_dn_match=true \
-Doracle.net.ssl_version=1.2 \ (仅适用于 12.1.0.2 JDBC 驱动程序)
-Djavax.net.ssl.trustStore=/home/myuser/cloud/truststore.jks \
-Djavax.net.ssl.trustStorePassword=welcome1 \
-Djavax.net.ssl.keyStore=/home/myuser/cloud/keystore.jks \
-Djavax.net.ssl.keyStorePassword=welcome1 \
-Doracle.net.ssl_cipher_suites=(TLS_RSA_WITH_AES_256_CBC_SHA256) \(仅适用于 JDK7)
UCPSample
java -cp .\lib\ojdbc7.jar;.\lib\ucp.jar
-Doracle.net.tns_admin=c:\home\myuser\cloud
-Doracle.net.ssl_server_dn_match=true
-Doracle.net.ssl_version=1.2 (仅限于 12.1.0.2 JDBC 驱动程序)
-Djavax.net.ssl.trustStore=C:\home\myuser\cloud\truststore.jks
-Djavax.net.ssl.trustStorePassword=welcome1
-Djavax.net.ssl.keyStore=C:\home\myuser\cloud\keystore.jks
-Djavax.net.ssl.keyStorePassword=welcome1 -Doracle.net.ssl_cipher_suites=(TLS_RSA_WITH_AES_256_CBC_SHA256)(仅适用于 JDK7)
UCPSample
从此路径下载并安装 Oracle Instant Client。
设置 Instant Client 的位置,如下所示。
[Linux] export LD_LIBRARY_PATH=/home/myuser/instantclient_12_1:$LD_LIBRARY_PATH [Windows] set PATH=C:\instantclient_12_1;%PATH%
解压缩客户端凭证 client_credentials.zip 文件并将其内容移至某个目录。例如,将文件移至 /home/myuser/cloud 或 C:\CloudTest
安全地存储 Oracle Wallets (*.sso, *.p12),确保只有授权连接 Exadata Express 服务的用户才能访问它们。默认情况下,Oracle 建议仅授予文件所有者权限。
编辑解压缩后的 sqlnet.ora 文件,并将 DIRECTORY 值设置为存放 zip 文件内容的位置。
例如,更改路径:
WALLET_LOCATION = (SOURCE = (METHOD = file)
(METHOD_DATA = (DIRECTORY=?/network/admin))) Linux:
WALLET_LOCATION = (SOURCE = (METHOD = file)
(METHOD_DATA = (DIRECTORY=/home/myuser/cloud))) Windows:
WALLET_LOCATION = (SOURCE = (METHOD = file)
(METHOD_DATA = (DIRECTORY=C:\CloudTest)))将 TNS_ADMIN 环境变量设置为解压缩后文件所在的目录。 确保 sqlnet.ora 文件也位于该路径中。
[Linux] export TNS_ADMIN=/home/myuser/cloud
[Windows] set TNS_ADMIN=C:\CloudTest
确保类路径中包含 JDBC 驱动程序(ojdbc8.jar 或 ojdbc7.jar)。所使用的示例连接字符串是 "jdbc:oracle:oci:@dbaccess"
使用 java OCISample 命令运行示例
有关更加详细的配置信息,请参见“使用 Java 容器连接 Exadata Express 云服务”。
使用 JDeveloper、NetBeans、Eclipse 和 Intellij 等 Java 开发人员工具访问 Oracle Database Exadata Express 云服务。有关更加详细的配置信息,请参见“使用 JDBC 和 Java 开发人员工具访问 Oracle Exadata Express 云服务”。