创建从自治 AI 数据库到另一个自治 AI 数据库的 TLS 数据库链接
您可以创建从专用 Exadata 基础结构上的自治 AI 数据库到公共端点上的目标自治 AI 数据库的 TLS 数据库链接。
创建从自治 AI 数据库到另一个自治 AI 数据库的单向 TLS 数据库链接
您可以创建从专用 Exadata 基础结构上的自治 AI 数据库到可公开访问的自治 AI 数据库的单向 TLS 数据库链接。
要创建指向公共目标的数据库链接,必须可以访问目标数据库。某些数据库(包括自治 AI 数据库)可能会限制访问(例如,使用访问控制列表)。确保启用目标数据库以允许从源数据库访问数据库链接。如果通过访问控制列表 (Access Control Lists,ACL) 限制访问,则可以找到源自治 AI 数据库的出站 IP 地址并允许该 IP 地址连接到目标数据库。当目标数据库是另一个自治 AI 数据库时,您可以将源数据库的出站 IP 地址添加到目标数据库的 ACL 中。
有关查找出站 IP 地址的信息,请参见 Obtain Tenancy Details 。
要创建指向没有 wallet (TLS) 的目标自治 AI 数据库的数据库链接,请执行以下操作:
-
确保已启用单向 TLS 连接。
默认情况下,预配 AVMC 时会启用单向 TLS 连接。有关详细信息,请参阅创建自治 Exadata VM 集群。
注:在专用 Exadata 基础结构上的自治 AI 数据库中,无 wallet 连接通过安装公共 CA 颁发的定制 SSL 证书来适用于单向 TLS。有关详细信息,请参见 Prepare for TLS Walletless Connections 。
-
在要创建数据库链接的自治 AI 数据库实例上,创建身份证明以访问目标自治 AI 数据库。使用
DBMS_CLOUD.CREATE_CREDENTIAL指定的username和password是目标数据库的身份证明(使用这些身份证明创建数据库链接)。注:需要提供
credential_name参数。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'NICK', password => 'password' ); END; /username参数中的字符必须全部为大写字母。此操作以加密格式将身份证明存储在数据库中。可以将任何名称用于身份证明名称。
-
使用
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK创建指向目标自治 AI 数据库实例的数据库链接。例如:
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'SALESLINK', hostname => 'adb.eu-frankfurt-1.oraclecloud.com', port => '2484', service_name => 'example_medium.atpc.example.oraclecloud.com', credential_name => 'DB_LINK_CRED', directory_name => NULL); END; /要使用不带 wallet 的安全 TCP 连接在公共端点上创建与
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的目标自治 AI 数据库的数据库链接,directory_name参数必须为NULL。对于 TLS 连接,
port参数值必须设置为 2484。但是,如果在预配 AVMC 时选择了其他 SCAN 监听程序端口号,则必须使用该端口号。有关详细信息,请参阅创建自治 Exadata VM 集群。ssl_server_cert_dn参数可以省略,如果包含,则指定NULL值。ADMIN 以外的用户需要运行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的权限。 -
使用创建的数据库链接访问目标数据库中的数据。
例如:
SELECT * FROM employees@SALESLINK;
对于您在步骤 1 中创建的身份证明,即目标数据库身份证明,如果目标用户的口令发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name => 'DB_LINK_CRED',
attribute => 'PASSWORD',
value => 'password' );
END;
/
其中 password 是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。
有关其它信息,请参阅:
创建从自治 AI 数据库到另一个自治 AI 数据库的 mTLS 数据库链接
您可以创建从专用 Exadata 基础结构上的自治 AI 数据库到可公开访问的自治 AI 数据库的 mTLS 数据库链接。
要创建指向公共目标的数据库链接,必须可以访问目标数据库。某些数据库(包括自治 AI 数据库)可能会限制访问(例如,使用访问控制列表)。确保启用目标数据库以允许从源数据库访问数据库链接。如果通过访问控制列表 (Access Control Lists,ACL) 限制访问,则可以找到源自治 AI 数据库的出站 IP 地址并允许该 IP 地址连接到目标数据库。例如,如果目标数据库是另一个自治 AI 数据库,则可以将源数据库的出站 IP 地址添加到目标数据库的 ACL 中。
有关查找出站 IP 地址的信息,请参见 Obtain Tenancy Details 。
要使用 wallet (mTLS) 创建指向目标自治 AI 数据库的数据库链接,请执行以下操作:
-
确保已启用 mTLS 连接。
默认情况下,为 AVMC 启用单向 TLS 连接。通过在预配 AVMC 时选中启用双向 TLS (mTLS) 验证复选框,可以启用双向 TLS (mTLS) 验证。有关详细信息,请参阅创建自治 Exadata VM 集群。
-
将目标数据库 wallet
cwallet.sso(包含目标数据库的证书)复制到对象存储。请注意 wallet 文件的以下内容:
-
通过 wallet 文件以及数据库用户 ID 和密码,可以访问目标 Oracle Database 中的数据。将 Wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。
-
请勿重命名 wallet 文件。对象存储中的 wallet 文件必须命名为
cwallet.sso。
-
-
创建身份证明以访问存储 wallet 文件
cwallet.sso的对象存储。有关不同对象存储服务的用户名和口令参数的信息,请参见 CREATE_CREDENTIAL Procedure 。 -
在自治 AI 数据库上为 wallet 文件
cwallet.sso创建目录。例如:
CREATE DIRECTORY *dblink_wallet_dir* AS '*directory_path_of_your_choice*';有关创建目录的信息,请参见 Create Directory in Autonomous AI Database 。
-
使用
DBMS_CLOUD.GET_OBJECT将目标数据库 wallet 上载到在上一步中创建的目录 DBLINK_WALLET_DIR 。例如:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'DBLINK_WALLET_DIR'); END; /在此示例中,
namespace-string是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。 -
在自治 AI 数据库实例上,创建身份证明以访问目标数据库。使用
DBMS_CLOUD.CREATE_CREDENTIAL指定的username和password是用于创建数据库链接的目标数据库的身份证明。注:需要提供
credential_name参数。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'NICK', password => 'password'); END; /username参数中的字符必须全部为大写字母。此操作以加密格式将身份证明存储在数据库中。可以将任何名称用于身份证明名称。
-
使用
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK创建指向目标数据库的数据库链接。例如:
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'SALESLINK', hostname => 'adb.eu-frankfurt-1.oraclecloud.com', port => '2484', service_name => 'example_medium.atpc.example.oraclecloud.com', ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US', credential_name => 'DB_LINK_CRED', directory_name => 'DBLINK_WALLET_DIR'); END; /ADMIN 以外的用户需要运行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的权限。对于 TLS 连接,
port参数值必须设置为 2484。但是,如果在预配 AVMC 时选择了其他 SCAN 监听程序端口号,则必须使用该端口号。有关详细信息,请参阅创建自治 Exadata VM 集群。如果使用
directory_name指定的目录中的 wallet 文件不是cwallet.sso,则该过程将报告错误,例如:ORA-28759: failure to open file。 -
使用创建的数据库链接访问目标数据库中的数据。
例如:
SELECT * FROM employees@SALESLINK;
对于您在步骤 5 中创建的身份证明,即目标数据库身份证明,如果目标用户的口令发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name => 'DB_LINK_CRED',
attribute => 'PASSWORD',
value => 'password' );
END;
/
其中 password 是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。
有关其它信息,请参阅:
数据库链接注释与自治 AI 数据库的目标
提供有关创建指向另一个自治 AI 数据库的目标的数据库链接的注释。
有关指向另一个自治 AI 数据库的数据库链接的说明:
-
每个目录只有一个 wallet 文件有效,可用于数据库链接。一次只能将一个
cwallet.sso上载到为 wallet 文件选择的目录(例如 DBLINK_WALLET_DIR )。这意味着在 DBLINK_WALLET_DIR 中使用cwallet.sso时,只能创建指向该目录中 wallet 有效的数据库的数据库链接。要将多个cwallet.sso文件与数据库链接一起使用,需要创建其他目录并将每个cwallet.sso放入不同的目录。使用DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK创建数据库链接时,使用directory_name参数指定包含 wallet 的目录。有关创建目录的信息,请参见 Create Directory in Autonomous AI Database 。
-
要列出数据库链接,请使用
ALL_DB_LINKS视图。有关详细信息,请参阅 Oracle Database 19c Database Reference 中的 ALL_DB_LINKS 或 Oracle Database 26ai Database Reference 。 -
通过 wallet 文件以及数据库用户 ID 和密码,可以访问目标自治 AI 数据库中的数据。将 Wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。
-
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK输入应将目标专用自治 AI 数据库的扫描名称作为 'hostname' 参数。