在專用端點上建立從自治式 AI 資料庫到 Oracle Database 的資料庫連結
您可以從自治式 AI 資料庫建立資料庫連結到專用端點上的目標 Oracle Database。
注意:只有商業區域和美國政府區域才支援從專用端點連結至目標 Oracle 資料庫的資料庫連結。此功能預設會在所有商業區域中啟用。美國政府區域預設會對新佈建的資料庫啟用此功能。針對專用端點上的現有美國政府資料庫,如果您想要建立從自治式 AI 資料庫連至美國政府區域中目標的資料庫連結,您可以從 Oracle Cloud 支援提出服務要求,並要求在政府區域資料庫連結功能中啟用專用端點。美國政府區域包括:
視目標 Oracle 資料庫的類型與組態而定:
-
另一個 Oracle Database (例如內部部署或 Database Cloud Service 資料庫) 是針對 SSL (TCPS) 設定的專用端點:在此情況下,您可以建立含有公事包的資料庫連結,而資料庫連結則與 TCPS 通訊。請參閱使用公事包 (mTLS) 從自治式 AI 資料庫建立資料庫連結到專用端點上的 Oracle 資料庫以瞭解詳細資訊。
-
Oracle Database (例如內部部署或 Database Cloud Service 資料庫) 位於為 TCP 設定的專用端點上:在此情況下,您將建立不含公事包的資料庫連結,而資料庫連結則與 TCP 通訊。請參閱在專用端點上建立 Oracle 資料庫的資料庫連結,但不使用公事包瞭解詳細資訊。
自治式 AI 資料庫與專用端點上 Oracle 資料庫的資料庫連結先決條件
列出從自治式 AI 資料庫建立資料庫連結至專用端點之目標 Oracle 資料庫的先決條件。
若要在專用端點上建立目標 Oracle 資料庫的資料庫連結:
-
目標資料庫必須能夠從來源資料庫的 Oracle Cloud Infrastructure VCN 存取。例如,您可以在下列情況下連線至目標資料庫:
-
目標資料庫位於專用端點。
-
來源資料庫和目標資料庫都位於相同的 Oracle Cloud Infrastructure VCN 中。
-
來源資料庫和目標資料庫位於與配對的不同 Oracle Cloud Infrastructure VCN 中。
-
目標資料庫是指使用 FastConnect 或 VPN 連線至來源資料庫之 Oracle Cloud Infrastructure VCN 的內部部署資料庫。
-
-
有兩個選項可用來指定目標資料庫,請使用
hostname參數或rac_hostnames參數:-
針對專用端點上的目標,
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 主機名稱。當您在
rac_hostnames參數中指定主機名稱清單時,CREATE_DATABASE_LINK會使用所有指定的主機名稱作為連線字串中的位址。如果目標 Oracle RAC 資料庫上沒有其中一個指定的主機,Autonomous Database 會自動嘗試使用清單中的另一個主機名稱連線。
-
-
必須為專用端點定義下列傳入與傳出規則:
-
在來源資料庫的子網路安全清單或網路安全群組中定義傳出規則,以便允許目標資料庫的 IP 位址和連接埠號碼透過 TCP 的流量。
-
在目標資料庫的子網路安全清單或網路安全群組中定義傳入規則,以便允許透過 TCP 的流量從來源資料庫 IP 位址傳送至目的地連接埠。
-
建立專用端點上 Oracle 資料庫的資料庫連結 (不含公事包)
您可以使用 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK 來建立從自治式 AI 資料庫到專用端點上之目標 Oracle 資料庫的資料庫連結,而不使用公事包 (TCP) 進行連線。
注意:此選項適用於專用端點上未設定 SSL/TCPS 的目標 Oracle 資料庫。
視需要執行先決條件步驟。如需詳細資訊,請參閱從自治式 AI 資料庫到專用端點上 Oracle 資料庫的資料庫連結先決條件。
使用不含公事包的安全 TCP 連線,在專用端點上建立目標資料庫的資料庫連結:
-
在自治式 AI 資料庫上建立用以存取目標資料庫的證明資料。您以
DBMS_CLOUD.CREATE_CREDENTIAL指定的username和password是資料庫連結內所使用之目標資料庫的證明資料 (透過 VCN 存取目標資料庫的位置)。舉例而言:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'PRIVATE_ENDPOINT_CRED', username => 'NICK', password => '*password*' ); END; /username參數中的字元必須全部都是大寫字母。此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。
-
使用
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不支援hostname或rac_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。
-
-
使用您建立的資料庫連結來存取目標資料庫中的資料。
舉例而言:
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,您有兩個選項:
-
您可以將目標 Oracle 資料庫設定為使用 TCP/IP 與 SSL (TCPS) 認證。如需有關設定 SSL/TCPS 的資訊,請參閱 Oracle Database 19c Security Guide 中的 Configuring Transport Layer Security Authentication 或 Oracle Database 26ai Security Guide 。
-
您可以使用 TCP 連線目標 Oracle 資料庫。請參閱在專用端點上建立 Oracle 資料庫的資料庫連結,但不使用公事包瞭解詳細資訊。
視需要執行先決條件步驟。如需詳細資訊,請參閱從自治式 AI 資料庫到專用端點上 Oracle 資料庫的資料庫連結先決條件。
若要使用 TCP/IP 與 SSL (TCPS) 認證,在專用端點上建立目標 Oracle 資料庫的資料庫連結:
-
將包含目標資料庫憑證的目標資料庫公事包
cwallet.sso複製到「物件存放區」。注意:公事包檔案以及「資料庫」使用者 ID 和密碼,可讓您存取目標 Oracle 資料庫中的資料。將錢包檔案存放在安全的位置 。只有授權的使用者才能共用公事包檔案。
-
建立證明資料以存取您儲存
cwallet.sso的物件存放區。請參閱 CREATE_CREDENTIAL 程序,瞭解不同物件儲存服務的使用者名稱和密碼參數相關資訊。 -
在「自治式 AI 資料庫」上建立公事包檔案
cwallet.sso的目錄。舉例而言:
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';如需有關建立目錄的資訊,請參閱在 Autonomous AI 資料庫中建立目錄。
-
使用
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是「物件存放區」的證明資料。下一步是建立用以存取目標資料庫的證明資料。 -
在自治式 AI 資料庫上建立用以存取目標資料庫的證明資料。您以
DBMS_CLOUD.CREATE_CREDENTIAL指定的username和password是資料庫連結內所使用之目標資料庫的證明資料 (透過 VCN 存取目標資料庫的位置)。注意:必須提供
credential_name參數。舉例而言:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'NICK', password => '*password*'); END; /username參數中的字元必須全部都是大寫字母。此作業會以加密格式將證明資料儲存在資料庫中。您可以為證明資料名稱使用任何名稱。
-
使用
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不支援hostname或rac_hostnames參數中的localhost值。ADMIN 以外的使用者需要執行
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的權限。 -
使用您建立的資料庫連結來存取目標資料庫中的資料。
舉例而言:
```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 資料庫的資料庫連結注意事項:
-
每個目錄中只有一個公事包檔案可供資料庫連結使用。您一次只能將一個
cwallet.sso上傳到您為公事包檔案選擇的目錄 (例如 DBLINK_WALLET_DIR)。這表示在 DBLINK_WALLET_DIR 中使用cwallet.sso,您只能為該目錄中公事包有效的資料庫建立資料庫連結。若要使用多個具有資料庫連結的cwallet.sso檔案,您必須建立其他目錄,並將每個cwallet.sso放置在不同的目錄中。使用DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK建立資料庫連結時,請使用directory_name參數指定包含公事包的目錄。如需有關建立目錄的資訊,請參閱在 Autonomous AI 資料庫中建立目錄。
-
支援另一個 Oracle Database 資料庫連結的目標 Oracle 資料庫版本為:19c、12.2.0 和 12.1.0。
注意:如需有關支援版本的完整資訊,請參閱不同 Oracle 版本的從屬端伺服器互通性支援矩陣 (文件 ID 207303.1)
-
自治式 AI 資料庫會將
SEC_CASE_SENSITIVE_LOGON參數設為true,因此無法變更此值。如果您的目標資料庫不是自治式 AI 資料庫,則必須設定 ` SEC_CASE_SENSITIVE_LOGONparameter totrueon the target database. IfSEC_CASE_SENSITIVE_LOGONis set tofalseon the target database, then errorORA-28040:未發出任何相符的認證協定 `。 -
若要列出資料庫連結,請使用
ALL_DB_LINKS檢視。請參閱 Oracle Database 19c Database Reference 中的 ALL_DB_LINKS 或是 Oracle Database 26ai Database Reference ,瞭解詳細資訊。 -
公事包檔案以及資料庫使用者 ID 和密碼,可讓您存取目標 Oracle 資料庫中的資料。將錢包檔案存放在安全的位置 。只有授權的使用者才能共用公事包檔案。
-
當自治式 AI 資料庫執行處理位於專用端點時,有兩種指定目標資料庫的選項:使用
hostname參數或rac_hostnames參數:-
針對專用端點上的目標,
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 主機名稱。當您在
rac_hostnames參數中指定主機名稱清單時,CREATE_DATABASE_LINK會使用所有指定的主機名稱作為連線字串中的位址。如果目標 Oracle RAC 資料庫上沒有其中一個指定的主機,Autonomous Database 會自動嘗試使用清單中的另一個主機名稱連線。 -
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK不支援hostname或rac_hostnames參數中的localhost值。
-