配置并连接到 Oracle Autonomous Database
获取 Oracle Autonomous Database 配置文件并将其安装在安装了 CMAN-TDM 的计算机上。
使用相互 TLS 协议配置 Oracle Autonomous Database Wallet 文件
- 登录 Oracle Cloud Infrastructure 控制台并导航到自治数据库所在的区域。
- 导航到 Autonomous Database 页面,然后单击 DB Connection 选项卡。此时将显示 Autonomous Database Details。
- 单击下载 Wallet 。系统将提示您输入 wallet 口令。
- 提供密码,然后将 Wallet ZIP 文件下载到本地计算机。 使用首选的 SSH 文件传输应用程序或方法将下载的 ZIP 文件传输到 Linux 计算机。保存(或记住)钱包密码非常重要。必须稍后在此解决方案中使用密码。转到钱包 ZIP 文件位于 Linux 计算机中的下一步。
- 将内容提取到
$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.sso、ewallet.p12、sqlnet.ora和tnsnames.ora。仅当用户计划通过 JDBC 应用程序进行连接时,才需要其他文件。 - 编辑
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)连接到数据库。 - 打开
tnsnames.ora文件,并将自治数据库的连接详细信息存储在另一个文件中,例如$HOME/dbdetails.txt:配置 CMAN-TDM 时,将使用自治数据库的地址、安全性和服务名称参数。 - (可选)使用 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
$TNS_ADMIN 目录中的所有规范创建、配置和添加 CMAN (cman.ora) 配置文件。该目录通常位于 ORACLE_HOME/network/admin 中。
cman.ora 文件是 CMAN-TDM 读取的主配置文件。它包含用于允许 Traffic Director 和 CMAN 连接 Oracle Autonomous Database 的所有配置详细信息。
- 以
oracle用户身份登录。 - 导航到
$TNS_ADMIN目录并创建cman.ora文件。$ cd $TNS_ADMIN $ vi cman.ora - 配置
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=0registration_invited_nodes= *inbound_connect_timeout=0session_timeout=0outbound_connect_timeout=0max_gateway_processes:根据您的性能要求进行设置。min_gateway_processes:根据您的性能要求进行设置。trace_level:设置为启用测试和调试所需的跟踪级别。max_cmctl_sessions:根据您的性能要求进行设置。event_group:init_and_term,memory_opsnext_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 - 创建数据库代理用户 (
tdm) 以获取启用 Traffic Director 模式 (TDM) 所需的所有权限。- 以
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 - 创建数据库代理用户。 此示例使用
tdm作为数据库代理用户。SQL> create user tdm identified by {password} -- replace {password} with your actual password User created. SQL> grant create session to tdm; Grant succeeded. - 退出 SQL*Plus。
- 以
- 创建数据库代理用户 wallet。
将 TDM 用户身份证明添加到现有的 Autonomous Database wallet。
- 导航到 Autonomous Database wallet 所在的
$TNS_ADMIN目录。目录通常为$ORACLE_HOME/network/admin。$ cd $TNS_ADMIN - 使用
$ORACLE_HOME/bin目录中存在的mkstore实用程序将tdm用户详细信息添加到 Autonomous Database wallet。注意:
- 对于 service_name 参数,输入先前创建的
dbdetails.txt文件中的服务名称。 - 对于 username 和 password 参数,输入您的
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} - 对于 service_name 参数,输入先前创建的
- 使用
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 证书)。 - 使用
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
- 导航到 Autonomous Database wallet 所在的
- 在 Oracle Autonomous Database 上使用 CMAN-TDM 应用程序用户进行连接。您需要创建“常规”数据库用户以进行常规应用程序访问,而不是使用数据库代理用户 (
tdm) 权限通过 CMAN-TDM 连接到 Oracle Autonomous Database 的特权ADMIN用户。注意:
如果您在 Autonomous Database 中已有一个或多个现有应用用户,请跳过此步骤。- 创建数据库用户。
您可以复制和定制以下
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 - 以
ADMIN用户身份启动 SQL*Plus:$ sqlplus -l admin@exampledb_high - 运行
createuser.sql脚本。将您的用户的名称作为脚本参数传递。此示例使用
example。该脚本将提示您为此新用户设置密码。密码必须符合 Oracle Autonomous Database User Password Guidelines 。如果不符合准则,您将无法创建用户。
SQL> @createuser.sql example一旦输入新密码,就会创建新用户。
- 创建数据库用户。
- 向需要通过 CMAN-TDM 访问 Autonomous Database 的所有应用程序用户添加数据库代理用户
tdm权限,然后退出 SQL*Plus。SQL> alter user example grant connect through tdm; User altered. SQL> exit - 验证新用户的连接是否成功(系统将提示您输入密码):
$ 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 地址以添加连接。- 首先打开 CMAN-TDM 端口(在本例中为 1523),如果 VM 位于防火墙后面,则将其作为 CMAN-TDM 的 Linux VM 上的
root用户打开。$ sudo su root $ firewall-cmd --permanent --add-port=1523/tcp $ firewall-cmd --reload - 您可以查看客户机应用程序所在计算机的
$TNS_ADMIN/tnsnames.ora文件以确认地址参数。您可以在文件中添加 CMAN-TDM 连接别名。在此示例中,客户机应用程序 SQL*Plus 与 CMAN-TDM 位于同一台计算机上。
地址参数包括 CMAN-TDM 地址。
connect_data参数必须包含 Autonomous Database 的service_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))) - 运行
cmctl实用程序以启动 CMAN-TDM 。$ $ORACLE_HOME/bin/cmctl startup -c cman-test该实用程序将连接到并启动 CMAN 实例。此时将显示实例的状态和详细信息。 - 使用之前创建的 CMAN-TDM Connect Alias 和应用程序用户
example运行 SQL*Plus,以连接到 Autonomous Database 。$ sqlplus example@exampledb_high_cman_tdmSQL 查询将显示 CMAN-TDM 用于连接到 Oracle Autonomous Database 的数据库代理用户
TDM。直接连接到 Oracle Database 时,此查询将返回空白值。
您现在已通过 CMAN-TDM 连接到 Oracle Autonomous Database 。