Oracle 이기종 서비스를 사용하여 데이터 로드

Azure용 OracleDBAzure 애플리케이션이 OCI 데이터베이스에서 데이터를 로드하고 쿼리할 수 있게 해줍니다. 이 아키텍처는 Oracle Exadata Database Service on Dedicated InfrastructureAzure용 OracleDB에서 제공하는 인프라를 활용하여 Oracle Exadata Database Service on Dedicated Infrastructure에서 제공하는 Oracle Heterogenous 서비스를 통해 데이터베이스 링크를 통해 Azure SQL Server에서 데이터를 로드하는 방법에 대해 설명합니다.

구조

이 아키텍처는 Oracle Exadata Database Service on Dedicated Infrastructure를 사용하여 Oracle Exadata Database Service on Dedicated Infrastructure에서 실행되는 Oracle Heterogenous Services를 사용하여 데이터베이스 링크를 통해 Azure SQL Server에서 데이터를 로드하고 쿼리합니다.

다음 다이어그램은 이 구조를 보여줍니다.



exadata-db-azure-odsa-heterogenous.zip

시작하기 전에

시작하기 전에 이 설정에 사용된 주요 소프트웨어 구성 요소의 버전을 확인하고 필요한 소프트웨어 패키지를 다운로드한 다음 제품 설명서에서 나중에 참조할 수 있도록 검토하십시오.

소프트웨어 요구사항 검토

이러한 지침은 다음 소프트웨어 및 하드웨어 버전에서 테스트됩니다.

  • Oracle Exadata Database Service on Dedicated Infrastructure X8M-2
  • Oracle Database 19.16

다음 소프트웨어 패키지를 다운로드합니다.

설명서 검토

필수 서비스 및 역할 정보

이 솔루션을 사용하려면 다음 서비스가 필요합니다.

  • Oracle Exadata Database Service on Dedicated Infrastructure
  • Oracle Exadata Database Service on Dedicated Infrastructure 가상 머신

각 서비스에 필요한 역할입니다.

서비스 이름: 역할 다음에 필요...
Oracle Exadata Database Service on Dedicated Infrastructure: sys con 데이터베이스 링크를 구성합니다.
Oracle Exadata Database Service on Dedicated Infrastructure 가상 머신: opc/root, oracle, grid Microsoft ODBC 드라이버를 설치하고 ODBC 도구를 설치하며 리스너를 구성하고 이기종 서비스를 구성합니다.

필요한 클라우드 서비스를 이용하려면 Oracle 솔루션을 위한 Oracle Cloud 서비스를 얻는 방법 알아보기를 참조하십시오.

Oracle 이기종 서비스 고려 사항

Oracle 이기종 서비스를 사용하여 데이터를 로드할 때 다음 고려 사항을 검토하십시오.

  • Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에서는 Azure SQL Server 끝점에 대한 호스트 이름-IP 주소 분석을 필요로 합니다. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터 노드에서 /etc/hosts 파일을 편집하거나, Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스가 구성된 OCI VCN(가상 클라우드 네트워크)에서 전용 DNS 영역을 구성할 수 있습니다.
  • Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에서는 기본적으로 global_names 매개변수가 TRUE로 설정됩니다. 따라서 Azure SQL Server에 대한 데이터베이스 링크를 생성할 때 정규화된 데이터베이스 이름을 사용해야 합니다.
  • Oracle Heterogenous Services는 기본적으로 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에 포함되어 있습니다. 그러나 타사 데이터베이스에 연결하려면 추가 Microsoft ODBC 드라이버가 필요합니다. Azure SQL Server 데이터베이스의 경우 Microsoft SQL Server용 Microsoft ODBC 드라이버가 권장됩니다.

Oracle 이기종 서비스의 이점

  • Oracle Heterogenous Services는 Oracle에서 개발 및 지원하며 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스 소프트웨어 이미지에 포함되어 있습니다. 추가 Oracle 라이센스는 필요하지 않습니다.
  • Oracle Exadata Database Service on Dedicated Infrastructure와 Azure SQL Server 간의 통신은 전체 암호화되며 추가 구성이 필요하지 않습니다(Azure SQL Server에 의해 적용된 네트워크 암호화와 Oracle Exadata Database Service on Dedicated Infrastructure 기본 구성).

