Load Data Using Oracle Heterogenous Services

OracleDB for Azure enables Azure applications to load and query data from OCI databases. This architecture describes how an Oracle Exadata Database Service on Dedicated Infrastructure can leverage the infrastructure provided by OracleDB for Azure to load data from an Azure SQL Server using a database link via Oracle Heterogenous services provided by Oracle Exadata Database Service on Dedicated Infrastructure.

Architecture

This architecture uses Oracle Exadata Database Service on Dedicated Infrastructure to load and query data from an Azure SQL Server with a database link using Oracle Heterogenous Services running on Oracle Exadata Database Service on Dedicated Infrastructure.

The following diagram illustrates this architecture.



exadata-db-azure-odsa-heterogenous.zip

Before You Begin

Before you begin, check the versions of major software components used in this setup, download the required software package, and review the product documentation for later reference.

Review Software Requirements

These instructions are tested on the following software and hardware versions.

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

Download the following software packages:

About Required Services and Roles

This solution requires the following services:

  • Oracle Exadata Database Service on Dedicated Infrastructure
  • Oracle Exadata Database Service on Dedicated Infrastructure Virtual Machines

These are the roles needed for each service.

Service Name: Role Required to...
Oracle Exadata Database Service on Dedicated Infrastructure: sys con Configure the database link.
Oracle Exadata Database Service on Dedicated Infrastructure Virtual Machines: opc/root, oracle, grid Install Microsoft ODBC drivers, install ODBC tools, configure listener, and configure Heterogenous services.

See Learn how to get Oracle Cloud services for Oracle Solutions to get the cloud services you need.

Considerations for Oracle Heterogenous Services

When loading data using Oracle Heterogenous services, review these considerations.

  • Hostname to IP address resolution for the Azure SQL Server Endpoint is required by the Oracle Exadata Database Service on Dedicated Infrastructure database. You can edit the /etc/hosts file on the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster Nodes, or configure a Private DNS Zone on the OCI Virtual Cloud Network (VCN) where the Oracle Exadata Database Service on Dedicated Infrastructure database is configured.
  • In Oracle Exadata Database Service on Dedicated Infrastructure databases the parameter global_names is set to TRUE by default. Therefore, the fully qualified database name must be used when creating the database link to Azure SQL Server.
  • Oracle Heterogenous Services is included by default with Oracle Exadata Database Service on Dedicated Infrastructure databases. However, an additional Microsoft ODBC Driver is required to connect to a third-party database. For Azure SQL Server database, the Microsoft ODBC Driver for Microsoft SQL Server is recommended.

Advantages of Oracle Heterogenous Services

  • Oracle Heterogenous Services is developed and supported by Oracle and is included with Oracle Exadata Database Service on Dedicated Infrastructure database software images. No additional Oracle licensing is required.
  • Communication between Oracle Exadata Database Service on Dedicated Infrastructure and Azure SQL Server is fully encrypted end-to-end, no additional configuration is required (network encryption enforced by Azure SQL Server and Oracle Exadata Database Service on Dedicated Infrastructure default configurations).

Disadvantages of Oracle Heterogenous Services

  • Additional third-party software is required to be installed on Oracle Exadata Database Service on Dedicated Infrastructure (Microsoft ODBC Driver for Microsoft SQL Server). Additional steps may be required when updating and maintaining the Oracle Exadata Database Service on Dedicated Infrastructure environment.
  • Oracle Heterogenous Services runs on the Oracle Exadata Database Service on Dedicated Infrastructure platform, which can make the solution a little more expensive, as the solution will use the more specialized, higher priced Oracle Exadata Database Service on Dedicated Infrastructure OCPUs to load and query data from Azure SQL Server.
  • The Solution uses Microsoft ODBC Driver for Microsoft SQL Server which requires manual configuration for data type conversion and mapping.

