在專用端點上建立從自治式 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. 使用您建立的資料庫連結來存取目標資料庫中的資料。

    舉例而言:

    ```sql SELECT * 從員工 @PEDBLINK1;

對於您在步驟 5 中建立的證明資料,Oracle Database 證明資料,如果目標使用者的密碼變更,您可以更新包含目標使用者證明資料的證明資料,如下所示:

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 套裝程式