從 Autonomous Database 建立非 TLS 資料庫連結到另一個 Autonomous Database

您可以從專用 Exadata 基礎架構上的 Autonomous Database 建立非 TLS 資料庫連結到專用端點上的目標 Autonomous Database。

Autonomous Database 到目標 Autonomous Database 的非 TLS 資料庫連結先決條件

列出建立非 TLS 資料庫連結至專用端點之目標 Autonomous Database 的先決條件。

若要在專用端點上建立目標 Autonomous Database 的資料庫連結,請執行下列操作:

  • 目標資料庫必須能夠從來源資料庫的 Oracle Cloud Infrastructure VCN 存取。例如,您可以在下列情況時連線至目標資料庫:

    • 目標資料庫位於專用端點。

    • 來源資料庫和目標資料庫都位於相同的 Oracle Cloud Infrastructure VCN 中。

    • 來源資料庫和目標資料庫位於不同的 Oracle Cloud Infrastructure VCN 中。

    • 目標資料庫使用 FastConnect 或 VPN 連線至來源資料庫的 Oracle Cloud Infrastructure VCN。

  • 對於專用端點上的目標,DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 支援使用 hostname 參數指定單一主機名稱。在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱 (當目標位於公用端點時,CREATE_DATABASE_LINK 支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。

  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 不支援 hostname 參數的 localhost 值。

  • 必須為專用端點定義下列傳入和傳出規則:

    • 在來源資料庫的子網路安全清單或網路安全群組中定義傳出規則,以允許目標資料庫的 IP 位址和連接埠號碼透過 TCP 的流量。

    • 在目標資料庫的子網路安全清單或網路安全群組中定義傳入規則,以允許從來源資料庫 IP 位址到目的地連接埠的 TCP 流量。

建立目標 Autonomous Database 的非 TLS 資料庫連結

您可以從專用 Exadata 基礎架構上的 Autonomous Database 建立非 TLS 資料庫連結到專用端點上的目標 Autonomous Database

視需要執行必要步驟。請參閱從 Autonomous Database 到 Target Autonomous Database 的非 TLS 資料庫連結先決條件瞭解詳細資訊。

在專用端點上建立目標 Autonomous Database 的非 TLS 資料庫連結:

  1. 建立證明資料以存取目標 Autonomous Database 執行處理。您以 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 => '1521',
             service_name => 'example_high.adb.oraclecloud.com',
             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 主機名稱)。

    ADMIN 以外的使用者需要執行 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的權限。

    如範例所示,若要在沒有公事包的專用端點上建立含有 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 的資料庫連結到目標資料庫,則需要下列所有項目:

    • 非 TLS 連線的 port 參數值必須設為 1521。不過,如果在佈建 AVMC 時選擇了不同的 SCAN 監聽器連接埠號碼,則必須使用該連接埠號碼。請參閱建立自治式 Exadata VM 叢集以瞭解詳細資訊。

      directory_name 參數必須是 NULL

    • 您可以省略 ssl_server_cert_dn 參數,或者如果包含,請指定 NULL 值。

    • private_target 參數必須是 TRUE

      附註:

      private_target 參數設為 TRUE 時,會使用 TCP 協定 (而非 TCPS) 建立資料庫連結,因此在連線期間不會驗證 SSL 憑證。
  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 程序以瞭解其他資訊。

具有 Autonomous Database 目標的資料庫連結備註

提供與另一個 Autonomous Database 目標建立資料庫連結的備註。

資料庫連結至另一個 Autonomous Database 的注意事項:

  • 每個目錄只有一個有效的公事包檔案,才能與資料庫連結搭配使用。您一次只能將一個 cwallet.sso 上傳至您為公事包檔案選擇的目錄 (例如 DBLINK_WALLET_DIR)。這表示在 DBLINK_WALLET_DIR 中使用 cwallet.sso,您只能建立資料庫連結到該目錄中公事包有效的資料庫。若要使用多個含有資料庫連結的 cwallet.sso 檔案,您必須建立其他目錄,並將每個 cwallet.sso 放在不同的目錄中。使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 建立資料庫連結時,請指定包含公事包的目錄以及 directory_name 參數。

    請參閱在 Autonomous Database 中建立目錄,瞭解建立目錄的相關資訊。

  • 若要列出資料庫連結,請使用 ALL_DB_LINKS 視觀表。請參閱 Oracle Database 19c Database Reference 中的 ALL_DB_LINKSOracle Database 23ai Database Reference ,瞭解詳細資訊。

  • 公事包檔案以及資料庫使用者 ID 和密碼,可讓您存取目標 Autonomous Database 中的資料。將公事包檔案儲存在安全位置。只與授權的使用者共用公事包檔案。

  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 輸入應提及目標專用 Autonomous Database 的掃描名稱作為 'hostname' 參數。