Daten mit heterogenen Oracle-Services laden

Mit OracleDB für Azure können Azure-Anwendungen Daten aus OCI-Datenbanken laden und abfragen. Diese Architektur beschreibt, wie ein Oracle Exadata Database Service on Dedicated Infrastructure die von OracleDB for Azure bereitgestellte Infrastruktur nutzen kann, um Daten von einem Azure-SQL-Server mit einem Datenbanklink über Oracle Heterogenous Services zu laden, die von Oracle Exadata Database Service auf Dedicated Infrastructure bereitgestellt werden.

Architektur

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.

Das folgende Diagramm veranschaulicht diese Architektur.



exadata-db-azure-odsa-heterogenous.zip

Bevor Sie beginnen

Bevor Sie beginnen, prüfen Sie die Versionen der wichtigsten Softwarekomponenten, die in diesem Setup verwendet werden, laden Sie das erforderliche Softwarepaket herunter, und lesen Sie die Produktdokumentation später.

Softwareanforderungen prüfen

Diese Anweisungen werden auf den folgenden Software- und Hardwareversionen getestet.

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

Laden Sie die folgenden Softwarepackages herunter:

Erforderliche Services und Rollen

Diese Lösung erfordert die folgenden Services:

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

Für jeden Service sind diese Rollen erforderlich.

Servicename: Rolle Erforderlich für...
Oracle Exadata Database Service on Dedicated Infrastructure: sys con Konfigurieren Sie den Datenbanklink.
Oracle Exadata Database Service on Dedicated Infrastructure Virtual Machines: opc/root, oracle, grid Installieren Sie Microsoft ODBC-Treiber, installieren Sie ODBC-Tools, konfigurieren Sie den Listener, und konfigurieren Sie Heterogenous Services.

Informationen zu den benötigten Cloud-Services finden Sie unter Erfahren Sie, wie Sie Oracle Cloud-Services für Oracle-Lösungen erhalten.

Überlegungen zu Oracle Heterogenous Services

Wenn Sie Daten mit Oracle Heterogenous-Services laden, beachten Sie diese Überlegungen.

  • Die Auflösung von Hostname zu IP-Adresse für den Azure SQL Server-Endpunkt ist für die Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank erforderlich. Sie können die Datei /etc/hosts im Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusterknoten bearbeiten oder eine private DNS-Zone im OCI Virtual Cloud Network (VCN) konfigurieren, in dem die Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank konfiguriert ist.
  • In Oracle Exadata Database Service on Dedicated Infrastructure-Datenbanken ist der Parameter global_names standardmäßig auf TRUE gesetzt. Daher muss der vollqualifizierte Datenbankname beim Erstellen des Datenbanklinks zu Azure SQL Server verwendet werden.
  • Oracle Heterogenous Services is included by default with Oracle Exadata Database Service on Dedicated Infrastructure databases. Für die Verbindung mit einer Drittanbieterdatenbank ist jedoch ein zusätzlicher Microsoft ODBC-Treiber erforderlich. Für die Azure SQL Server-Datenbank wird der Microsoft ODBC-Treiber für Microsoft SQL Server empfohlen.

Vorteile von 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. Es ist keine zusätzliche Oracle-Lizenzierung erforderlich.
  • Die Kommunikation zwischen Oracle Exadata Database Service on Dedicated Infrastructure und Azure SQL Server ist vollständig verschlüsselt. Es ist keine zusätzliche Konfiguration erforderlich (Netzwerkverschlüsselung wird von Azure SQL Server und Oracle Exadata Database Service auf Dedicated Infrastructure-Standardkonfigurationen erzwungen).

Nachteile von 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 wird auf der Oracle Exadata Database Service on Dedicated Infrastructure-Plattform ausgeführt. Dadurch kann die Lösung etwas teurer werden, da die Lösung die spezialisierten, kostengünstigeren Oracle Exadata Database Service on Dedicated Infrastructure-OCPUs verwendet, um Daten von Azure SQL Server zu laden und abzufragen.
  • Die Lösung verwendet den Microsoft ODBC-Treiber für Microsoft SQL Server, der für die Konvertierung und Zuordnung von Datentypen manuell konfiguriert werden muss.

