使用客戶管理的異質連線在專用端點上建立與非 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 資料庫執行處理的資料庫連結,請執行下列作業:
-
設定 Oracle Database Gateway 以存取非 Oracle 資料庫。請參閱 Oracle Database 19c Database Heterogeneous Connectivity User's Guide 中的 Oracle Database Gateways 或 Oracle Database 26ai Database Heterogeneous Connectivity User's Guide 以瞭解詳細資訊。
視您要連線的資料庫而定,您可以參閱相應的 Installation and Configuration Guide 和 Gateway User's Guide。
例如,若為 Oracle Database Gateway for SQL Server,請參閱:
-
Oracle Database 19c Installation and Configuration Guide for Microsoft Windows 或 Oracle Database 26ai Installation and Configuration Guide for Microsoft Windows 中的 Installing and Configuring Oracle Database Gateway for SQL Server
-
Oracle Database 19c Gateway for SQL Server User's Guide 中的 Introduction to the Oracle Database Gateway for SQL Server 或 Oracle Database 26ai Gateway for SQL Server User's Guide 。
-
Oracle Database 19c Installation and Configuration Guide for Microsoft Windows 或 Oracle Database 26ai Installation and Configuration Guide for Microsoft Windows 中的 Configure Oracle Net for the Gateway 。
-
-
設定讓 Oracle Net Listener 處理 Oracle Database Gateway 上的內送要求。
-
在 Oracle Database Gateway 上建立自行簽署的公事包。
此外:
-
目標資料庫必須能夠從來源資料庫的 Oracle Cloud Infrastructure VCN 存取。例如,您可以在下列情況下連線至目標資料庫:
-
目標資料庫位於專用端點。
-
來源資料庫和目標資料庫都位於相同的 Oracle Cloud Infrastructure VCN 中。
-
來源資料庫和目標資料庫位於與配對的不同 Oracle Cloud Infrastructure VCN 中。
-
針對專用端點上的目標,
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK支援使用hostname參數指定單一主機名稱。在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱 (當目標位於公用端點時,CREATE_DATABASE_LINK會支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。
-
-
必須為專用端點定義下列傳入與傳出規則:
-
在來源資料庫的子網路安全清單或網路安全群組中定義傳出規則,以便允許目標資料庫的 IP 位址和連接埠號碼透過 TCP 的流量。
-
在目標資料庫的子網路安全清單或網路安全群組中定義傳入規則,以便允許透過 TCP 的流量從來源資料庫 IP 位址傳送至目的地連接埠。
-
專用端點上非 Oracle 資料庫的客戶管理異質連線 (不含公事包)
您可以建立從自治式 AI 資料庫連至 Oracle Database Gateway 的資料庫連結,以存取專用端點上具有公事包 (TCPS) 或沒有公事包 (TLS) 的非 Oracle 資料庫。本節描述建立不含公事包的資料庫連結。
若要使用資料庫連結和 TLS 連線,在專用端點上建立從自治式 AI 資料庫執行處理連至目標閘道的資料庫連結,請執行下列作業:
-
在自治式 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參數中的字元必須全部都是大寫字母。此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。
-
使用
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_name為NULL時,連線會建立為以 TCP 為基礎的資料庫連結 (不含公事包)。目標非 Oracle Database 位於專用端點時,必須將
private_target參數設為TRUE(亦即,資料庫連結會存取需要在 VCN DNS 伺服器中解析的主機名稱)。當private_target為TRUE時,hostname參數必須是單一主機名稱 (在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。當
gateway_link為TRUE且gateway_params為NULL時,這會指定資料庫連結為客戶管理的 Oracle 閘道。ADMIN 以外的使用者需要執行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的權限。請參閱 CREATE_DATABASE_LINK 程序以瞭解詳細資訊。
-
請使用您建立的資料庫連結來存取目標閘道上的資料。
舉例而言:
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 資料庫執行處理到目標閘道的資料庫連結 (使用公事包連線),請執行下列作業:
-
將包含 Oracle Database Gateway 之憑證的目標閘道自行簽署公事包 (例如
cwallet.sso) 複製到物件存放區。公事包檔案以及資料庫使用者 ID 和密碼,可讓您存取可透過目標閘道取得的資料。將錢包檔案存放在安全的位置 。只有授權的使用者才能共用公事包檔案。
-
在自治式 AI 資料庫上,建立證明資料以存取儲存
cwallet.sso的物件存放區。請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務的使用者名稱和密碼參數相關資訊。
-
在「自治式 AI 資料庫」上建立公事包檔案
cwallet.sso的目錄。舉例而言:
CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';如需有關建立目錄的資訊,請參閱在 Autonomous AI Database 中建立目錄。
-
使用
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是「物件存放區」的證明資料。下一步是建立用以存取目標閘道的證明資料。 -
在自治式 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參數中的字元必須全部都是大寫字母。此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。
-
使用
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_target為TRUE時,hostname參數必須是單一主機名稱 (在專用端點上,不支援使用 IP 位址、SCAN IP 或 SCAN 主機名稱)。當
gateway_link為TRUE且gateway_params為NULL時,這會指定資料庫連結為客戶管理的 Oracle 閘道。ADMIN 以外的使用者需要執行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的權限。請參閱 CREATE_DATABASE_LINK 程序以瞭解詳細資訊。
-
請使用您建立的資料庫連結來存取目標閘道上的資料。
舉例而言:
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 程序以瞭解詳細資訊。