配置并连接到 Oracle Autonomous Database

获取 Oracle Autonomous Database 配置文件并将其安装在安装了 CMAN-TDM 的计算机上。

使用相互 TLS 协议配置 Oracle Autonomous Database Wallet 文件

您必须使用 wallet 连接到 Oracle Autonomous Database (包括 Oracle Autonomous Data WarehouseOracle Autonomous Transaction ProcessingOracle Autonomous JSON Database )。这提供了双向传输层安全 (Transport Layer Security,TLS),可提高验证和加密的安全性。
  1. 登录 Oracle Cloud Infrastructure 控制台并导航到自治数据库所在的区域。
  2. 导航到 Autonomous Database 页面,然后单击 DB Connection 选项卡。
    此时将显示 Autonomous Database Details。
  3. 单击下载 Wallet
    系统将提示您输入 wallet 口令。
  4. 提供密码,然后将 Wallet ZIP 文件下载到本地计算机。
    使用首选的 SSH 文件传输应用程序或方法将下载的 ZIP 文件传输到 Linux 计算机。保存(或记住)钱包密码非常重要。必须稍后在此解决方案中使用密码。
    转到钱包 ZIP 文件位于 Linux 计算机中的下一步。
  5. 将内容提取到 $TNS_ADMIN 目录。

    注意:

    此位置可能是 CMAN-TDM 计算机安装的缺省 $ORACLE_HOME/network/admin 路径。

    wallet 不包含数据库用户名和密码身份证明,但您仍应将 wallet 和文件保存在安全位置以供日后使用。

    下面是提取的文件的示例:

    -rw-r--r--. 1 oracle oinstall  7085 Sep  3 07:24 cwallet.sso
    -rw-r--r--. 1 oracle oinstall  7040 Sep  3 07:24 ewallet.p12
    -rw-r--r--. 1 oracle oinstall  3243 Aug 24 14:25 keystore.jks
    -rw-r--r--. 1 oracle oinstall   691 Aug 24 14:25 ojdbc.properties
    -rw-r--r--. 1 oracle oinstall  3387 Aug 24 14:25 README
    -rw-r--r--. 1 oracle oinstall   235 Sep  3 08:00 sqlnet.ora
    -rw-r--r--. 1 oracle oinstall  1832 Sep  3 08:41 tnsnames.ora
    -rw-r--r--. 1 oracle oinstall  3336 Aug 24 14:25 truststore.jks

    当前用例所需的主要文件为 cwallet.ssoewallet.p12sqlnet.oratnsnames.ora。仅当用户计划通过 JDBC 应用程序进行连接时,才需要其他文件。

  6. 编辑 sqlnet.ora 文件并将 wallet 位置 DIRECTORY 更改为包含 cwallet.sso 文件的目录:
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u01/app/oracle/network/admin")))
    SSL_SERVER_DN_MATCH=yes

    现在设置了 Wallet,您可以使用 tnsnames.ora 中的“网络服务名称”连接字符串之一(例如 exampledb_high)连接到数据库。

  7. 打开 tnsnames.ora 文件,并将自治数据库的连接详细信息存储在另一个文件中,例如 $HOME/dbdetails.txt
    配置 CMAN-TDM 时,将使用自治数据库的地址、安全性和服务名称参数。
  8. (可选)使用 SQL*Plus 检查数据库连接。
    • 如果 SQL*Plus 与 CMAN-TDM 在同一台计算机上,则可以从 wallet 目录 $TNS_ADMIN 中查看 tnsnames.ora 文件。

    • 如果 SQL*Plus 安装在与 CMAN-TDM 不同的计算机上,则将 Autonomous Database wallet 文件复制到安装了 SQL*Plus 的计算机的 $TNS_ADMIN 目录。然后,将数据库详细信息从上一节复制到同一计算机上的 $TNS_ADMIN/tnsnames.ora 文件。

    $TNS_ADMIN/tnsnames.ora 文件包含多个网络服务名称(位于 "=" 符号的左侧)。您可以使用任何数据库,具体取决于所需的数据库性能和服务并发性级别。

    ADMIN 用户身份运行 SQL*Plus,并输入您在创建数据库期间设置的密码:

    $ sqlplus -l admin@adb-name_high
    成功后,您将连接到数据库。

