在专用端点上创建从自治 AI 数据库到 Oracle Database 的数据库链接

您可以创建从自治 AI 数据库到专用端点上的目标 Oracle Database 的数据库链接。

注:商业区域和美国政府区域仅支持从专用端点上的目标 Oracle 数据库到目标数据库的数据库链接。默认情况下,此功能在所有商业区域中都处于启用状态。对于新预配的数据库,默认情况下在美国政府区域启用此功能。对于专用端点上的现有美国政府数据库,如果要创建从自治 AI 数据库到美国政府区域中的目标的数据库链接,可以在 Oracle Cloud Support 上提交服务请求,并请求启用政府区域数据库链接功能中的专用端点。美国政府区域包括:

根据目标 Oracle 数据库的类型和配置:

从自治 AI 数据库到专用端点上的 Oracle 数据库的数据库链接先决条件

列出从自治 AI 数据库到专用端点上的目标 Oracle 数据库创建数据库链接的先决条件。

要在专用端点上创建指向目标 Oracle 数据库的数据库链接,请执行以下操作:

在没有 Wallet 的专用端点上创建指向 Oracle 数据库的数据库链接

使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 创建从自治 AI 数据库到专用端点上的目标 Oracle 数据库的数据库链接,并在没有 wallet (TCP) 的情况下进行连接。

注:此选项适用于位于专用端点上且未配置 SSL/TCPS 的目标 Oracle 数据库。

根据需要执行先决条件步骤。有关详细信息,请参阅从自治 AI 数据库到专用端点上的 Oracle 数据库的数据库链接的先决条件。

要使用不带 wallet 的安全 TCP 连接在专用端点上创建指向目标数据库的数据库链接,请执行以下操作:

  1. 在自治 AI 数据库上创建身份证明以访问目标数据库。使用 DBMS_CLOUD.CREATE_CREDENTIAL 指定的 usernamepassword 是数据库链接中使用的目标数据库的身份证明(通过 VCN 访问目标数据库)。

    例如:

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

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

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

  2. 使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 创建指向目标数据库的数据库链接。

    例如:

     BEGIN
          DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
              db_link_name => 'PRIVATE_ENDPOINT_LINK',
              hostname => 'exampleHostname',
              port => '1522',
              service_name => '*exampleServiceName*',
              ssl_server_cert_dn => NULL,
              credential_name => 'PRIVATE_ENDPOINT_CRED',
              directory_name => NULL,
              private_target => TRUE);
     END;
     /
    

    对于专用端点上的目标,DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 支持使用 hostname 参数指定单个主机名。在专用端点上,不支持使用 IP 地址、SCAN IP 或 SCAN 主机名(当目标位于公共端点上时,CREATE_DATABASE_LINK 支持使用 IP 地址、SCAN IP 或 SCAN 主机名)。

    当目标为 Oracle RAC 数据库时,使用 rac_hostnames 参数指定具有 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的一个或多个主机名。这使您可以利用 Oracle RAC 的高可用性功能。不支持使用 IP 地址、SCAN IP 或 rac_hostnames 值中的 SCAN 主机名。

    例如,对于目标 Oracle RAC 数据库,请使用 rac_hostnames 参数:

     BEGIN
          DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
              db_link_name => 'PRIVATE_ENDPOINT_LINK',
              rac_hostnames => '["sales1-svr1.*example*.adb.us-ashburn-1.oraclecloud.com",
                                 "sales1-svr2.*example*.adb.us-ashburn-1.oraclecloud.com",
                                 "sales1-svr3.*example*.adb.us-ashburn-1.oraclecloud.com"]',
              port => '1522',
              service_name => '*exampleServiceName*',
              ssl_server_cert_dn => NULL,
              credential_name => 'PRIVATE_ENDPOINT_CRED',
              directory_name => NULL,
              private_target => TRUE);
     END;
     /
    

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 不支持 hostnamerac_hostnames 参数的值为 localhost

    ADMIN 以外的用户需要运行 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的权限。

    如示例中所示,要使用不带 Wallet 的安全 TCP 连接创建与 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的数据库链接到专用端点上的目标数据库,需要满足以下所有条件:

    • directory_name 参数必须为 NULL

    • ssl_server_cert_dn 参数必须为 NULL

    • private_target 参数必须为 TRUE

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

    例如:

     SELECT * FROM employees@PRIVATE_ENDPOINT_LINK;
    

对于您在步骤 1 中创建的身份证明,即 Oracle Database 身份证明,如果目标用户的口令发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name => 'DB_LINK_CRED',
    attribute => 'PASSWORD',
    value => '*password*');
END;
/

其中 password 是新密码。

执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。

有关其他信息,请参见 CREATE_DATABASE_LINK Procedure

