从 Autonomous Database 创建到其他 Autonomous Database 的 TLS 数据库链接
必须启用 JavaScript 才能正确显示此内容
从 Autonomous Database 创建到其他 Autonomous Database 的 TLS 数据库链接
您可以创建 TLS 数据库链接,从基于专用 Exadata 基础设施的 Autonomous Database 创建到公共端点上的目标 Autonomous Database 。
创建从 an Autonomous Database 到另一个 Autonomous Database 的单向 TLS 数据库链接
您可以创建从基于专用 Exadata 基础设施的 Autonomous Database 到可公开访问的 Autonomous Database 的单向 TLS 数据库链接。
要创建指向公共目标的数据库链接,必须可以访问目标数据库。某些数据库(包括 Autonomous Database )可能会限制访问(例如,使用访问控制列表)。确保启用目标数据库以允许从源数据库访问数据库链接。如果限制访问控制列表 (Access Control List,ACL) 的访问,可以找到源 Autonomous Database 的出站 IP 地址并允许该 IP 地址连接到目标数据库。当目标数据库是另一个 Autonomous Database 时,您可以将源数据库的出站 IP 地址添加到目标数据库的 ACL。
有关查找出站 IP 地址的信息,请参见 Obtain Tenancy Details 。
要创建与目标 Autonomous Database 的数据库链接而不使用 wallet (TLS),请执行以下操作:
- 确保启用了单向 TLS 连接。
- 在要创建数据库链接的 Autonomous Database 实例上,创建身份证明以访问目标 Autonomous Database 。使用
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
创建指向目标 Autonomous Database 实例的数据库链接。
例如:
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
创建到目标 Autonomous Database 的数据库链接,directory_name
参数必须为 NULL
。
对于 TLS 连接,port
参数值必须设置为 2484。但是,如果在预配 AVMC 时选择了其他 SCAN 监听程序端口号,则必须使用该端口号。有关更多信息,请参见 Create Autonomous Exadata VM Cluster 。
可以省略 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 是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而不必删除并重新创建数据库链接。
有关其它信息,请参阅:
创建从 an Autonomous Database 到另一个 Autonomous Database 的 mTLS 数据库链接
您可以创建从基于专用 Exadata 基础设施的 Autonomous Database 到可公开访问的 Autonomous Database 的 mTLS 数据库链接。
要创建指向公共目标的数据库链接,必须可以访问目标数据库。某些数据库(包括 Autonomous Database )可能会限制访问(例如,使用访问控制列表)。确保启用目标数据库以允许从源数据库访问数据库链接。如果限制访问控制列表 (Access Control List,ACL) 的访问,可以找到源 Autonomous Database 的出站 IP 地址并允许该 IP 地址连接到目标数据库。例如,如果目标数据库是另一个 Autonomous Database ,则可以将源数据库的出站 IP 地址添加到目标数据库的 ACL。
有关查找出站 IP 地址的信息,请参见 Obtain Tenancy Details 。
要使用 wallet (mTLS) 创建指向目标 Autonomous Database 的数据库链接,请执行以下操作:
- 确保启用了 mTLS 连接。
- 将包含目标数据库的证书的目标数据库 wallet
cwallet.sso
复制到对象存储。
- 创建身份证明以访问在其中存储 wallet 文件
cwallet.sso
的对象存储。有关不同对象存储服务的用户名和密码参数的信息,请参见CREATE_CREDENTIAL Procedure 。
- 在 Autonomous Database 上为 wallet 文件
cwallet.sso
创建目录。
例如:
CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
- 使用
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;
/
- 在 Autonomous Database 实例上,创建身份证明以访问目标数据库。使用
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 监听程序端口号,则必须使用该端口号。有关更多信息,请参见 Create Autonomous Exadata VM Cluster 。
如果使用 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 是新密码。
执行此操作后,使用此身份证明的现有数据库链接将继续工作,而不必删除并重新创建数据库链接。
有关其它信息,请参阅:
数据库链接注释与 Autonomous Database 目标
提供有关创建指向另一个 Autonomous Database 目标的数据库链接的备注。
有关指向其他 Autonomous Database 的数据库链接的说明:
-
每个目录只有一个 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 Database 。
-
要列出数据库链接,请使用 ALL_DB_LINKS
视图。有关详细信息,请参阅 Oracle Database 19c Database Reference 中的 ALL_DB_LINKS 或 Oracle Database 23ai Database Reference 。
-
通过 Wallet 文件以及数据库用户 ID 和密码,可以访问目标 Autonomous Database 中的数据。将 wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK
输入应将目标专用 Autonomous Database 的扫描名称作为 'hostname' 参数。