Oracle 이기종 서비스의 단점

  • 추가 타사 소프트웨어를 Oracle Exadata Database Service on Dedicated Infrastructure(Microsoft SQL Server용 Microsoft ODBC 드라이버)에 설치해야 합니다. Oracle Exadata Database Service on Dedicated Infrastructure 환경을 업데이트 및 유지 관리할 때 추가 단계가 필요할 수 있습니다.
  • Oracle Heterogenous Services는 Oracle Exadata Database Service on Dedicated Infrastructure 플랫폼에서 실행되며, 솔루션이 더 전문화되고 가격이 높은 Oracle Exadata Database Service on Dedicated Infrastructure OCPU를 사용하여 Azure SQL Server에서 데이터를 로드하고 쿼리할 수 있기 때문에 이 솔루션을 조금 더 비쌉니다.
  • 이 솔루션은 데이터 유형 변환 및 매핑을 위해 수동 구성이 필요한 Microsoft SQL Server용 Microsoft ODBC 드라이버를 사용합니다.

Oracle 이기종 서비스를 사용하여 Oracle Database Gateway 구성

  1. Azure 콘솔에 로그인하여 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스가 데이터를 로드하고 질의할 Azure SQL Server 데이터베이스에 대한 정보를 가져옵니다. 이 정보는 Microsoft ODBC 드라이버에 Azure SQL Server 데이터베이스에 연결하는 방법을 알려주는 데 필요합니다.
    다음 세부 정보를 얻습니다.
    • 데이터베이스 이름: Azure SQL Server 데이터베이스의 이름입니다.
    • 전체 서버 이름: Azure SQL Server 데이터베이스가 실행 중인 SQL Server의 전체 호스트 이름(일반적으로 servername.database.windows.net 형식)입니다.
    • Azure SQL Server 전용 끝점: Azure SQL Server에 접속된 Azure vnet의 Azure SQL Server 전용 끝점의 이름 및 IP 주소입니다. 아직 전용 끝점이 없는 경우 Azure SQL Server에 대한 끝점을 생성하고 이름과 IP 주소를 기록합니다.
    • Azure SQL Server 사용자 이름: Azure SQL Server 데이터베이스 및 스키마(일반적으로 sqladmin)에 접속하도록 허용된 기존 Azure SQL Server 사용자의 이름입니다.
    • Azure SQL Server 사용자 비밀번호: Azure SQL Server 사용자가 Azure SQL Server 데이터베이스 및 스키마에 접속하기 위한 비밀번호입니다.
  2. OCI 기본 메뉴에서 네트워킹/DNS 관리를 선택하여 전용 DNS 영역을 생성합니다. 새 전용 DNS 영역의 1단계에서 정규화된 서버 이름에 대한 레코드를 추가하여 Azure SQL Server 전용 끝점 IP 주소(1단계)로 분석합니다.
  3. OCI 기본 메뉴에서 네트워킹/DNS 관리를 선택하여 DNS 전용 뷰를 생성합니다. 이전 단계에서 생성된 전용 DNS 영역을 새로 생성된 이 DNS 전용 뷰에 추가하고 변경사항을 활성화합니다.
  4. OCI 기본 메뉴에서 네트워킹/VCN(가상 클라이언트 네트워크)을 선택합니다. Oracle Database Gateway Oracle Exadata Database Service on Dedicated Infrastructure 서비스를 프로비저닝할 때 생성된 VCN을 선택합니다(필요한 경우 구획 변경). DNS 분석기 링크를 누른 다음 이전 단계에서 생성된 DNS 전용 뷰를 DNS 분석기에 추가합니다. 이를 통해 Oracle Exadata Database Service on Dedicated Infrastructure에서 Oracle Database Gateway를 실행하는 Azure VM으로의 이름 및 IP 주소 분석을 수행할 수 있습니다.
  5. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터 노드 중 하나에 로그인하여 nslookup를 사용하여 Oracle Database Gateway를 실행할 Azure 가상 시스템에서 호스트 이름-IP 주소 분석이 작동하는지 확인합니다.
    예:
    [opc@exa_dbnodex ~]$ nslookup servername.database.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: servername.database.windows.net
    Address: IP_address_of_Azure_SQL_Server_private_endpoint
    [opc@exa_dbnodex ~]$
    예제의 변수는 다음 값을 가집니다.
    • servername은 1단계에서 가져온 Azure SQL Server의 정규화된 서버 이름의 이름입니다.
    • IP_address_of_Azure_SQL_Server_private_endpoint은 1단계의 Azure SQL Server 전용 끝점의 IP 주소입니다.
  6. Upload the Microsoft packages (Microsoft ODBC driver and SQL tools) downloaded earlier to the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes, install the packages and configure the MicrosoftS ODBC Driver for Microsoft SQL Server. 자세한 내용은 Microsoft SQL Server용 Microsoft ODBC 드라이버 구성 및 테스트를 참조하십시오.
  7. Oracle Heterogenous Services 구성 - MS ODBC 드라이버를 사용하여 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스를 Azure SQL Server에 연결합니다.
  8. Oracle Exadata Database Service on Dedicated Infrastructure 플러그인할 수 있는 데이터베이스(PDB)(CDB에는 없음)에서 Azure SQL Server 데이터베이스에 대한 데이터베이스 링크를 만듭니다. global_names 매개변수는 기본적으로 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에서 TRUE로 설정되므로 데이터베이스 링크를 생성하려면 전체 데이터베이스 이름을 사용해야 합니다. 데이터베이스 링크가 생성된 후 이 링크를 사용하여 Azure SQL Server 데이터베이스에서 Oracle Exadata Database Service on Dedicated Infrastructure 플러그인할 수 있는 데이터베이스(PDB)로 데이터를 질의하고 로드할 수 있습니다.
    [opc@exadbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@exadbnodex ~]$ . ./exadb_name.env
    [oracle@exadbnodex ~]$sqlplus / as sysdba
    SQL> show pdbs;
    CON_ID CON_NAME OPEN MODE RESTRICTED
    ---------- ------------------------------ ---------- ----------
     2 PDB$SEED READ ONLY NO
     3 PDBName READ WRITE NO
    SQL> alter session set container=PDBName;
    Session altered.
    SQL>create public database 
    link Fully_Qualified_Server_Name connect to 
    "Azure_SQL_Server_Username" identified by 
    "Azure_SQL_User_password" using 
    'Database_Name';
    Database link created.
    사용자 이름과 비밀번호는 큰 따옴표(" ")로 묶이고, Azure SQL Server 데이터베이스 이름은 작은 따옴표(' ')로 묶입니다.
    예제의 변수는 다음 값을 가집니다.
    • exadb_nameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.
    • PDBName은 플러그인할 수 있는 데이터베이스의 이름입니다.
    • Fully_Qualified_Server_Name은 1단계에서 Azure SQL Server 데이터베이스가 실행 중인 SQL 서버의 정규화된 호스트 이름입니다.
    • Azure_SQL_Server_Username은 1단계의 기존 Azure SQL Server 사용자 이름입니다.
    • Azure_SQL_User_Password은 1단계에서 데이터베이스에 연결할 Azure SQL Server 사용자의 비밀번호입니다.
    • Database_Name은 1단계의 Azure SQL Server 데이터베이스 이름입니다.
  9. 다음과 같이 query를 실행하여 새로 생성된 링크를 테스트합니다.
    SQL> select count(*) from 
    some_table@DatabaseLink_Name;
    예제의 변수는 다음 값을 가집니다.
    • some_table은 질의할 데이터베이스의 테이블 이름입니다.
    • DatabaseLink_Name은 8단계의 데이터베이스 링크 이름입니다.

