使用客戶管理的異質連線在專用端點上建立與非 Oracle 資料庫的資料庫連結

您可以從專用 Exadata 基礎架構上的自治式 AI 資料庫建立資料庫連結到 Oracle Database Gateway,以存取專用端點上的非 Oracle 資料庫。

Oracle Database Gateway 是專為存取特定非 Oracle 系統而設計的閘道。使用 Oracle Database Gateway,您無需知道資料的位置或資料的儲存方式,即可存取分散式資料庫系統中任何位置的資料。在搭配 Oracle Database Gateway 的 Autonomous AI Database 上使用資料庫連結,可支援異質環境,無需自訂應用程式以存取來自非 Oracle 系統的資料。

注意:只有 19c 和 23.6 和更新版本的 19c 和 23.6 和更新版本才支援在專用端點上建立與客戶管理之非 Oracle 資料庫的資料庫連結。

必備條件

若要在公用端點上使用來自自治式 AI 資料庫執行處理的資料庫連結,請執行下列作業:

  1. 設定 Oracle Database Gateway 以存取非 Oracle 資料庫。請參閱 Oracle Database 19c Database Heterogeneous Connectivity User's Guide 中的 Oracle Database GatewaysOracle Database 26ai Database Heterogeneous Connectivity User's Guide 以瞭解詳細資訊。

    視您要連線的資料庫而定,您可以參閱相應的 Installation and Configuration Guide 和 Gateway User's Guide。

    例如,若為 Oracle Database Gateway for SQL Server,請參閱:

  2. 設定讓 Oracle Net Listener 處理 Oracle Database Gateway 上的內送要求。

  3. 在 Oracle Database Gateway 上建立自行簽署的公事包。

此外:

專用端點上非 Oracle 資料庫的客戶管理異質連線 (不含公事包)

您可以建立從自治式 AI 資料庫連至 Oracle Database Gateway 的資料庫連結,以存取專用端點上具有公事包 (TCPS) 或沒有公事包 (TLS) 的非 Oracle 資料庫。本節描述建立不含公事包的資料庫連結。

若要使用資料庫連結和 TLS 連線,在專用端點上建立從自治式 AI 資料庫執行處理連至目標閘道的資料庫連結,請執行下列作業:

  1. 在自治式 AI 資料庫上,建立用以存取目標資料庫的證明資料。您以 DBMS_CLOUD.CREATE_CREDENTIAL 指定的使用者名稱和密碼是資料庫連結內所使用之目標資料庫的證明資料 (可透過 Oracle Database Gateway 存取目標資料庫的位置)。

    舉例而言:

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

    必須提供 credential_name 參數。

    username 參數中的字元必須全部都是大寫字母。

    此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。

  2. 使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 建立目標閘道的資料庫連結。

    舉例而言:

     BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name =>       'SALESLINK',
             hostname =>           'example.com',
             port =>               '1522',
             service_name =>       'example_service_name',
             ssl_server_cert_dn => 'ssl_server_cert_dn',
             credential_name =>    'DB_LINK_CRED',
             directory_name =>      NULL,
             gateway_link =>        TRUE,
             private_target =>      TRUE,
             gateway_params =>      NULL
         );
     END;/
    

    如果連線是以 TCP 為基礎的資料庫連結 (沒有公事包) 建立,則 ssl_server_cert_dn 參數為選擇性。

    directory_nameNULL 時,連線會建立為以 TCP 為基礎的資料庫連結 (不含公事包)。

    目標非 Oracle Database 位於專用端點時,必須將 private_target 參數設為 TRUE (亦即,資料庫連結會存取需要在 VCN DNS 伺服器中解析的主機名稱)。當 private_targetTRUE 時,hostname 參數必須是單一主機名稱 (在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。

    gateway_linkTRUEgateway_paramsNULL 時,這會指定資料庫連結為客戶管理的 Oracle 閘道。

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

    請參閱 CREATE_DATABASE_LINK 程序以瞭解詳細資訊。

  3. 請使用您建立的資料庫連結來存取目標閘道上的資料。

    舉例而言:

     SELECT * FROM employees@SALESLINK;
    

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

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

其中密碼是新密碼。

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

請參閱 UPDATE_CREDENTIAL 程序以瞭解詳細資訊。

專用端點上非 Oracle 資料庫的客戶管理異質連線 (使用公事包)

您可以建立從自治式 AI 資料庫連至 Oracle Database Gateway 的資料庫連結,以存取專用端點上具有公事包 (TCPS) 或沒有公事包 (TLS) 的非 Oracle 資料庫。本節描述使用公事包建立資料庫連結。

若要建立從專用端點上的自治式 AI 資料庫執行處理到目標閘道的資料庫連結 (使用公事包連線),請執行下列作業:

  1. 將包含 Oracle Database Gateway 之憑證的目標閘道自行簽署公事包 (例如 cwallet.sso) 複製到物件存放區。

    公事包檔案以及資料庫使用者 ID 和密碼,可讓您存取可透過目標閘道取得的資料。將錢包檔案存放在安全的位置 。只有授權的使用者才能共用公事包檔案。

  2. 在自治式 AI 資料庫上,建立證明資料以存取儲存 cwallet.sso 的物件存放區。

    請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務的使用者名稱和密碼參數相關資訊。

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

    舉例而言:

     CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
    

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

  4. 使用 DBMS_CLOUD.GET_OBJECT 將目標閘道自行簽署的公事包上傳至您在上一個步驟 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 是儲存桶名稱。請參閱瞭解物件儲存命名空間以瞭解詳細資訊。

    注意:您在此步驟中使用的 credential_name 是「物件存放區」的證明資料。下一步是建立用以存取目標閘道的證明資料。

  5. 在自治式 AI 資料庫上,建立用以存取目標資料庫的證明資料。您以 DBMS_CLOUD.CREATE_CREDENTIAL 指定的使用者名稱和密碼是資料庫連結內所使用之目標資料庫的證明資料 (可透過 Oracle Database Gateway 存取目標資料庫的位置)。

    舉例而言:

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

    必須提供 credential_name 參數。

    username 參數中的字元必須全部都是大寫字母。

    此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。

  6. 使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 建立目標閘道的資料庫連結。

    舉例而言:

     BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name =>'SALESLINK',
             hostname =>'example.com',
             port =>'1522',
             service_name =>'example_service_name',
             ssl_server_cert_dn =>'ssl_server_cert_dn',
             credential_name =>'DB_LINK_CRED',
             directory_name =>'DBLINK_WALLET_DIR',
             gateway_link =>TRUE,
             private_target =>TRUE,
             gateway_params =>NULL
         );
     END;
     /
    

    如果 directory_name 不是 NULL,則會建立以 TCPS 為基礎的資料庫連結。

    目標非 Oracle Database 位於專用端點時,必須將 private_target 參數設為 TRUE (亦即,資料庫連結會存取需要在 VCN DNS 伺服器中解析的主機名稱)。當 private_targetTRUE 時,hostname 參數必須是單一主機名稱 (在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。

    gateway_linkTRUEgateway_paramsNULL 時,這會指定資料庫連結為客戶管理的 Oracle 閘道。

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

    請參閱 CREATE_DATABASE_LINK 程序以瞭解詳細資訊。

  7. 請使用您建立的資料庫連結來存取目標閘道上的資料。

    舉例而言:

     SELECT * FROM employees@SALESLINK;
    

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

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

其中密碼是新密碼。

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

請參閱 UPDATE_CREDENTIAL 程序以瞭解詳細資訊。

相關內容

DBMS_CLOUD 套裝程式