使用 Java 访问 Oracle Database Exadata Express 云服务 (EECS) 的初始步骤

使用 Oracle JDBC 和 Oracle 通用连接池 (UCP) 从 Java SE 应用、Java Web 应用(即 Servlet)和 Java EE 容器访问 Oracle Database Exadata Express 云服务。使用可从数据库服务下载的 TLS v1.2 和 Java KeyStore (JKS) 文件增强安全性。可以使用以下步骤创建一个成功的连接。

1.使用 JDBC 瘦驱动程序和 UCP 进行连接

2.启用 Oracle 网络连接并下载 JKS 文件

  • 在您的 Web 浏览器中,导航至 Exadata Express 服务控制台

  • 如果当前未启用客户端访问,请在控制台上点击 Enable Client Access

  • 在控制台上点击 Download Client Credentials 下载 client_credentials.zip 文件,其中包含的安全凭证和网络配置文件将允许客户端访问您的云数据库。将这个 zip 文件保存到一个安全的位置。

  • 解压缩 client_credentials.zip 文件并将其内容移至某个目录。例如,将文件移至 /home/myuser/cloudC:\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.trustStorejavax.net.ssl.keyStore 系统属性设置 JKS keystore(密钥库)和 truststore(信任证书库)文件的位置。

    • 使用 javax.net.ssl.keyStorePasswordjavax.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)

3.运行应用

  • 将应用更改为使用解压缩后的 tnsnames.ora 文件中指定的 Oracle 网络服务名称。例如,使用 jdbc:oracle:thin:@dbaccess 作为连接字符串。

  • 如果遇到任何错误或异常,请参见 JDBC 故障排除提示页面。 

  • 运行 Java 应用的示例命令:

  • [Linux]
    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
  • [Windows]
    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

4.使用支持钱夹的 JDBC-OCI 驱动程序创建连接

  • 从此路径下载并安装 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/cloudC:\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 命令运行示例

5.使用 Java 容器访问 EECS

6.使用 Java 开发人员工具访问 EECS

Exadata Express 资源

其他开发人员资源