Microsoft SQL Server용 Microsoft ODBC 드라이버 구성 및 테스트

These steps describe how to install and configure the Microsoft ODBC Driver for Microsoft SQL Server on the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes.

  1. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 다음 명령을 실행하여 Microsoft SQL Server용 Microsoft ODBC 드라이버 및 Microsoft SQL 툴을 설치합니다.
    [opc@exa-dbnodex ~]$ sudo su -
    [root@exa-dbnodex ~]# rpm -ivh msodbcsql18-18.1.2.1-1.x86_64.rpm
    [root@exa-dbnodex ~]# rpm -ivh mssql-tools18-18.1.1.1-1.x86_64.rpm
  2. Microsoft SQL Server용 Microsoft ODBC 드라이버가 Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터 노드에 설치된 후 Microsoft ODBC 드라이버가 Oracle Linux 운영체제에서 제대로 로드되고 구성되었는지 확인합니다.
    [oracle@exa-dbnodex ~]$ cat /etc/odbcinst.ini
    [PostgreSQL]
    Description=ODBC for PostgreSQL
    Driver=/usr/lib/psqlodbcw.so
    Setup=/usr/lib/libodbcpsqlS.so
    Driver64=/usr/lib64/psqlodbcw.so
    Setup64=/usr/lib64/libodbcpsqlS.so
    FileUsage=1
    [MySQL]
    Description=ODBC for MySQL
    Driver=/usr/lib/libmyodbc5.so
    Setup=/usr/lib/libodbcmyS.so
    Driver64=/usr/lib64/libmyodbc5.so
    Setup64=/usr/lib64/libodbcmyS.so
    FileUsage=1
    [ODBC Driver 18 for SQL Server]
    Description=Microsoft ODBC Driver 18 for SQL Server
    Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
    UsageCount=1
    [oracle@exa-dbnodex ~]$
  3. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 드라이버 설치 중 /usr/lib64에서 Microsoft ODBC Driver for Microsoft SQL로의 소프트 링크가 자동으로 생성되었는지 확인합니다. 링크가 생성되지 않은 경우 ln -s를 사용하여 만듭니다. 링크는 다음과 유사합니다.
    [oracle@exa-dbnodex ~]$ ls -ltr /usr/lib64/libms*.so
    lrwxrwxrwx 1 root root 57 Nov 30 15:44 /usr/lib64/libmsodbcsql-18.so -> 
    /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
    [oracle@exa-dbnodex ~]$
  4. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster create an ODBC configuration file in the oracle user home directory:
    [oracle@exa-dbnodex ~]$ cat /home/oracle/.odbc.ini
    [Database_Name_From_Step_1]
    # Reference driver from the "/etc/odbcinst.ini" file.
    # Driver = FreeTDS
    # Or use a direct driver reference, rather than reference
    # one in the "/etc/odbcinst.ini" file.
    Driver=/usr/lib64/libmsodbcsql-18.so
    Description = MSSQL Server
    Server = Fully_Qualified_Server_Name_From_Step_1
    Database = Database_Name_From_Step_1
    Port = 1433
    [oracle@exa-dbnodex ~]$
    
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Fully_Qualified_Server_Name_From_Step_11단계의 SQL Server에 대한 정규화된 호스트 이름입니다.
  5. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 Oracle Linux 유틸리티 isql를 사용하여 Azure SQL Server 데이터베이스에 대한 연결을 확인합니다.
    [oracle@exajc-gtdvz1 ~]$ isql -v 
    Database_Name_From_Step_1 Username 
    User_Password
    +---------------------------------------+
    | Connected! |
    | |
    | sql-statement |
    | help [tablename] |
    | quit |
    | |
    +---------------------------------------+
    SQL> select count(*) from some_table;
    이 명령은 선택한 테이블의 행 수를 표시해야 합니다.
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • 사용자 이름1단계Azure SQL Server 사용자 이름입니다.
    • User_Password1단계Azure SQL Server 사용자에 대한 암호입니다.
    • some_table은 데이터베이스의 테이블 이름입니다.
  6. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 Microsoft SQL Tools를 사용하여 Azure SQL Server 데이터베이스에 대한 연결을 확인합니다.
    [oracle@exajc-gtdvz1 ~]$ /opt/mssql-tools18/bin/sqlcmd -D -S 
    Database_Name_From_Step_1 -U Username
    Password: User_Password
    1> select count(*) from some_table
    2> go 
    이 명령은 선택한 테이블의 행 수를 표시해야 합니다.
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • 사용자 이름1단계Azure SQL Server 사용자 이름입니다.
    • User_Password1단계Azure SQL Server 사용자에 대한 암호입니다.
    • some_table은 데이터베이스의 테이블 이름입니다.
