Caricare i dati mediante Oracle Database Gateway in esecuzione in OCI Compute

OracleDB per Azure consente alle applicazioni Azure di caricare ed eseguire query sui dati dai database OCI. Questa architettura descrive in che modo un Oracle Exadata Database Service on Dedicated Infrastructure può utilizzare l'infrastruttura fornita da OracleDB for Azure per caricare ed eseguire query sui dati da Azure SQL Server utilizzando un database link tramite il software Oracle Database Gateway for SQL Server in esecuzione in un'istanza di computazione OCI.

Architettura

Questa architettura utilizza Oracle Database Gateway for SQL Server in esecuzione in un'istanza di computazione OCI per caricare i dati da Azure SQL Server a Oracle Exadata Database Service on Dedicated Infrastructure. Oracle Database Gateway for SQL Server si connette a Azure SQL Server utilizzando il collegamento di rete a latenza inferiore mediante un endpoint privato Azure.

Il diagramma riportato di seguito illustra questa architettura.



exadata-db-azure-odsa-gateway.zip

Si noti quanto riportato di seguito.

  • È necessario creare una nuova regola di sicurezza all'interno della subnet client Oracle Exadata Database Service on Dedicated Infrastructure per consentire il traffico verso la porta 1521.
  • Il software Oracle Database Gateway può essere eseguito su una virtual machine o Bare Metal OCI della computazione. Il numero di OCPU, memoria e dimensione del disco deve essere assegnato all'istanza di computazione OCI in base ai requisiti del server Oracle Database Gateway for SQL Server e alle linee guida per il dimensionamento. Per i dettagli, vedere di seguito i requisiti di sistema per Oracle Database Gateway for SQL Server.
  • Il nome host per la risoluzione degli indirizzi IP per l'endpoint Azure SQL Server è obbligatorio in OCI. Modificare il file /etc/hosts sul server Oracle Database Gateway o configurare una zona DNS privata nella rete cloud virtuale (VCN) OCI in cui è configurato Oracle Exadata Database Service on Dedicated Infrastructure.
  • Nei database Oracle Exadata Database Service on Dedicated Infrastructure, il parametro global_names è impostato su TRUE per impostazione predefinita. Pertanto, il nome del database completamente qualificato deve essere utilizzato durante la creazione del database link a Azure SQL Server.

Informazioni preliminari

Prima di iniziare, controllare le versioni dei principali componenti software utilizzati in questa installazione, scaricare il pacchetto software richiesto e consultare la documentazione del prodotto per riferimento futuro.

Esaminare i requisiti software

Queste istruzioni vengono testate sulle seguenti versioni software e hardware.

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

Scaricare il seguente pacchetto software:

Informazioni sui servizi e i ruoli richiesti

Questa soluzione richiede i seguenti servizi:

  • Oracle Exadata Database Service on Dedicated Infrastructure con OracleDB per Azure
  • Infrastruttura Oracle Cloud
  • Computazione Oracle Cloud Infrastructure

Si tratta dei ruoli necessari per ogni servizio.

Nome servizio: ruolo Richiesto per...
Oracle Exadata Database Service on Dedicated Infrastructure: sys con Configurare il database link.
Oracle Cloud Infrastructure: VCN Admin Aggiungi regole di sicurezza e modifica il DNS.
Computazione di Oracle Cloud Infrastructure: admin Crea un'istanza di computazione per installare Oracle Database Gateway.
Computazione di Oracle Cloud Infrastructure: opc/root Crea l'utente per installare e configurare il software Oracle Database Gateway. Modificare il firewall locale per consentire le connessioni alla porta 1521.

Consulta Scopri come ottenere i servizi Oracle Cloud per le soluzioni Oracle per ottenere i servizi cloud di cui hai bisogno.

Considerazioni per Oracle Database Gateway in esecuzione in un'istanza di computazione OCI

Esaminare queste considerazioni prima di implementare questa soluzione. L'esecuzione di Oracle Database Gateway for SQL Server in un'istanza di computazione OCI è la soluzione ideale per i clienti che hanno familiarità con i servizi OCI.

