从 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),请执行以下操作:

  1. 确保启用了单向 TLS 连接。

    默认情况下,预配 AVMC 时会启用单向 TLS 连接。有关更多信息,请参见 Create an Autonomous Exadata VM Cluster

    注意:

    Autonomous Database on Dedicated Exadata Infrastructure 中,无 wallet 连接通过安装由公共 CA 颁发的定制 SSL 证书来支持单向 TLS。有关更多详细信息,请参见 Prepare for TLS Walletless Connections
  2. 在要创建数据库链接的 Autonomous Database 实例上,创建身份证明以访问目标 Autonomous Database 。使用 DBMS_CLOUD.CREATE_CREDENTIAL 指定的 usernamepassword 是目标数据库的凭证(您可以使用这些凭证创建数据库链接)。

    注意:

    需要提供 credential_name 参数。

    例如:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password' );
    END;
    /

    username 参数中的字符必须全部为大写字母。

    此操作以加密格式将身份证明存储在数据库中。您可以使用身份证明名称的任何名称。

  3. 使用 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

  4. 使用您创建的数据库链接访问目标数据库中的数据。

    例如:

    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 的数据库链接,请执行以下操作:

  1. 确保启用了 mTLS 连接。

    默认情况下,为 AVMC 启用单向 TLS 连接。通过在预配 AVMC 时选中启用双向 TLS (mTLS) 验证复选框,可以启用双向 TLS (mTLS) 验证。有关更多信息,请参见 Create an Autonomous Exadata VM Cluster

  2. 将包含目标数据库的证书的目标数据库 wallet cwallet.sso 复制到对象存储。

    请注意以下 Wallet 文件:

    • 通过 Wallet 文件以及数据库用户 ID 和密码,可以访问目标 Oracle Database 中的数据。将 wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。

    • 请勿重命名 wallet 文件。对象存储中的 wallet 文件必须命名为 cwallet.sso

  3. 创建身份证明以访问在其中存储 wallet 文件 cwallet.sso 的对象存储。有关不同对象存储服务的用户名和密码参数的信息,请参见CREATE_CREDENTIAL Procedure
  4. Autonomous Database 上为 wallet 文件 cwallet.sso 创建目录。

    例如:

    CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
                

    有关创建目录的信息,请参见 Create Directory in Autonomous Database

  5. 使用 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 是存储桶名称。有关更多信息,请参见 Understanding Object Storage Namespaces

  6. Autonomous Database 实例上,创建身份证明以访问目标数据库。使用 DBMS_CLOUD.CREATE_CREDENTIAL 指定的 usernamepassword 是用于创建数据库链接的目标数据库的凭证。

    注意:

    需要提供 credential_name 参数。

    例如:

    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password');
    END;
    /

    username 参数中的字符必须全部为大写字母。

    此操作以加密格式将身份证明存储在数据库中。您可以使用身份证明名称的任何名称。

  7. 使用 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

  8. 使用您创建的数据库链接访问目标数据库中的数据。

    例如:

    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_LINKSOracle Database 23ai Database Reference

  • 通过 Wallet 文件以及数据库用户 ID 和密码,可以访问目标 Autonomous Database 中的数据。将 wallet 文件存储在安全位置。仅与授权用户共享 wallet 文件。

  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 输入应将目标专用 Autonomous Database 的扫描名称作为 'hostname' 参数。