이제 Oracle Exadata Database Service on Dedicated InfrastructureAzure SQL Server 간 연결을 Azure와 OCI 간의 Oracle Exadata Database Service on Dedicated Infrastructure 노드에서 Microsoft ODBC Driver for Microsoft SQL Server를 사용하여 OracleDB for Azure에서 실행되는 Oracle Linux OS에서 설정할 수 있습니다.

Oracle 이기종 서비스 구성

Microsoft SQL Server용 Microsoft ODBC 드라이버를 사용하여 Oracle Exadata Database Service on Dedicated Infrastructure Oracle Linux 운영 체제에서 Azure SQL Server 데이터베이스로 연결한 후 다음 단계에 따라 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에 대해 Oracle Heterogenous Services를 구성합니다.
  1. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 사용자 oracle에 대해 다음 매개변수를 사용하여 Microsoft ODBC 드라이버에 대한 구성 파일을 만들어 Azure SQL Server에 연결합니다.
    [oracle@exa-dbnodex ~]$ cat odbcDatabase_Name_From_Step_1.ini
    [Database_Name_From_Step_1]
    # Reference driver from the "/etc/odbcinst.ini" file.
    # Driver = FreeTDS
    # Or use a direct driver reference, rather than reference
    # one in the "/etc/odbcinst.ini" file.
    Driver=/usr/lib64/libmsodbcsql-18.so
    Description = MSSQL Server
    Server = Fully_Qualified_Server_Name_From_Step_1.DATABASE.WINDOWS.NET
    Database = Database_Name_From_Step_1
    Port = 1433
    [oracle@exa-dbnodex ~]$
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Fully_Qualified_Server_Name_From_Step_1Azure SQL Server 데이터베이스가 실행 중인 SQL Server의 정규화된 호스트 이름입니다(1단계).
  2. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 모든 노드에서 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스 이기종 서비스에 대한 구성 파일을 만듭니다. 이 구성 파일은 다음 매개변수를 사용하여 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스에 대한 Oracle Database 홈에 생성되어야 합니다.
    [oracle@exa-dbnodex admin]$ pwd
    /u02/app/oracle/product/19.0.0.0/Database_Home/hs/admin
    [oracle@exajc-gtdvz1 admin]$ cat initDatabase_Name_From_Step_1.ora
    # This is a sample agent init file that contains the HS parameters that are
    # needed for the Database Gateway for ODBC
    #
    # ODBC specific environment variables
    #
    set ODBCINI=/home/oracle/odbcDatabase_Name_From_Step_1.ini
    #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO=Database_Name_From_Step_1
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
    HS_NLS_NCHAR=UCS2
    HS_LANGUAGE=ENGLISH_AMERICA.we8mswin1252
    HS_DB_NAME=Server_Name (only the hostname)
    HS_DB_DOMAIN=DATABASE.WINDOWS.NET
    이 매개변수 목록에서 다음 사항에 유의하십시오.
    • /usr/lib64/libodbc.osOracle Exadata Database Service on Dedicated Infrastructure에서 Oracle Linux에 포함된 ODBC 드라이버입니다. 이 드라이버에는 Microsoft SQL Server용 ODBC 드라이버에서 호출하는 SQLColAttribute와 같은 기본 함수가 포함되어 있습니다.
    • Oracle 이기종 서비스는 이전 단계에서 생성된 ODBC 구성 파일을 가리키는 ODBCINI 매개변수에 따라 Microsoft ODBC 드라이버를 호출합니다.
    • 매개변수 HS_DB_NAME에 제공된 Server_Name은 대문자여야 합니다.
    • 여기에 입력한 HS_NLS_NCHARHS_LANGUAGE 매개변수 값은 Azure SQL ServerOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스를 생성하는 데 사용되는 문자 집합에 따라 달라집니다.
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Database_Home은 데이터베이스 홈 이름입니다.
    • Server_Name1단계의 정규화된 서버 이름에 대한 호스트 이름입니다.
  3. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, add the following lines to the tnsnames.ora file, for the database to be able to resolve to the Oracle Heterogenous Services.
    [oracle@exa-dbnodex ~]$ cd $ORACLE_HOME/network/admin/exa_dbname
    [oracle@exa-dbnodex exa_dbname]$ tail -6 tnsnames.ora
    Database_Name_From_Step_1 =
     (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
     (CONNECT_DATA=(SID=Database_Name_From_Step_1))
     (HS=OK)
     )
    예제의 변수는 다음 값을 가집니다.
    • exa_dbnameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
  4. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 두 노드에서 Oracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 데이터베이스 홈에 listener.ora 파일을 만들어 Oracle Heterogenous Services의 포트 1522에 로컬 리스너를 만듭니다.
    [oracle@exa-dbnodex exa_dbname]$ pwd
    /u02/app/oracle/product/19.0.0.0/Database_Home/network/admin/exa_db
    name
    [oracle@exa-dbnodex]$ cat listener.ora
    # This is a sample listener.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    LISTENER_Database_Name_From_Step_1 =
    (DESCRIPTION_LIST=
     (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex)(PORT=1522))
     )
    )
    SID_LIST_LISTENER_Database_Name_From_Step_1=
     (SID_LIST=
     (SID_DESC=
     (SID_NAME=Database_Name_From_Step_1)
     (ORACLE_HOME=/u02/app/oracle/product/19.0.0.0/Database_Home)
     (PROGRAM=dg4odbc)
     )
     )
    예제의 변수는 다음 값을 가집니다.
    • exa_dbnameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Database_Home은 데이터베이스 홈 이름입니다.
  5. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 한 노드에서 root 사용자로 Oracle Cluster Ready Services(CRS)에 새 로컬 리스너를 추가합니다.
    예:
    [root@exa-dbnodex bin]# ./srvctl add listener -l 
    LISTENER_Database_Name_From_Step_1 -oraclehome 
    /u02/app/oracle/product/19.0.0.0/Database_Home -user oracle
    [root@exa-dbnodex bin]# ./srvctl setenv listener -l 
    LISTENER_Database_Name_From_Step_1 -T 
    "TNS_ADMIN=/u02/app/oracle/product/19.0.0.0/Database_Home/network/a
    dmin/>exa_dbname "
    [root@exajc-gtdvz1 bin]# ./srvctl status listener -l 
    LISTENER_Database_Name_From_Step_1
    Listener LISTENER_Database_Name_From_Step_1 is enabled
    Listener LISTENER_Database_Name_From_Step_1 is not running
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Database_Home은 데이터베이스 홈 이름입니다.
    • exa_dbnameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.
  6. On one node of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, start the listener as grid user.
    [grid@exa-dbnodex bin]$ srvctl start listener -l 
    LISTENER_Database_Name_From_Step_1
    [grid@exa-dbnodex bin]$ srvctl status listener -l 
    LISTENER_Database_Name_From_Step_1
    Listener LISTENER_Database_Name_From_Step_1 is enabled
    Listener LISTENER_Database_Name_From_Step_1 is running on node(s): exa-dbnode2,exa-dbnode1
    [grid@exa-dbnodex bin]$
    예제에서 Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
  7. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터의 한 노드에서 사용자 oracle로 로컬 리스너가 실제로 Oracle Heterogenous 서비스를 수신하고 있는지 확인합니다.
    [opc@exa-dbnodex ~]$ sudo su - oracle
    Last login: Fri Dec 2 17:38:17 UTC 2022
    [oracle@exa-dbnodex ~]$ . ./exa_dbname.env
    [oracle@exa-dbnodex ~]$ lsnrctl status LISTENER_Database_Name_From_Step_1
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-DEC-2022 17:38:46
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex)(PORT=1522)))
    STATUS of the LISTENER
    ------------------------
    Alias LISTENER_Database_Name_From_Step_1
    Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date 02-DEC-2022 17:38:07
    Uptime 0 days 0 hr. 0 min. 38 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter 
    File /u02/app/oracle/product/19.0.0.0/<Database_Home>/network/admin/exa_dbname/listener.ora
    Listener Log File /u02/app/oracle/diag/tnslsnr/exa-dbnodex/listener_Database_Name_From_Step_1/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex.customersubnet1.cvcn.oraclevcn.com)(PORT=1522)))
    Services Summary...
    Service "Database_Name_From_Step_1" has 1 instance(s).
     Instance "Database_Name_From_Step_1", status UNKNOWN, has 1 handler(s) 
    for this service...
    The command completed successfully
    [oracle@exa-dbnodex ~]$
    예제의 변수는 다음 값을 가집니다.
    • exa_dbnameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
  8. Oracle Exadata Database Service on Dedicated Infrastructure VM 클러스터 노드 중 하나에서 tnsping를 사용하여 Oracle 이기종 서비스에 대한 연결을 테스트합니다.
    예:
    [oracle@exa-dbnodex ~]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 02-DEC-2022 19:25:15
    Used parameter files:
    /u02/app/oracle/product/19.0.0.0/Database_Home/network/admin/exa_db
    name/sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= 
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522)) 
    (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@exajc-gtdvz1 ~]$
    예제의 변수는 다음 값을 가집니다.
    • Database_Name_From_Step_11단계Azure SQL Server 데이터베이스 이름입니다.
    • Database_Home은 데이터베이스 홈 이름입니다.
    • exa_dbnameOracle Exadata Database Service on Dedicated Infrastructure 데이터베이스의 이름입니다.