- Load data from Azure Blob Storage to Oracle Exadata Database Service on Dedicated Infrastructure
- Integrate Oracle Exadata Database Service on Dedicated Infrastructure and Azure Blob Storage
Integrate Oracle Exadata Database Service on Dedicated Infrastructure and Azure Blob Storage
- 登入 Azure 主控台以取得 Oracle Exadata Database Service on Dedicated Infrastructure 資料庫將載入並查詢資料的 Azure Blob 儲存相關資訊。此資訊是用來告知 DBMS_CLOUD 套裝軟體如何連線至 Azure Blob 儲存體物件的必要資訊。取得下列詳細資訊:
- Azure Blob 證明資料:存取 Azure Blob 儲存體的使用者名稱和密碼。
- Azure Blob 儲存名稱:儲存資料之 Azure Blob 儲存的名稱,通常為
blobstoragename.blob.core.windows.net格式。 - Azure Blob URL :儲存資料之 Azure Blob 儲存體的 URL ,通常是
https://blobstoragename.blob.core.windows.net/dirname/object_name格式。 - Azure Blob 專用端點:Azure Blob 儲存體專用端點的 IP 位址。如果專用端點不存在,請建立一個專用端點,並記下 IP 位址。
- 從 OCI 功能表中,選取網路 /DNS 管理以建立專用 DNS 區域。在新的專用 DNS 區域中,從步驟 1 新增 Azure Blob 儲存體名稱的記錄,以從步驟 1 解析為 Azure Blob 專用端點 IP 位址。
- 從 OCI 功能表中選取網路 /DNS 管理 (Networking/DNS Management) ,然後建立 DNS 專用檢視。將步驟 2 中建立的專用 DNS 區域加到此新建立的 DNS 專用檢視,然後啟用變更。
- 從 OCI 功能表中選取網路 / 虛擬從屬端網路 (VCN) 。Select the VCN created when the OracleDB for Azure for Oracle Exadata Database Service on Dedicated Infrastructure was provisioned (change the compartment if required).選取 DNS 解析器連結,然後將先前建立的 DNS 專用檢視新增至 DNS 解析器。這可將名稱和 IP 位址解析從 Oracle Exadata Database Service on Dedicated Infrastructure 到 Azure Blob 儲存 專用端點。
- Log in to one of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes to use the
nslookupcommand to verify the hostname to IP address resolution is working for the Azure SQL Server hostname and private endpoint IP.例如:[opc@exa_dbnodex ~]$ nslookup blobstoragename.blob.core.windows.net Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: blobstoragename.blob.core.windows.net Address: IP_address_of_Azure_Blob_private_endpoint [opc@exa_dbnodex ~]$範例中的變數具有下列值:- blobstoragename 是步驟 1 的 Azure Blob 儲存體名稱。
- IP_address_of_Azure_Blob_private_endpoint 是步驟 1 中 Azure Blob 專用端點的 IP 位址。
- 登入 Oracle Exadata Database Service on Dedicated Infrastructure 可插式資料庫,以建立或選取具備
cloud_user角色的使用者。記下使用者的使用者名稱和密碼。具有 cloud_user 角色的使用者將具有使用DBMS_CLOUD套裝軟體的權限。 - Install the
DBMS_CLOUDpackage on the Oracle Exadata Database Service on Dedicated Infrastructure database 19c or newer by following the My Oracle Support article How to Setup and Use DBMS_CLOUD Package (Doc ID 2748362.1).如需詳細資料,請參閱「檢閱文件」一節。安裝DBMS_CLOUD套裝軟體時請注意下列事項:- 在 My Oracle Support 文章區段中,將最低權限授予使用 DBMS_CLOUD 的使用者或角色,請使用步驟 6 中建立的使用者名稱。
- 在 My Oracle Support 文章段落使用憑證建立 SSL 公事包中,此步驟會將根憑證新增至 SSL 公事包。You can skip the creation of the wallet step because Oracle Exadata Database Service on Dedicated Infrastructure already has a wallet to manage SSL certificates (the Grid Wallet).您應該改為將根憑證新增至位於
/var/opt/oracle/dbaas_acfs/grid/tcps_wallets的「網格公事包」。您需要有 Grid Wallet 密碼,才能新增根憑證。請參閱「複查文件」段落中的 My Oracle Support 文章 取得 ASM 和公事包的密碼 (文件 ID 2814361.1),瞭解如何取得 Grid Wallet 密碼的詳細資訊。
- 登入 Oracle Exadata Database Service on Dedicated Infrastructure 可插拔資料庫,以使用上一個步驟中所安裝的
DBMS_CLOUD套裝軟體建立 Azure 證明資料。[opc@exa-dbnodex ~]$ sudo su - oracle Last login: Tue Sep 13 20:06:30 UTC 2022 [oracle@exa-dbnodex ~]$ . ./exa_dbname.env [oracle@exa-dbnodex ~]$sqlplus Username_From_Step_6/Password_From_Step_6@'(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST=exascan.customersubnet1.cvcn.oraclevcn.com) (PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdbna me.customersubnet1.cvcn.oraclevcn.com)(FAILOVER_MODE=(TYPE=select)(MET HOD=basic))))' SQL>BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'AZ_CRED', username => 'Azure_Blob_Storage_Username_from_Step_1', password => ‘Azure_Blob_Storage_Password_from_Step_1' ); END; /範例中的變數具有下列值:- exadb_name 是 Oracle Exadata Database Service on Dedicated Infrastructure 資料庫的名稱。
- Username_From_Step_6 是步驟 6 的使用者名稱。
- Password_From_Step_6 是步驟 6 的密碼。
- pdbname 是可插拔資料庫的名稱。
- Azure_Blob_Storage_Username_from_Step_1 是步驟 1 的 Azure Blob 儲存體使用者名稱。
- Azure_Blob_Storage_Password_from_Step_1 是步驟 1 的 Azure Blob 儲存體密碼。
- 建立 Azure 證明資料之後,請建立外部表格以存取 Azure Blob 儲存體物件,如下所示:
SQL>BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name =>'Table_Name', credential_name =>'AZ_CRED', file_uri_list => 'Azure_Blob_URL_From_Step_1', format => json_object('delimiter' value ','), column_list => 'Column1_Name Type, Column2_Name Type, Column3_Name Type' ); END; /例如,如果要存取的 Blob 物件是含有 3 個資料欄的逗號分隔文字檔,則指令可能會類似:SQL>BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name =>'CHANNELS_EXT', credential_name =>'AZ_CRED', file_uri_list =>'https://odsaexternaltables.blob.core.windows.net/data/channels.txt', format => json_object('delimiter' value ','), column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)' ); END; / - 執行查詢以確認 Oracle Exadata Database Service on Dedicated Infrastructure 可插式資料庫可查詢上面建立的表格。例如:
select count(*) from Table_NameTable_Name 是資料庫中要查詢的表格名稱。