Oracle Exadata Database Service on Dedicated InfrastructureAzure Blob Storage 통합

  1. Azure 콘솔에 로그인하여 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스가 데이터를 로드하고 질의할 Azure Blob Storage에 대한 정보를 가져옵니다. 이 정보는 DBMS_CLOUD 패키지에 Azure Blob Storage 객체에 연결하는 방법을 알려주는 데 필요합니다.
    다음 세부정보를 확인합니다.
    • Azure Blob 인증서: Azure Blob Storage에 액세스하기 위한 사용자 이름 및 비밀번호입니다.
    • Azure Blob 스토리지 이름: 데이터가 저장되는 Azure Blob 스토리지의 이름입니다(일반적으로 blobstoragename.blob.core.windows.net 형식).
    • Azure Blob URL: 데이터가 저장되는 Azure Blob Storage의 URL(일반적으로 https://blobstoragename.blob.core.windows.net/dirname/object_name 형식)입니다.
    • Azure Blob 전용 끝점: Azure Blob Storage 전용 끝점의 IP 주소입니다. 전용 끝점이 존재하지 않을 경우 생성 후 IP 주소를 기록하십시오.
  2. OCI 메뉴에서 네트워킹/DNS 관리를 선택하여 전용 DNS 영역을 생성합니다. 새 전용 DNS 영역의 단계 1에서 Azure Blob Storage 이름에 대한 레코드를 추가하여 단계 1의 Azure Blob 전용 끝점 IP 주소로 분석합니다.
  3. OCI 메뉴에서 네트워킹/DNS 관리를 선택하고 DNS 전용 뷰를 생성합니다. 2단계에서 생성한 전용 DNS 영역을 새로 생성된 이 DNS 전용 뷰에 추가하고 변경사항을 활성화합니다.
  4. OCI 메뉴에서 네트워킹/VCN(가상 클라이언트 네트워크)을 선택합니다. Oracle Exadata Database Service on Dedicated InfrastructureAzure용 OracleDB가 프로비전될 때 생성된 VCN을 선택합니다(필요한 경우 구획 변경). DNS 분석기 링크를 선택한 다음 이전에 생성된 DNS 전용 뷰를 DNS 분석기에 추가합니다.
    이를 통해 Oracle Exadata Database Service on Dedicated Infrastructure에서 Azure Blob Storage 전용 끝점으로 이름 및 IP 주소를 분석할 수 있습니다.
  5. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터 노드 중 하나에 로그인하여 nslookup 명령을 사용하여 Azure SQL Server 호스트 이름 및 전용 끝점 IP에 대해 호스트 이름-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. My Oracle Support 문서 How to Setup and Use DBMS_CLOUD Package(문서 ID 2748362.1)에 따라 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스 19c 이상에 DBMS_CLOUD 패키지를 설치합니다. 자세한 내용은 문서 검토 섹션을 참조하십시오. DBMS_CLOUD 패키지를 설치할 때 다음 사항에 유의하십시오.
    • My Oracle Support 문서 섹션 DBMS_CLOUD를 사용하기 위해 사용자 또는 역할에 최소 권한 부여에서 6단계에서 만든 사용자 이름을 사용합니다.
    • My Oracle Support 문서 섹션 인증서가 있는 SSL 전자 지갑 생성에서 이 단계는 SSL 전자 지갑에 루트 인증서를 추가합니다. Oracle Exadata Database Service on Dedicated Infrastructure에 SSL 인증서(Grid Wallet)를 관리하기 위한 전자 지갑이 이미 있으므로 전자 지갑 생성 단계를 건너뛸 수 있습니다. 대신 /var/opt/oracle/dbaas_acfs/grid/tcps_wallets에 있는 그리드 전자 지갑에 루트 인증서를 추가해야 합니다. 루트 인증서를 추가하려면 Grid Wallet 비밀번호가 필요합니다. Grid Wallet 비밀번호를 가져오는 방법에 대한 자세한 내용은 Review Documentation 섹션에서 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은 질의할 데이터베이스의 테이블 이름입니다.