在專用端點上建立從自治式 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的權限。 -
使用您建立的資料庫連結來存取目標資料庫中的資料。
舉例而言:
SELECT * FROM employees@PEDBLINK1; For the credentials you create in Step 5, the Oracle Database credentials, if the password of the target user changes you can update the credential that contains the target user's credentials as follows:SQL 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值。
-