Vantaggi di Oracle Database Gateway in esecuzione in OCI Compute

  • Oracle Database Gateway for SQL Server è sviluppato e supportato da Oracle.
  • Non è necessario installare altri software di terze parti su Oracle Exadata Database Service on Dedicated Infrastructure, semplificando gli aggiornamenti e la manutenzione dell'ambiente.
  • Oracle Database Gateway for SQL Server viene eseguito su un'istanza di computazione separata da Oracle Exadata Database Service on Dedicated Infrastructure, che semplifica l'aggiornamento e la manutenzione di entrambi gli ambienti. Inoltre, la soluzione potrebbe essere più conveniente perché il software Oracle Database Gateway viene eseguito su OCPU di computazione OCI meno costose invece di essere eseguito sulle OCPU Oracle Exadata Database Service on Dedicated Infrastructure a un prezzo più alto e specializzato.
  • La comunicazione tra Oracle Database Gateway Server e Microsoft Azure SQL Server è cifrata (applicata per impostazione predefinita da Microsoft Azure SQL Server).
  • La conversione e il mapping dei tipi di dati tra i database Oracle e i database Microsoft Azure SQL Server vengono gestiti automaticamente dal software Oracle Database Gateway.

Svantaggi di Oracle Database Gateway in esecuzione in OCI Compute

  • Potrebbe essere necessaria una licenza aggiuntiva per il software Oracle Database Gateway.
  • La comunicazione tra Oracle Exadata Database Service on Dedicated Infrastructure e il server Oracle Database Gateway non viene cifrata per impostazione predefinita durante la configurazione del server Oracle Database Gateway. Per applicare la cifratura da Oracle Exadata Database Service on Dedicated Infrastructure Server sqlnet.ora è necessaria una configurazione aggiuntiva nel server Oracle Database Gateway a Oracle Database Gateway.