Configure Oracle Database Gateway Using Oracle Heterogenous Services

  1. Log in to the Azure console to obtain the information for the Azure SQL Server database from which the Oracle Exadata Database Service on Dedicated Infrastructure database will load and query data. This information is required to tell the Microsoft ODBC Driver how to connect to Azure SQL Server database:
    Obtain the following details:
    • Database Name: Name of the Azure SQL Server database.
    • Fully Qualified Server Name: Fully Qualified Hostname for SQL Server where the Azure SQL Server database is running, usually in the form servername.database.windows.net.
    • Azure SQL Server Private Endpoint: The name and IP address of the Azure SQL Server private endpoint in the Azure vnet that connects to Azure SQL Server. If no private endpoint exists yet, create one for the Azure SQL Server, and note the name and IP address.
    • Azure SQL Server Username: Name of an existing Azure SQL Server user allowed to connect to the Azure SQL Server database and schema, usually sqladmin.
    • Azure SQL Server User Password: Password for the Azure SQL Server user to connect to the Azure SQL Server database and schema.
  2. From the OCI main menu select Networking/DNS Management to create a Private DNS Zone. In the new Private DNS Zone, add a record for the Fully Qualified Server Name from step 1 to resolve to the Azure SQL Server private endpoint IP address (from step 1).
  3. From the OCI main menu select Networking/DNS Management to create a DNS Private View. Add the Private DNS Zone created in the previous step to this newly created DNS Private View and activate the changes.
  4. From the OCI main menu select Networking/Virtual Client Network (VCN). Select the VCN created when the Oracle Database Gateway Oracle Exadata Database Service on Dedicated Infrastructure service was provisioned (change compartment if required). Click the DNS resolver link, then add the DNS Private View created from previous step to the DNS resolver. This will allow name and IP address resolution from Oracle Exadata Database Service on Dedicated Infrastructure to the Azure VM running the Oracle Database Gateway.
  5. Login to one of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes to use nslookup to verify the hostname to IP address resolution is working for the Azure virtual machine that will run Oracle Database Gateway.
    For example:
    [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 ~]$
    The variables in the example have the following values:
    • servername is the name of the fully qualified server name of the Azure SQL Server from step 1.
    • IP_address_of_Azure_SQL_Server_private_endpoint is the IP address of the Azure SQL Server private endpoint from step 1.
  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. See Configure and Test Microsoft ODBC Driver for Microsoft SQL Server for instructions.
  7. Configure Oracle Heterogenous Services to connect the Oracle Exadata Database Service on Dedicated Infrastructure database to the Azure SQL Server using the MS ODBC Driver.
  8. In the Oracle Exadata Database Service on Dedicated Infrastructure pluggable database (PDB) (not in the CDB) create a database link to the Azure SQL Server database. Parameter global_names is set to TRUE in Oracle Exadata Database Service on Dedicated Infrastructure databases by default, therefore the fully qualified database name must be used to create the database link. After the database link is created, you can query and load data from the Azure SQL Server database to the Oracle Exadata Database Service on Dedicated Infrastructure pluggable database (PDB) using this link.
    [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.
    Note the username and password are enclosed in double quotes (“ ”), while the Azure SQL Server database name is enclosed in single quotes (‘ ‘).
    The variables in the example have the following values:
    • exadb_name is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.
    • PDBName is the name of the pluggable database.
    • Fully_Qualified_Server_Name is the fully qualified hostname for SQL server where the Azure SQL Server database is running, from step 1.
    • Azure_SQL_Server_Username is the name of the existing Azure SQL Server username, from step 1.
    • Azure_SQL_User_Password is the password for the Azure SQL Server user to connect to the database, from step 1.
    • Database_Name is the name of the Azure SQL Server database, from step 1.
  9. Test the newly created link by running a query, for example:
    SQL> select count(*) from 
    some_table@DatabaseLink_Name;
    The variables in the example have the following values:
    • some_table is the name of a table in your database to query.
    • DatabaseLink_Name is the database link name from step 8.

Configure and Test Microsoft ODBC Driver for Microsoft SQL Server

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. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, install the Microsoft ODBC Driver for Microsoft SQL Server and the Microsoft SQL Tools by running the following commands.
    [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. After the Microsoft ODBC Driver for Microsoft SQL Server are installed on the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes, verify the Microsoft ODBC Driver is properly loaded and configured in the Oracle Linux Operating System.
    [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. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, verify that a soft link from /usr/lib64 to the Microsoft ODBC Driver for Microsoft SQL was automatically created during driver installation. If the link was not created, create it by using ln -s. The link resembles the following:
    [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 ~]$
    
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Fully_Qualified_Server_Name_From_Step_1 is the fully qualified hostname for SQL Server, from step 1.
  5. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, verify connectivity to the Azure SQL Server database by using the Oracle Linux utility isql.
    [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;
    This command should display the number of rows on the selected table.
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Username is the username for the Azure SQL Server, from step 1.
    • User_Password is the password for the Azure SQL Server user, from step 1.
    • some_table is a table name in your database.
  6. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, verify connectivity to the Azure SQL Server database by using the Microsoft SQL Tools.
    [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 
    This command should display the number of rows on the selected table.
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Username is the username for the Azure SQL Server, from step 1.
    • User_Password is the password for the Azure SQL Server user, from step 1.
    • some_table is a table name in your database.
Connectivity between Oracle Exadata Database Service on Dedicated Infrastructure and Azure SQL Server can now be established from the Oracle Linux OS running on the Oracle Exadata Database Service on Dedicated Infrastructure nodes using the Microsoft ODBC Driver for Microsoft SQL Server using the OracleDB for Azure fast-low latency interconnect between Azure and OCI.

Configure Oracle Heterogenous Services

After connectivity from the Oracle Exadata Database Service on Dedicated Infrastructure Oracle Linux operating system to the Azure SQL Server database can be established using the Microsoft ODBC Driver for Microsoft SQL Server, configure the Oracle Heterogenous Services for the Oracle Exadata Database Service on Dedicated Infrastructure database, by following these steps.
  1. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, for user oracle, create a configuration file for the Microsoft ODBC Driver to connect to the Azure SQL Server, with the following parameters:
    [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 ~]$
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Fully_Qualified_Server_Name_From_Step_1 is the fully qualified hostname for SQL Server where the Azure SQL Server database is running, from step 1.
  2. On all nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, create a configuration file for the Oracle Exadata Database Service on Dedicated Infrastructure database heterogenous services. This configuration file must be created in the Oracle Database Home for the Oracle Exadata Database Service on Dedicated Infrastructure database with the following parameters.
    [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
    In this list of parameters note the following:
    • /usr/lib64/libodbc.os is the ODBC driver included with Oracle Linux in Oracle Exadata Database Service on Dedicated Infrastructure. This driver includes basic functions such as SQLColAttribute that are called by the ODBC Driver for Microsoft SQL Server.
    • Oracle Heterogeneous Services calls the Microsoft ODBC Driver according to the ODBCINI parameter, which points to the ODBC configuration file created in the previous step.
    • The Server_Name provided in parameter HS_DB_NAME must be in uppercase letters.
    • HS_NLS_NCHAR and HS_LANGUAGE parameter values entered here depend on the character sets used to create the Azure SQL Server and the Oracle Exadata Database Service on Dedicated Infrastructure databases.
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Database_Home is Database Home name.
    • Server_Name is the hostname of the fully qualified server name, from step 1.
  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)
     )
    The variables in the example have the following values:
    • exa_dbname is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
  4. On both nodes of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster create a local listener on port 1522 for the Oracle Heterogenous Services by creating a listener.ora file on the Oracle Exadata Database Service on Dedicated Infrastructure database’s Database Home.
    [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)
     )
     )
    The variables in the example have the following values:
    • exa_dbname is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Database_Home is database home name.
  5. On one node of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, add the new local listener to Oracle Cluster Ready Services (CRS) as root user.
    For example:
    [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
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Database_Home is database home name.
    • exa_dbname is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.
  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]$
    In the example, Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
  7. On one node of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster, verify as user oracle that the local listener is indeed listening for Oracle Heterogenous Services.
    [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 ~]$
    The variables in the example have the following values:
    • exa_dbname is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
  8. From one of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes, test connectivity to Oracle Heterogeneous Services using tnsping.
    For example:
    [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 ~]$
    The variables in the example have the following values:
    • Database_Name_From_Step_1 is the name of the Azure SQL Server database, from step 1.
    • Database_Home is database home name.
    • exa_dbname is the name of the Oracle Exadata Database Service on Dedicated Infrastructure database.