Oracle Database Gateway mit Heterogenous Services von Oracle konfigurieren

  1. Melden Sie sich bei der Azure-Konsole an, um die Informationen für die Azure SQL Server-Datenbank abzurufen, aus der die Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank Daten lädt und abfragt. Diese Informationen sind erforderlich, um dem Microsoft ODBC-Treiber mitzuteilen, wie die Verbindung zur Azure SQL Server-Datenbank hergestellt wird:
    Rufen Sie die folgenden Details ab:
    • Datenbankname: Name der Azure SQL Server-Datenbank.
    • Vollqualifizierter Servername: Vollqualifizierter Hostname für SQL Server, auf dem die Azure SQL Server-Datenbank ausgeführt wird, in der Regel im Format servername.database.windows.net.
    • Privater Azure SQL Server-Endpunkt: Name und IP-Adresse des privaten Azure SQL Server-Endpunkts im Azure-Vnet, das eine Verbindung zu Azure SQL Server herstellt. Wenn noch kein privater Endpunkt vorhanden ist, erstellen Sie einen für den Azure SQL Server, und notieren Sie den Namen und die IP-Adresse.
    • Azure SQL Server-Benutzername: Name eines vorhandenen Azure SQL Server-Benutzers, der eine Verbindung zur Azure SQL Server-Datenbank und zum -Schema herstellen darf, in der Regel sqladmin.
    • Azure SQL Server-Benutzerkennwort: Kennwort, mit dem sich der Azure SQL Server-Benutzer bei der Azure SQL Server-Datenbank und dem -Schema anmelden kann.
  2. Wählen Sie im OCI-Hauptmenü Networking/DNS-Management aus, um eine private DNS-Zone zu erstellen. Fügen Sie in der neuen privaten DNS-Zone einen Datensatz für den vollqualifizierten Servernamen aus Schritt 1 hinzu, um ihn in die IP-Adresse des privaten Azure SQL Server-Endpunkts aufzulösen (aus Schritt 1).
  3. Wählen Sie im OCI-Hauptmenü Networking/DNS-Management aus, um eine private DNS-Ansicht zu erstellen. Fügen Sie die im vorherigen Schritt erstellte private DNS-Zone zu dieser neu erstellten privaten DNS-Ansicht hinzu, und aktivieren Sie die Änderungen.
  4. Wählen Sie im OCI-Hauptmenü Networking/Virtuelles Clientnetzwerk (VCN) aus. Wählen Sie das VCN aus, das beim Provisioning des Oracle Database Gateway-Oracle Exadata Database Service on Dedicated Infrastructure-Service erstellt wurde (ändern Sie gegebenenfalls das Compartment). Klicken Sie auf den Link "DNS-Resolver", und fügen Sie die aus dem vorherigen Schritt erstellte private DNS-Ansicht zum DNS-Resolver hinzu. 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.
    Beispiel:
    [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 ~]$
    Die Variablen im Beispiel haben die folgenden Werte:
    • Servername ist der Name des vollqualifizierten Servernamens des Azure SQL Server aus Schritt 1.
    • IP_address_of_Azure_SQL_Server_private_endpoint ist die IP-Adresse des privaten Endpunkts von Azure SQL Server aus Schritt 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. Weitere Anweisungen finden Sie unter Microsoft ODBC-Treiber für Microsoft SQL Server konfigurieren und testen.
  7. Konfigurieren Sie Oracle Heterogenous Services, um die Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank mit dem MS ODBC-Treiber mit dem Azure SQL Server zu verbinden.
  8. Erstellen Sie im Oracle Exadata Database Service on Dedicated Infrastructure plugfähige Datenbank (PDB) (nicht in der CDB) einen Datenbanklink zur Azure SQL Server-Datenbank. Parameter global_names ist in Oracle Exadata Database Service on Dedicated Infrastructure-Datenbanken standardmäßig auf TRUE gesetzt. Daher muss der vollqualifizierte Datenbankname zum Erstellen des Datenbanklinks verwendet werden. Nachdem der Datenbanklink erstellt wurde, können Sie mit diesem Link Daten aus der Azure SQL Server-Datenbank in Oracle Exadata Database Service on Dedicated Infrastructure pluggable database (PDB) abfragen und laden.
    [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.
    Beachten Sie, dass Benutzername und Kennwort in doppelte Anführungszeichen (" ") eingeschlossen sind, während der Azure SQL Server-Datenbankname in einfache Anführungszeichen (' ') gesetzt ist.
    Die Variablen im Beispiel haben die folgenden Werte:
    • exadb_name ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.
    • PDBName ist der Name der integrierbaren Datenbank.
    • Fully_Qualified_Server_Name ist der vollqualifizierte Hostname für den SQL-Server, auf dem die Azure SQL Server-Datenbank aus Schritt 1 ausgeführt wird.
    • Azure_SQL_Server_Username ist der Name des vorhandenen Azure SQL Server-Benutzernamens aus Schritt 1.
    • Azure_SQL_User_Password ist das Kennwort, mit dem sich der Azure SQL Server-Benutzer von Schritt 1 bei der Datenbank anmelden kann.
    • Database_Name ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
  9. Testen Sie den neu erstellten Link, indem Sie eine Abfrage ausführen. Beispiel:
    SQL> select count(*) from 
    some_table@DatabaseLink_Name;
    Die Variablen im Beispiel haben die folgenden Werte:
    • some_table ist der Name einer Tabelle in der abzufragenden Datenbank.
    • DatabaseLink_Name ist der Name des Datenbanklinks aus Schritt 8.

Microsoft ODBC-Treiber für Microsoft SQL Server konfigurieren und testen

In diesen Schritten wird beschrieben, wie Sie den Microsoft ODBC-Treiber für Microsoft SQL Server auf den VM-Clusterknoten von Oracle Exadata Database Service on Dedicated Infrastructure installieren und konfigurieren.

  1. Installieren Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters den Microsoft ODBC-Treiber für Microsoft SQL Server und die Microsoft SQL Tools, indem Sie die folgenden Befehle ausführen.
    [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. Nachdem der Microsoft ODBC-Treiber für Microsoft SQL Server auf den VM-Clusterknoten von Oracle Exadata Database Service on Dedicated Infrastructure installiert wurde, prüfen Sie, ob der Microsoft ODBC-Treiber ordnungsgemäß geladen und im Oracle Linux-Betriebssystem konfiguriert wurde.
    [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. Prüfen Sie auf allen Knoten des VM-Clusters Oracle Exadata Database Service on Dedicated Infrastructure, ob während der Treiberinstallation automatisch ein Softlink von /usr/lib64 zum Microsoft ODBC-Treiber für Microsoft SQL erstellt wurde. Wenn der Link nicht erstellt wurde, erstellen Sie ihn mit ln -s. Der Link sieht etwa wie folgt aus:
    [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. Erstellen Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters eine ODBC-Konfigurationsdatei im Home-Verzeichnis des Benutzers oracle:
    [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 ~]$
    
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Fully_Qualified_Server_Name_From_Step_1 ist der vollqualifizierte Hostname für SQL Server aus Schritt 1.
  5. Prüfen Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters die Konnektivität zur Azure SQL Server-Datenbank mit dem 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;
    Dieser Befehl sollte die Anzahl der Zeilen in der ausgewählten Tabelle anzeigen.
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Benutzername ist der Benutzername für den Azure SQL Server aus Schritt 1.
    • User_Password ist das Kennwort für den Azure SQL Server-Benutzer aus Schritt 1.
    • some_table ist ein Tabellenname in der Datenbank.
  6. Prüfen Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters die Konnektivität zur Azure SQL Server-Datenbank mit den 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 
    Dieser Befehl sollte die Anzahl der Zeilen in der ausgewählten Tabelle anzeigen.
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Benutzername ist der Benutzername für den Azure SQL Server aus Schritt 1.
    • User_Password ist das Kennwort für den Azure SQL Server-Benutzer aus Schritt 1.
    • some_table ist ein Tabellenname in der Datenbank.
Die Konnektivität zwischen Oracle Exadata Database Service on Dedicated Infrastructure und Azure SQL Server kann jetzt über das Oracle Linux-BS hergestellt werden, das auf den Oracle Exadata Database Service auf Dedicated Infrastructure-Knoten ausgeführt wird. Dabei wird der Microsoft ODBC-Treiber für Microsoft SQL Server mit dem OracleDB for Azure-Interconnect mit schneller Latenz zwischen Azure und OCI verwendet.

Heterogene Oracle-Services konfigurieren

Nachdem die Verbindung vom Oracle Linux-Betriebssystem Oracle Exadata Database Service auf Dedicated Infrastructure zur Azure SQL Server-Datenbank mit dem Microsoft ODBC-Treiber für Microsoft SQL Server hergestellt werden kann, konfigurieren Sie die Oracle Heterogenous Services für die Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank wie folgt.
  1. Erstellen Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters für Benutzer oracle eine Konfigurationsdatei für den Microsoft ODBC-Treiber, um eine Verbindung zum Azure SQL Server herzustellen. Verwenden Sie dazu die folgenden Parameter:
    [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 ~]$
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Fully_Qualified_Server_Name_From_Step_1 ist der vollqualifizierte Hostname für SQL Server, auf dem die Azure SQL Server-Datenbank ausgeführt wird, aus Schritt 1.
  2. Erstellen Sie auf allen Knoten des VM-Clusters Oracle Exadata Database Service on Dedicated Infrastructure eine Konfigurationsdatei für die heterogenen Services der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank. 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
    Beachten Sie in dieser Parameterliste Folgendes:
    • /usr/lib64/libodbc.os ist der ODBC-Treiber in Oracle Linux in Oracle Exadata Database Service on Dedicated Infrastructure. Dieser Treiber enthält grundlegende Funktionen wie SQLColAttribute, die vom ODBC-Treiber für Microsoft SQL Server aufgerufen werden.
    • Oracle Heterogeneous Services ruft den Microsoft ODBC-Treiber gemäß dem Parameter ODBCINI auf, der auf die im vorherigen Schritt erstellte ODBC-Konfigurationsdatei verweist.
    • Der in Parameter HS_DB_NAME angegebene Server_Name muss in Großbuchstaben angegeben werden.
    • 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.
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Database_Home ist der Name des Datenbank-Homes.
    • Server_Name ist der Hostname des vollqualifizierten Servernamens aus Schritt 1.
  3. Fügen Sie auf allen Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters die folgenden Zeilen zur Datei tnsnames.ora hinzu, damit die Datenbank in die Heterogenous Services von Oracle aufgelöst werden kann.
    [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)
     )
    Die Variablen im Beispiel haben die folgenden Werte:
    • exa_dbname ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
  4. Erstellen Sie auf beiden Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters einen lokalen Listener auf Port 1522 für die Oracle Heterogenous Services, indem Sie eine listener.ora-Datei im Datenbank-Home von Oracle Exadata Database Service on Dedicated Infrastructure erstellen.
    [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)
     )
     )
    Die Variablen im Beispiel haben die folgenden Werte:
    • exa_dbname ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Database_Home ist der Name des Datenbank-Homes.
  5. Fügen Sie auf einem Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters den neuen lokalen Listener als root-Benutzer zu Oracle Cluster Ready Services (CRS) hinzu.
    Beispiel:
    [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
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Database_Home ist der Name des Datenbank-Homes.
    • exa_dbname ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.
  6. Starten Sie den Listener auf einem Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters als 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 dem Beispiel ist Database_Name_From_Step_1 der Name der Azure SQL Server-Datenbank aus Schritt 1.
  7. Prüfen Sie auf einem Knoten des Oracle Exadata Database Service on Dedicated Infrastructure-VM-Clusters als Benutzer oracle, dass der lokale Listener tatsächlich auf Oracle Heterogenous Services horcht.
    [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 ~]$
    Die Variablen im Beispiel haben die folgenden Werte:
    • exa_dbname ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
  8. From one of the Oracle Exadata Database Service on Dedicated Infrastructure VM Cluster nodes, test connectivity to Oracle Heterogeneous Services using tnsping.
    Beispiel:
    [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 ~]$
    Die Variablen im Beispiel haben die folgenden Werte:
    • Database_Name_From_Step_1 ist der Name der Azure SQL Server-Datenbank aus Schritt 1.
    • Database_Home ist der Name des Datenbank-Homes.
    • exa_dbname ist der Name der Oracle Exadata Database Service on Dedicated Infrastructure-Datenbank.