集成 Oracle Exadata Database Service on Dedicated InfrastructureAzure Blob Storage

  1. 登录 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 地址。
  2. 从 OCI 菜单中,选择网络/DNS 管理以创建专用 DNS 区域。在新的专用 DNS 区域中,从步骤 1 为 Azure Blob 存储名称添加一条记录,以从步骤 1 解析为 Azure Blob 专用端点 IP 地址。
  3. 从 OCI 菜单中,选择网络/DNS 管理,然后创建 DNS 专用视图。将在步骤 2 中创建的专用 DNS 区域添加到此新创建的 DNS 专用视图,并激活更改。
  4. 从 OCI 菜单中,选择网络/虚拟客户端网络 (VCN) 。选择在预配 Oracle Exadata Database Service on Dedicated InfrastructureOracleDB for Azure 时创建的 VCN(如果需要,请更改区间)。选择 DNS 解析程序链接,然后将以前创建的 DNS 专用视图添加到 DNS 解析程序。
    这支持从 Oracle Exadata Database Service on Dedicated InfrastructureAzure Blob Storage 专用端点的名称和 IP 地址解析。
  5. 登录到 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 地址。
  6. 登录到 Oracle Exadata Database Service on Dedicated Infrastructure 可插入数据库,以创建或选择具有 cloud_user 角色的用户。记下用户的用户名和密码。具有 cloud_user 角色的用户将有权使用 DBMS_CLOUD 软件包。
  7. 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)。
  8. 登录到 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_nameOracle 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 密码。
  9. 创建 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;
    /
  10. 运行查询以验证 Oracle Exadata Database Service on Dedicated Infrastructure 可插入数据库是否可以查询上面创建的表。
    例如:
    select count(*) from Table_Name
    Table_Name 是要查询的数据库中的表的名称。