- 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
集成 Oracle Exadata Database Service on Dedicated Infrastructure 和 Azure Blob Storage
- 登录 Azure 控制台以获取 Azure Blob 存储的信息,Oracle Exadata Database Service on Dedicated Infrastructure 数据库将从该存储中加载和查询数据。要告知 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 管理,然后创建 DNS 专用视图。将在步骤 2 中创建的专用 DNS 区域添加到此新创建的 DNS 专用视图,并激活更改。
- 从 OCI 菜单中,选择网络/虚拟客户端网络 (VCN) 。选择在预配 Oracle Exadata Database Service on Dedicated Infrastructure 的 OracleDB for Azure 时创建的 VCN(如果需要,请更改区间)。选择 DNS 解析程序链接,然后将以前创建的 DNS 专用视图添加到 DNS 解析程序。这支持从 Oracle Exadata Database Service on Dedicated Infrastructure 到 Azure Blob Storage 专用端点的名称和 IP 地址解析。
- 登录到 Oracle Exadata Database Service on Dedicated Infrastructure VM 集群节点之一,以使用
nslookup
命令验证主机名到 IP 地址解析是否适用于 Azure SQL Server 主机名和专用端点 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 Storage 名称。
- 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_CLOUD
package 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 Wallet 部分中,此步骤将向 SSL wallet 添加根证书。您可以跳过创建 wallet 步骤,因为 Oracle Exadata Database Service on Dedicated Infrastructure 已有一个用于管理 SSL 证书(网格 Wallet)的 wallet。应改为将根证书添加到网格 Wallet(位于
/var/opt/oracle/dbaas_acfs/grid/tcps_wallets
中)。您将需要 Grid Wallet 密码才能添加根证书。有关如何获取 Grid Wallet 口令的详细信息,请参见“复查文档”部分中的 My Oracle Support 文章 Get Password of ASM and Wallets (文档 ID 2814361.1)。
- 登录到 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 Storage 用户名。
- Azure_Blob_Storage_Password_from_Step_1 是步骤 1 中的 Azure Blob Storage 密码。
- 创建 Azure 凭证后,创建一个外部表来访问 Azure Blob Storage 对象,如下所示:
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_Name
Table_Name 是要查询的数据库中的表的名称。