通过客户管理的异构连接在专用端点上创建与非 Oracle 数据库的数据库链接
您可以创建从专用 Exadata 基础结构上的自治 AI 数据库到 Oracle Database Gateway 的数据库链接,以访问专用端点上的非 Oracle 数据库。
Oracle Database Gateway 是用于访问特定非 Oracle 系统的网关。使用 Oracle Database Gateway,您可以访问分布式数据库系统中的任意位置的数据,而无需了解数据的位置或存储方式。将 Autonomous AI Database 上的数据库链接与 Oracle Database Gateway 结合使用,支持异构环境,无需自定义应用即可从非 Oracle 系统访问数据。
注:对于 19c 和 23.6 及更高版本,仅支持使用 19.25 及更高版本创建数据库链接,并且客户管理的异构连接可连接到专用端点上的非 Oracle 数据库。
Prerequisites
要在公共端点上使用来自自治 AI 数据库实例的数据库链接,请执行以下操作:
-
配置 Oracle Database Gateway 以访问非 Oracle 数据库。有关详细信息,请参阅 Oracle Database 19c Database Heterogeneous Connectivity User’s Guide 中的 Oracle Database Gateways 或 Oracle Database 26ai Database Heterogeneous Connectivity User’s Guide 。
根据要连接到的数据库,您可以参考相应的安装和配置指南和网关用户指南。
例如,对于 Oracle Database Gateway for SQL Server,请参见:
-
Oracle Database 19c Installation and Configuration Guide for Microsoft Windows 或 Oracle Database 26ai Installation and Configuration Guide for Microsoft Windows 中的 Installing and Configuring Oracle Database Gateway for SQL Server
-
Oracle Database 19c Gateway for SQL Server User’s Guide 中的 Introduction to the Oracle Database Gateway for SQL Server 或 Oracle Database 26ai Gateway for SQL Server User’s Guide 。
-
Oracle Database 19c Installation and Configuration Guide for Microsoft Windows 或 Oracle Database 26ai Installation and Configuration Guide for Microsoft Windows 中的 Configure Oracle Net for the Gateway 。
-
-
配置 Oracle Net Listener 以处理 Oracle Database Gateway 上的传入请求。
-
在 Oracle Database Gateway 上创建自签名 wallet。
此外:
-
必须可以从源数据库的 Oracle Cloud Infrastructure VCN 访问目标数据库。例如,您可以在以下情况下连接到目标数据库:
-
目标数据库位于专用端点上。
-
源数据库和目标数据库都位于同一 Oracle Cloud Infrastructure VCN 中。
-
源数据库和目标数据库位于成对的不同 Oracle Cloud Infrastructure VCN 中。
-
对于专用端点上的目标,
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK支持使用hostname参数指定单个主机名。在专用端点上,不支持使用 IP 地址、SCAN IP 或 SCAN 主机名(当目标位于公共端点上时,CREATE_DATABASE_LINK支持使用 IP 地址、SCAN IP 或 SCAN 主机名)。
-
-
必须为专用端点定义以下入站和出站规则:
-
在源数据库的子网安全列表或网络安全组中定义出站规则,以便允许通过 TCP 的通信传输到目标数据库的 IP 地址和端口号。
-
在目标数据库的子网安全列表或网络安全组中定义入站规则,以便允许通过 TCP 的通信从源数据库 IP 地址传输到目标端口。
-
客户管理的异构连接与专用端点上的非 Oracle 数据库(不带 wallet)
您可以创建从自治 AI 数据库到 Oracle Database Gateway 的数据库链接,以访问专用端点上具有 wallet (TCPS) 或没有 wallet (TLS) 的非 Oracle 数据库。本节介绍创建不带 wallet 的数据库链接。
要使用数据库链接和 TLS 连接从专用端点上的自治 AI 数据库实例创建到目标网关的数据库链接,请执行以下操作:
-
在自治 AI 数据库上,创建身份证明以访问目标数据库。使用
DBMS_CLOUD.CREATE_CREDENTIAL指定的用户名和口令是数据库链接中使用的目标数据库的身份证明(通过 Oracle Database Gateway 访问目标数据库)。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'NICK', password => 'password' ); END;/必须提供
credential_name参数。username参数中的字符必须全部为大写字母。此操作以加密格式将身份证明存储在数据库中。可以将任何名称用于身份证明名称。
-
使用
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK创建指向目标网关的数据库链接。例如:
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'SALESLINK', hostname => 'example.com', port => '1522', service_name => 'example_service_name', ssl_server_cert_dn => 'ssl_server_cert_dn', credential_name => 'DB_LINK_CRED', directory_name => NULL, gateway_link => TRUE, private_target => TRUE, gateway_params => NULL ); END;/如果将连接创建为基于 TCP 的数据库链接(不带 wallet),则
ssl_server_cert_dn参数是可选的。当
directory_name为NULL时,连接将创建为基于 TCP 的数据库链接(不带 wallet)。当目标非 Oracle Database 位于专用端点上时,必须将
private_target参数设置为TRUE(即,数据库链接访问需要在 VCN DNS 服务器中解析的主机名)。如果private_target为TRUE,则hostname参数必须是单个主机名(在专用端点上,不支持使用 IP 地址、SCAN IP 或 SCAN 主机名)。当
gateway_link为TRUE且gateway_params为NULL时,这将指定数据库链接指向客户管理的 Oracle 网关。ADMIN 以外的用户需要运行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的权限。有关更多详细信息,请参见 CREATE_DATABASE_LINK Procedure 。
-
使用创建的数据库链接访问目标网关上的数据。
例如:
SELECT * FROM employees@SALESLINK;
对于您在步骤 1 中创建的身份证明,即 Oracle Database Gateway 身份证明,如果目标用户的密码发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name =>'DB_LINK_CRED',
attribute =>'PASSWORD',
value=>'password'
);
END;
/
密码是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。
有关更多详细信息,请参见 UPDATE_CREDENTIAL Procedure 。
客户管理的异构连接与专用端点上的非 Oracle 数据库(带 wallet)
您可以创建从自治 AI 数据库到 Oracle Database Gateway 的数据库链接,以访问专用端点上具有 wallet (TCPS) 或没有 wallet (TLS) 的非 Oracle 数据库。本节介绍如何使用 wallet 创建数据库链接。
要创建从专用端点上的自治 AI 数据库实例到目标网关的数据库链接(与 wallet 连接),请执行以下操作:
-
将包含 Oracle Database Gateway 证书的目标网关自签名 wallet(例如
cwallet.sso)复制到对象存储。Wallet 文件以及数据库用户 ID 和密码提供对通过目标网关可用数据的访问。将 Wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。
-
在自治 AI 数据库上,创建身份证明以访问要存储
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是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。注:在此步骤中使用的
credential_name是对象存储的身份证明。在下一步中,您将创建用于访问目标网关的身份证明。 -
在自治 AI 数据库上,创建身份证明以访问目标数据库。使用
DBMS_CLOUD.CREATE_CREDENTIAL指定的用户名和口令是数据库链接中使用的目标数据库的身份证明(通过 Oracle Database Gateway 访问目标数据库)。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name =>'DB_LINK_CRED', username =>'NICK', password =>'password' ); END; /必须提供
credential_name参数。username参数中的字符必须全部为大写字母。此操作以加密格式将身份证明存储在数据库中。可以将任何名称用于身份证明名称。
-
使用
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK创建指向目标网关的数据库链接。例如:
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name =>'SALESLINK', hostname =>'example.com', port =>'1522', service_name =>'example_service_name', ssl_server_cert_dn =>'ssl_server_cert_dn', credential_name =>'DB_LINK_CRED', directory_name =>'DBLINK_WALLET_DIR', gateway_link =>TRUE, private_target =>TRUE, gateway_params =>NULL ); END; /如果
directory_name不是NULL,则会创建基于 TCPS 的数据库链接。当目标非 Oracle Database 位于专用端点上时,必须将
private_target参数设置为TRUE(即,数据库链接访问需要在 VCN DNS 服务器中解析的主机名)。如果private_target为TRUE,则hostname参数必须是单个主机名(在专用端点上,不支持使用 IP 地址、SCAN IP 或 SCAN 主机名)。当
gateway_link为TRUE且gateway_params为NULL时,这将指定数据库链接指向客户管理的 Oracle 网关。ADMIN 以外的用户需要运行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的权限。有关更多详细信息,请参见 CREATE_DATABASE_LINK Procedure 。
-
使用创建的数据库链接访问目标网关上的数据。
例如:
SELECT * FROM employees@SALESLINK;
对于您在步骤 5 中创建的身份证明,即 Oracle Database Gateway 身份证明,如果目标用户的密码发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name =>'DB_LINK_CRED',
attribute =>'PASSWORD',
value=>'password'
);
END;
/
密码是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。
有关更多详细信息,请参见 UPDATE_CREDENTIAL Procedure 。