使用 Wallet (mTLS) 在专用端点上创建从自治 AI 数据库到 Oracle 数据库的数据库链接

您可以创建从自治 AI 数据库到专用端点上的目标 Oracle 数据库的数据库链接。

注:此选项适用于配置了 SSL/TCPS 且位于专用端点上的目标 Oracle 数据库。

如果目标 Oracle 数据库未配置 SSL/TCPS,则有两个选项:

根据需要执行先决条件步骤。有关详细信息,请参阅从自治 AI 数据库到专用端点上的 Oracle 数据库的数据库链接的先决条件。

要使用 TCP/IP 和 SSL (TCPS) 验证在专用端点上创建指向目标 Oracle 数据库的数据库链接,请执行以下操作:

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

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

  2. 创建身份证明以访问您存储 cwallet.sso 的对象存储。有关不同对象存储服务的用户名和口令参数的信息,请参见 CREATE_CREDENTIAL Procedure

  3. 在自治 AI 数据库上为 wallet 文件 cwallet.sso 创建目录。

    例如:

    CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';
    

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

  4. 使用 DBMS_CLOUD.GET_OBJECT 将目标数据库 wallet 上载到在上一步中创建的目录 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 => '*WALLET_DIR*');
     END;
     /
    

    在此示例中,*namespace-string* 是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname 是存储桶名称。有关详细信息,请参阅了解对象存储名称空间

    注:在此步骤中使用的 credential_name 是对象存储的身份证明。在下一步中,创建用于访问目标数据库的身份证明。

  5. 在自治 AI 数据库上,创建身份证明以访问目标数据库。使用 DBMS_CLOUD.CREATE_CREDENTIAL 指定的 usernamepassword 是数据库链接中使用的目标数据库的身份证明(通过 VCN 访问目标数据库)。

    注:需要提供 credential_name 参数。

    例如:

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

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

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

  6. 使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 创建指向目标数据库的数据库链接。

    例如:

     BEGIN
       DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
         db_link_name => 'PEDBLINK1',
         hostname => 'example1.adb.ap-osaka-1.oraclecloud.com',
         port => '1522',
         service_name => '*example_high.adb.oraclecloud.com*',
         ssl_server_cert_dn => '*ssl_server_cert_dn*',
         credential_name => 'DB_LINK_CRED',
         directory_name => '*WALLET_DIR*',
         private_target => TRUE);
     END;
     /
    

    对于专用端点上的目标,DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 支持使用 hostname 参数指定单个主机名。在专用端点上,不支持使用 IP 地址、SCAN IP 或 SCAN 主机名(当目标位于公共端点上时,CREATE_DATABASE_LINK 支持使用 IP 地址、SCAN IP 或 SCAN 主机名)。

    当目标为 Oracle RAC 数据库时,使用 rac_hostnames 参数指定具有 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的一个或多个主机名。这使您可以利用 Oracle RAC 的高可用性功能。不支持使用 IP 地址、SCAN IP 或 rac_hostnames 值中的 SCAN 主机名。

    例如,对于目标 Oracle RAC 数据库,请使用 rac_hostnames 参数:

     BEGIN
       DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
         db_link_name => 'PEDBLINK1',
         rac_hostnames => '["sales1-svr1.*example*.adb.us-ashburn-1.oraclecloud.com",
                            "sales1-svr2.*example*.adb.us-ashburn-1.oraclecloud.com",
                            "sales1-svr3.*example*.adb.us-ashburn-1.oraclecloud.com"]',
         port => '1522',
         service_name => '*example_high.adb.oraclecloud.com*',
         ssl_server_cert_dn => '*ssl_server_cert_dn*',
         credential_name => 'DB_LINK_CRED',
         directory_name => '*WALLET_DIR*',
         private_target => TRUE);
     END;
     /
    

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 不支持 hostnamerac_hostnames 参数的值为 localhost

    ADMIN 以外的用户需要运行 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的权限。

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

    例如:

    ``sql SELECT * FROM 雇员 @PEDBLINK1;

对于您在步骤 5 中创建的身份证明,即 Oracle Database 身份证明,如果目标用户的口令发生更改,则可以更新包含目标用户身份证明的身份证明,如下所示:

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name => 'DB_LINK_CRED',
    attribute => 'PASSWORD',
    value => '*password*');
END;
/

其中 password 是新密码。

执行此操作后,使用此身份证明的现有数据库链接将继续工作,而无需删除和重新创建数据库链接。

有关其他信息,请参见 CREATE_DATABASE_LINK Procedure

数据库链接附注与目标 Oracle Database

提供有关创建指向目标 Oracle 数据库的数据库链接的备注(当目标不是自治 AI 数据库时)

有关指向其他 Oracle 数据库的数据库链接的说明:

相关内容

DBMS_CLOUD_ADMIN 程序包