Configura Oracle Database Gateway in esecuzione in OCI Compute

  1. Eseguire il login alla console di Azure per ottenere le informazioni per il database di Azure SQL Server da cui il database di Oracle Exadata Database Service on Dedicated Infrastructure caricherà e interrogherà i dati. Queste informazioni sono necessarie per indicare al server Oracle Database Gateway come connettersi al database Azure SQL Server.
    Ottenere i seguenti dettagli:
    • Nome database: il nome del database Azure SQL Server.
    • Nome server completamente qualificato: nome host completamente qualificato per il server SQL in cui è in esecuzione il database Azure SQL Server, in genere nel formato servername.database.windows.net.
    • Azure SQL Server Endpoint privato: il nome e l'indirizzo IP dell'endpoint privato di Azure SQL Server in Azure vnet che si connette a Azure SQL Server. Se non esiste ancora un endpoint privato, crearne uno per Azure SQL Server e prendere nota del nome e dell'indirizzo IP.
    • Nome utente di Azure SQL Server: nome di un utente di Azure SQL Server esistente autorizzato a connettersi al database e allo schema di Azure SQL Server, in genere sqladmin.
    • Password utente di Azure SQL Server: password dell'utente di Azure SQL Server per connettersi al database e allo schema di Azure SQL Server.
  2. Eseguire il login alla console OCI e creare un'istanza di computazione OCI nella subnet client OracleDB for Azure Oracle Exadata Database Service on Dedicated Infrastructure su cui è in esecuzione Oracle Linux 7.9. Questa istanza di computazione eseguirà Oracle Database Gateway for SQL Server.
    Prendere nota del nome host e dell'indirizzo IP assegnati a questa istanza di computazione. This information is required to tell Oracle Exadata Database Service on Dedicated Infrastructure how to connect to the Oracle Database Gateway server.
  3. Dal menu OCI, selezionare Networking/DNS Management e creare una zona DNS privata. Nella nuova zona DNS privata, aggiungere un record per il nome server completamente qualificato dal passo 1 per risolvere l'indirizzo IP dell'endpoint privato di Azure SQL Server dal passo 1.
  4. Dal menu OCI, creare una vista privata DNS. Aggiungere la zona DNS privata creata nel passo 3 a questa vista privata DNS e attivare le modifiche.
  5. Nel menu OCI selezionare Networking/Virtual Client Network (VCN). Selezionare la VCN creata al momento del provisioning di OracleDB for Azure per Oracle Exadata Database Service on Dedicated Infrastructure (se necessario, modificare il compartimento). Selezionare il collegamento del risolutore DNS e aggiungere la vista privata DNS creata in precedenza al risolutore DNS.
    Ciò consente la risoluzione di nomi e indirizzi IP dai servizi OCI (computazione e Oracle Exadata Database Service on Dedicated Infrastructure) all'endpoint privato Azure SQL Server.
  6. Eseguire il login a uno dei nodi del cluster VM di Oracle Exadata Database Service on Dedicated Infrastructure e utilizzare il comando nslookup per verificare che la risoluzione del nome host all'indirizzo IP funzioni per il nome host e l'indirizzo IP dell'endpoint privato di Azure SQL Server.
    Ad esempio:
    [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 ~]$
    Le variabili nell'esempio sono i seguenti:
    • nome server è il nome del server completamente qualificato di Azure SQL Server dal passo 1.
    • IP_address_of_Azure_SQL_Server_private_endpoint è l'indirizzo IP dell'endpoint privato di Azure SQL Server dal passo 1.
  7. Installare il software Oracle Database Gateway scaricato in precedenza nella nuova istanza di computazione OCI.
  8. Configurare Oracle Database Gateway per Azure SQL Server in esecuzione nell'istanza di OCI Compute per connettersi al database Azure SQL Server tramite l'endpoint privato Azure SQL Server utilizzando il collegamento di rete a latenza basso e veloce configurato da OracleDB per Azure tra Azure e OCI.
  9. Su tutti i nodi del cluster VM Oracle Exadata Database Service on Dedicated Infrastructure, configurare il database Oracle Exadata Database Service on Dedicated Infrastructure tnsnames.ora per risolvere in Oracle Database Gateway for SQL Server.
    Ad esempio:
    [opc@exa_dbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@ exa_dbnodex ~]$ . ./exadb_name.env
    [oracle@ exa_dbnodex ~]$ cd $ORACLE_HOME
    [oracle@ exa_dbnodex dbhome_1]$ cd network/admin
    [oracle@ exa_dbnodex admin]$ cd exadb_name/
    [oracle@ exa_dbnodex exadb_name]$ tail -10 tnsnames.ora
    Database_Name_From_Step_1 =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Database_Name_From_Step_1,))
    (HS=OK)
    )
    Le variabili nell'esempio sono i seguenti:
    • exadb_name è il nome del database Oracle Exadata Database Service on Dedicated Infrastructure.
    • Database_Name_From_Step_1 è il nome del database dal passo 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 è il nome host dell'istanza di OCI Compute dal passo 2.
  10. Utilizzare il comando tnsping per eseguire il test della connettività tra Oracle Exadata Database Service on Dedicated Infrastructure e Oracle Database Gateway in esecuzione in OCI Compute (questa connessione è interamente all'interno della VCN OCI).
    Ad esempio:
    [oracle@exajc-dbnodex ~]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 16-SEP-2022 21:28:34
    Used parameter files:
    /u02/app/oracle/product/19.0.0.0/dbhome_1/network/admin/exadb_name/s
    qlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= 
    (ADDRESS=(PROTOCOL=tcp)(HOST==OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521)) (CONNECT_DATA=(SID=Database_Name_From_Step_1)) 
    (HS=OK))
    OK (0 msec)
    [oracle@exadbnodex ~]$
    Le variabili nell'esempio sono i seguenti:
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server dal passo 1.
    • exadb_name è il nome del database Oracle Exadata Database Service on Dedicated Infrastructure.
    • OCI_Compute_Instance_Hostname_From_Step_2 è il nome host dell'istanza di OCI Compute dal passo 2.
  11. In Oracle Exadata Database Service on Dedicated Infrastructure PDB (pluggable database) (non nel CDB), creare un database link al database di Azure SQL Server. Il parametro global_names è impostato su TRUE nei database di Oracle Exadata Database Service on Dedicated Infrastructure per impostazione predefinita, pertanto per creare il database link è necessario utilizzare il nome del database completamente qualificato. Una volta creato il database link, è possibile eseguire query e caricare i dati dal database Azure SQL Server al pluggable database Oracle Exadata Database Service on Dedicated Infrastructure utilizzando questo collegamento.
    [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_From_Step_1 connect to 
    "Azure_SQL_Server_Username" identified by 
    "Azure_SQL_User_password" using 
    'Database_Name_From_Step_1';
    Database link created.
    Il nome utente e la password sono racchiusi tra virgolette (" "), mentre il nome del database Azure SQL Server è racchiuso tra apici (' ').
    Le variabili nell'esempio sono i seguenti:
    • exadb_name è il nome del database Oracle Exadata Database Service on Dedicated Infrastructure.
    • PDBName è il nome del pluggable database.
    • Fully_Qualified_Server_Name_From_Step_1 è il nome host completamente qualificato per il server SQL in cui è in esecuzione il database Azure SQL Server dal passo 1.
    • Azure_SQL_Server_Username è il nome del nome utente Azure SQL Server esistente, a partire dal passo 1.
    • Azure_SQL_User_Password è la password per l'utente di Azure SQL Server per connettersi al database dal passo 1.
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server, dal passo 1.
  12. Eseguire il test del database link appena creato eseguendo una query. Ad esempio:
    SQL> select count(*) from 
    some_table@DatabaseLink_Name_From_Previous_Step;
    Le variabili nell'esempio sono i seguenti:
    • some_table è il nome di una tabella del database su cui eseguire la query.
    • DatabaseLink_Name_From_Previous_Step è il nome del database link dal passo 11.

Installa server Oracle Database Gateway

Questi passi descrivono come installare il software server Oracle Database Gateway su un'istanza di computazione OCI su cui è in esecuzione Oracle Linux 7.9.

  1. Utilizzare yum per installare i pacchetti dei prerequisiti Oracle.
    [root@dbgw ~]# yum install oracle-database-preinstall-19c
  2. Creare un gruppo user, oracle e dba.
    [root@dbgw ~]# useradd -u 1001 -g dba -d /home/oracle -m -s /bin/bash oracle
    [root@dbgw ~]# groupadd -g 1001 dba
  3. Creare la directory di installazione per Oracle Database Gateway 19.3.
    [root@dbgw ~]# mkdir /u01
    [root@dbgw ~]# chown oracle:dba /u01
  4. Modificare il firewall locale per consentire le connessioni alla porta 1521.
    [root@dbgw ~]# firewall-cmd --get-active-zones
    public
    interfaces: eth0
    [root@dbgw ~]# firewall-cmd --zone=public --add-port=1521/tcp –permanent
    [root@dbgw ~]# firewall-cmd --reload
    [root@dbgw ~]# firewall-cmd --zone=public --list-ports
    1521/tcp
    [root@dbgw ~]# systemctl stop firewalld
    [root@dbgw ~]# systemctl start firewalld
  5. Copiare i file zip di Oracle Database Gateway 19.3 scaricati in precedenza nella directory /home/oracle nella VM linux, quindi estrarre il file zip di Oracle Database Gateway 19.3.
    [oracle@dbgw ~]$ unzip LINUX.X64_193000_gateways.zip
  6. Creare un file di risposta dell'installazione dal modello incluso.
    [oracle@dbgw response]$ cd /home/oracle/gateways/response/
    [oracle@dbgw response]$ cp tg.rsp/home/oracle/tg-jc.rsp
  7. Modificare il file di risposta con le seguenti opzioni.
    UNIX_GROUP_NAME=oracle
    INVENTORY_LOCATION=/u01/app/oraInventory
    ORACLE_HOME=/u01/app/oracle/product/gateway
    ORACLE_BASE=/u01/app/oracle
    oracle.install.tg.msqlConStr={Fully_Qualified_Server_Name_From_Step_1,1433,
    Database_Name_From_Step_1,Database_Name_From_Step_1}
    Le variabili nell'esempio sono i seguenti:
    • Fully_Qualified_Server_Name_From_Step_1 è il nome host completamente qualificato per il server SQL in cui è in esecuzione il database Azure SQL Server, dal passo 1.
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server, dal passo 1.
  8. Eseguire l'installazione in background per installare Oracle Database Gateway 19.3.
    [oracle@dbgw gateways]$./runInstaller -silent -noconfig -
    responseFile /home/oracle/tg-jc.rsp
  9. Configurare la Oracle home e il percorso per l'utente oracle.
    [oracle@dbgw ~]$ tail -6 .bash_profile
    ORACLE_HOME=/u01/app/oracle/product/gateway
    export ORACLE_HOME
    PATH=$PATH:$ORACLE_HOME/bin
    export PATH
    [oracle@dbgw ~]$

Configurare Oracle Database Gateway for SQL Server

Dopo aver installato Oracle Database Gateway nell'istanza di computazione OCI che esegue Linux 7.9, è necessario configurarlo per connettersi al database di Azure SQL Server utilizzando l'endpoint privato di Azure SQL Server.

  1. Aggiungere le informazioni del database Azure SQL Server al file di inizializzazione di Oracle Database Gateway for SQL Server in esecuzione sull'istanza di computazione OCI. Queste informazioni indicano a Oracle Database Gateway come connettersi al database Azure SQL Server.
    Ad esempio:
    [oracle@dbgw ~]$ cd $ORACLE_HOME/dg4msql/admin
    [oracle@dbgw admin]$ cp initdg4msql.ora 
    initDatabase_Name_From_Step_1.ora
    [oracle@dbgw admin]$ cat initDatabase_Name_From_Step_1.ora
    # This is a customized agent init file that contains the HS parameters
    # that are needed for the Database Gateway for Microsoft SQL Server
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO=Fully_Qualified_Server_Name_From_Step_1:1433//Database_Name_From_Step_1
    # alternate connect format is hostname/serverinstance/databasename
    HS_DB_NAME=Database_Hostname_From_Step_1
    HS_DB_DOMAIN=Database_Domain_Name #usually database.windows.net
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER
    HS_FDS_ENCRYPT_SESSION=SSL
    HS_FDS_VALIDATE_SERVER_CERT=0
    Le variabili nell'esempio sono i seguenti:
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server, dal passo 1.
    • Fully_Qualified_Server_Name_From_Step_1 è il nome host completamente qualificato per il server SQL in cui è in esecuzione il database Azure SQL Server, dal passo 1.
    • Database_Hostname_From_Step_1 è il nome host del database, dal passo 1.
    • Database_Domain_Name è il nome del dominio in cui risiede il database, in genere database.windows.net.
    Tenere presente che i parametri HS_FDS_ENCRYPT_SESSION e HS_FDS_VALIDATE_SERVER_CERT sono necessari affinché la connessione tra il server Oracle Database Gateway e il Azure SQL Server venga cifrata.
  2. Nel server Oracle Database Gateway modificare l'tnsnames.ora per risolvere i servizi gateway forniti da questo gateway, come descritto di seguito.
    [oracle@dbgw ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
    # This is a sample tnsnames.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    Database_Name_From_Step_1 =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST= 
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Database_Name_From_Step_1))
    (HS=OK)
    )
    Le variabili nell'esempio sono i seguenti:
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server, dal passo 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 è il nome host dell'istanza di OCI Compute dal passaggio 2.
  3. Nel server Oracle Database Gateway modificare listener.ora per includere le informazioni di Oracle Database Gateway.
    [oracle@dbgw-jc admin]$ cat ../../network/admin/listener.ora
    # This is a sample listener.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    LISTENER =
    (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521))
    )
    SID_LIST_LISTENER=
    (SID_LIST=
    (SID_DESC=
     (SID_NAME=Database_Name_From_Step_1)
     (ORACLE_HOME=/u01/app/oracle/product/gateway)
     (PROGRAM=dg4msql)
    )
    )
    Le variabili nell'esempio sono i seguenti:
    • OCI_Compute_Instance_Hostname_From_Step_2 è il nome host dell'istanza di OCI Compute dal passaggio 2.
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server dal passo 1.
  4. Avviare il listener nel server Oracle Database Gateway in esecuzione nell'istanza di computazione OCI ed eseguire il test della connettività al gateway.
    Ad esempio:
    [oracle@dbgw admin]$lsnrctl start
    [oracle@dbgw admin]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 16-SEP-2022 21:18:39
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST= 
    OCI_Compute_Instance_Hostname_From_Step_2)(PORT=1521)) 
    (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@dbgw-jc admin]$
    Le variabili nell'esempio sono i seguenti:
    • Database_Name_From_Step_1 è il nome del database di Azure SQL Server dal passo 1.
    • OCI_Compute_Instance_Hostname_From_Step_2 è il nome host dell'istanza di OCI Compute dal passaggio 2.