在專用端點上建立從自治式 AI 資料庫到 Oracle Database 的資料庫連結

您可以從自治式 AI 資料庫建立資料庫連結到專用端點上的目標 Oracle Database。

注意:只有商業區域和美國政府區域才支援從專用端點連結至目標 Oracle 資料庫的資料庫連結。此功能預設會在所有商業區域中啟用。美國政府區域預設會對新佈建的資料庫啟用此功能。針對專用端點上的現有美國政府資料庫,如果您想要建立從自治式 AI 資料庫連至美國政府區域中目標的資料庫連結,您可以從 Oracle Cloud 支援提出服務要求,並要求在政府區域資料庫連結功能中啟用專用端點。美國政府區域包括:

視目標 Oracle 資料庫的類型與組態而定:

自治式 AI 資料庫與專用端點上 Oracle 資料庫的資料庫連結先決條件

列出從自治式 AI 資料庫建立資料庫連結至專用端點之目標 Oracle 資料庫的先決條件。

若要在專用端點上建立目標 Oracle 資料庫的資料庫連結:

建立專用端點上 Oracle 資料庫的資料庫連結 (不含公事包)

您可以使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 來建立從自治式 AI 資料庫到專用端點上之目標 Oracle 資料庫的資料庫連結,而不使用公事包 (TCP) 進行連線。

注意:此選項適用於專用端點上未設定 SSL/TCPS 的目標 Oracle 資料庫。

視需要執行先決條件步驟。如需詳細資訊,請參閱從自治式 AI 資料庫到專用端點上 Oracle 資料庫的資料庫連結先決條件。

使用不含公事包的安全 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 的高可用性功能。不支援在 rac_hostnames 值中使用 IP 位址、SCAN IP 或 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 的權限。

    如範例所示,若要使用不含公事包的安全 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 程序

使用公事包 (mTLS) 從自治式 AI 資料庫建立資料庫連結到專用端點上的 Oracle 資料庫

您可以從自治式 AI 資料庫建立資料庫連結到專用端點上的目標 Oracle 資料庫。

注意:此選項適用於已設定 SSL/TCPS 且位於專用端點上的目標 Oracle 資料庫。

如果目標 Oracle 資料庫未設定 SSL/TCPS,您有兩個選項:

視需要執行先決條件步驟。如需詳細資訊,請參閱從自治式 AI 資料庫到專用端點上 Oracle 資料庫的資料庫連結先決條件。

若要使用 TCP/IP 與 SSL (TCPS) 認證,在專用端點上建立目標 Oracle 資料庫的資料庫連結:

  1. 將包含目標資料庫憑證的目標資料庫公事包 cwallet.sso 複製到「物件存放區」。

    注意:公事包檔案以及「資料庫」使用者 ID 和密碼,可讓您存取目標 Oracle 資料庫中的資料。將錢包檔案存放在安全的位置 。只有授權的使用者才能共用公事包檔案。

  2. 建立證明資料以存取您儲存 cwallet.sso 的物件存放區。請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務的使用者名稱和密碼參數相關資訊。

  3. 在「自治式 AI 資料庫」上建立公事包檔案 cwallet.sso 的目錄。

    舉例而言:

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

    如需有關建立目錄的資訊,請參閱在 Autonomous AI 資料庫中建立目錄

  4. 使用 DBMS_CLOUD.GET_OBJECT 將目標資料庫公事包上傳至您在上一個步驟 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 的高可用性功能。不支援在 rac_hostnames 值中使用 IP 位址、SCAN IP 或 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. 使用您建立的資料庫連結來存取目標資料庫中的資料。

    舉例而言:

    SELECT * FROM employees@PEDBLINK1;
    
    For the credentials you create in Step 5, the Oracle Database credentials, if the password of the target user changes you can update the credential that contains the target user's credentials as follows:

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

其中,密碼是新密碼。

此作業之後,使用此證明資料的現有資料庫連結會繼續運作,而不需要刪除並重新建立資料庫連結。

如需詳細資訊,請參閱 CREATE_DATABASE_LINK 程序

資料庫連結備註與目標 Oracle Database

提供建立目標 Oracle 資料庫之資料庫連結 (目標不是自治式 AI 資料庫時) 的注意事項

其他 Oracle 資料庫的資料庫連結注意事項:

DBMS_CLOUD_ADMIN 套裝程式