配置 CMAN 以连接到 Oracle Autonomous Database

使用 CMAN-TDM 计算机的 $TNS_ADMIN 目录中的所有规范创建、配置和添加 CMAN (cman.ora) 配置文件。该目录通常位于 ORACLE_HOME/network/admin 中。

cman.ora 文件是 CMAN-TDM 读取的主配置文件。它包含用于允许 Traffic Director 和 CMAN 连接 Oracle Autonomous Database 的所有配置详细信息。

  1. oracle 用户身份登录。
  2. 导航到 $TNS_ADMIN 目录并创建 cman.ora 文件。
    $ cd $TNS_ADMIN
    $ vi cman.ora
  3. 配置 cman.ora 文件。
    在此示例中, CMAN-TDM 实例名称为 cman-test。客户机应用程序通过 TCP 协议连接到 CMAN 进程, CMAN 通过 TCPS 协议连接到 Oracle Autonomous Database

    地址参数包含 CMAN-TDM 服务器的主机名和协议。以下示例 cman.ora 文件使用 TCP 和端口号 1523。您可以选择 Linux 计算机上的任何可用端口号。

    配置以下参数:

    • tdm=true重要! 必须将 tdm 参数设置为 true 才能启用 Traffic Director 模式。
    • tdm_threading_mode=dedicated:此示例在专用模式下运行 CMAN-TDM ,这是 Traffic Director 模式的缺省模式。可以在共享模式下运行 Traffic Director 模式。
    • log_level:设置为启用用于测试和调试所需的日志记录级别。
    • max_connections:根据您的性能要求进行设置。
    • idle_timeout=0
    • registration_invited_nodes = *
    • inbound_connect_timeout=0
    • session_timeout=0
    • outbound_connect_timeout=0
    • max_gateway_processes:根据您的性能要求进行设置。
    • min_gateway_processes:根据您的性能要求进行设置。
    • trace_level:设置为启用测试和调试所需的跟踪级别。
    • max_cmctl_sessions:根据您的性能要求进行设置。
    • event_group: init_and_term, memory_ops
    • next_hop:该参数指向 Oracle Autonomous Database 的地址详细信息以及 SSL 详细信息。这些详细信息取自您在上一节中创建的 dbdetails.txt 文件。
    • WALLET_LOCATION:该参数指向 Traffic Director 模式应用程序用户 wallet 的位置,您将在本节后面创建该用户 wallet。
    • SQLNET.WALLET_OVERRIDE = TRUE
    以下是 cman.ora 文件的示例:
    exampledb_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adwc.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))
    
    cman-test = (configuration=
      (address=(protocol=tcp)(host=oracle-cloud-linuxvm)(port=1523))
      (parameter_list =
        (tdm=true)
        (tdm_threading_mode=dedicated)
        (log_level=off)
        (max_connections=50)
        (idle_timeout=0)
        (registration_invited_nodes = *)
        (inbound_connect_timeout=0)
        (session_timeout=0)
        (outbound_connect_timeout=0)
        (max_gateway_processes=8)
        (min_gateway_processes=3)
        (trace_level=support)
        (max_cmctl_sessions=4)
        (event_group=init_and_term,memory_ops)
      )
      (next_hop=(description=(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(security=(ssl_server_dn_match=on)(ssl_server_cert_dn="CN=adwc.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))))
      (rule_list=
        (rule=
           (src=*)(dst=*)(srv=*)(act=accept)
           (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
      ) )
    )
    
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/u01/app/oracle/network/admin")))
    SQLNET.WALLET_OVERRIDE = TRUE
  4. 创建数据库代理用户 (tdm) 以获取启用 Traffic Director 模式 (TDM) 所需的所有权限。
    1. admin 用户身份通过 SQL*Plus 登录 Oracle Autonomous Database
      $ sqlplus admin@exampledb_high
      
      SQL*Plus: Release 21.0.0.0.0 - Production on Tue May 6 15:34:43 2025
      Version 21.3.0.0.0
      
      Copyright (c) 1982, 2025, Oracle.  All rights reserved.
      
      Enter password:
      Last Successful login time: Tue May 06 2025 15:33:09 +00:00
      
      Connected to:
      Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
      Version 19.12.0.1.0
    2. 创建数据库代理用户。
      此示例使用 tdm 作为数据库代理用户。
      SQL> create user tdm identified by {password} -- replace {password} with your actual password
      
      User created.
      
      SQL> grant create session to tdm;
      
      Grant succeeded.
    3. 退出 SQL*Plus。
  5. 创建数据库代理用户 wallet。

    将 TDM 用户身份证明添加到现有的 Autonomous Database wallet。

    1. 导航到 Autonomous Database wallet 所在的 $TNS_ADMIN 目录。
      目录通常为 $ORACLE_HOME/network/admin
      $ cd $TNS_ADMIN
    2. 使用 $ORACLE_HOME/bin 目录中存在的 mkstore 实用程序将 tdm 用户详细信息添加到 Autonomous Database wallet。

      注意:

      • 对于 service_name 参数,输入先前创建的 dbdetails.txt 文件中的服务名称。
      • 对于 usernamepassword 参数,输入您的 tdm 用户凭证。如果希望通过 tdm 提供其他服务(例如 exampledb_low),请重复此步骤。

      使用以下语法:$ORACLE_HOME/bin/mkstore -wrl . -createCredential service_name username password。例如:

      
      
      $ $ORACLE_HOME/bin/mkstore -wrl . -createCredential g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com tdm {password}
    3. 使用 orapki 实用程序验证是否正确创建了 wallet。
      $ $ORACLE_HOME/bin/orapki wallet display -wallet .
      Oracle PKI Tool Release 21.0.0.0.0 - Production
      Version 21.3.0.0.0
      Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
      
      Requested Certificates:
      User Certificates:
      Subject:        CN=AAE9D2E1AE8646298FED591FC4A097EA,DNQ=V1
      Oracle Secret Store entries:
      oracle.security.client.connect_string1
      oracle.security.client.password1
      oracle.security.client.username1
      Trusted Certificates:
      Subject:        CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
      Subject:        C=US,ST=California,L=Redwood Shores,O=Oracle Corporation Autonomous Data Warehouse Cloud Self-signed CA,CN=Autonomous Data Warehouse Cloud CA
      Subject:        CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US

      输出应包含 Oracle Secret Store 条目,这些条目指示 tdm 用户凭证已存储,并且是可信证书和用户证书(Autonomous Database SSL 证书)。

    4. 使用 mkstore 实用程序验证 tdm 用户凭证是否在 wallet 中。系统提示输入 wallet 密码时,输入您在从 Oracle Cloud Infrastructure 控制台下载 wallet zip 文件时创建的 Autonomous Database wallet 密码。
      $ $ORACLE_HOME/bin/mkstore -wrl . -listCredential
      Oracle Secret Store Tool Release 21.0.0.0.0 - Production
      Version 21.3.0.0.0
      Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved.
      
      Enter wallet password:
      List credential (index: connect_string username)
      1: g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com tdm
  6. Oracle Autonomous Database 上使用 CMAN-TDM 应用程序用户进行连接。
    您需要创建“常规”数据库用户以进行常规应用程序访问,而不是使用数据库代理用户 (tdm) 权限通过 CMAN-TDM 连接到 Oracle Autonomous Database 的特权 ADMIN 用户。

    注意:

    如果您在 Autonomous Database 中已有一个或多个现有应用用户,请跳过此步骤。
    1. 创建数据库用户。

      您可以复制和定制以下 createuser.sql 脚本以创建用户。

      define USERNAME = &1
      
      -- Uncomment if you want to clean up a previous user
      -- begin execute immediate 'drop user &USERNAME cascade'; exception when others then if sqlcode <> -1918 then raise; end if; end;
      -- /
      
      create user &USERNAME;
      
      alter user &USERNAME
            default tablespace data temporary tablespace temp
            account unlock quota unlimited on data;
      
      grant connect, resource to &USERNAME;
      
      grant create session, create table, create procedure,
            create sequence, create trigger, create view,
            create synonym, alter  session, create type,
            soda_app to &USERNAME;
      
      password &USERNAME
    2. ADMIN 用户身份启动 SQL*Plus:
      $ sqlplus -l admin@exampledb_high
    3. 运行 createuser.sql 脚本。

      将您的用户的名称作为脚本参数传递。此示例使用 example

      该脚本将提示您为此新用户设置密码。密码必须符合 Oracle Autonomous Database User Password Guidelines 。如果不符合准则,您将无法创建用户。

      SQL> @createuser.sql example
      一旦输入新密码,就会创建新用户。
  7. 向需要通过 CMAN-TDM 访问 Autonomous Database 的所有应用程序用户添加数据库代理用户 tdm 权限,然后退出 SQL*Plus。
    SQL> alter user example grant connect through tdm;
    User altered.
    SQL> exit
  8. 验证新用户的连接是否成功(系统将提示您输入密码):
    $ sqlplus -l example@exampledb_high
    
    [ . . .]
    
    SQL> show user
    USER is "example"
    
    SQL> quit

您将使用此用户通过 CMAN-TDM 连接到 Oracle Autonomous Database

通过 CMAN 连接到 Oracle Autonomous Database

在运行客户机应用程序的计算机的 $TNS_ADMIN/tnsnames.ora 文件中添加服务器的 CMAN-TDM 地址以添加连接。
  1. 首先打开 CMAN-TDM 端口(在本例中为 1523),如果 VM 位于防火墙后面,则将其作为 CMAN-TDM 的 Linux VM 上的 root 用户打开。
    $ sudo su root
    $ firewall-cmd --permanent --add-port=1523/tcp
    $ firewall-cmd --reload
  2. 您可以查看客户机应用程序所在计算机的 $TNS_ADMIN/tnsnames.ora 文件以确认地址参数。您可以在文件中添加 CMAN-TDM 连接别名。

    在此示例中,客户机应用程序 SQL*Plus 与 CMAN-TDM 位于同一台计算机上。

    地址参数包括 CMAN-TDM 地址。connect_data 参数必须包含 Autonomous Databaseservice_name 参数。

    exampledb_high_cman_tdm = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcp)(port=1523)(host=oracle-cloud-linuxvm))(connect_data=(service_name=g5cadf7d7e4c6c8_exampledb_high.adb.oraclecloud.com)))
  3. 运行 cmctl 实用程序以启动 CMAN-TDM
    $ $ORACLE_HOME/bin/cmctl startup -c cman-test
    该实用程序将连接到并启动 CMAN 实例。此时将显示实例的状态和详细信息。
  4. 使用之前创建的 CMAN-TDM Connect Alias 和应用程序用户 example 运行 SQL*Plus,以连接到 Autonomous Database
    $ sqlplus example@exampledb_high_cman_tdm

    SQL 查询将显示 CMAN-TDM 用于连接到 Oracle Autonomous Database 的数据库代理用户 TDM。直接连接到 Oracle Database 时,此查询将返回空白值。

您现在已通过 CMAN-TDM 连接到 Oracle Autonomous Database