Carica dati utilizzando il server Oracle Database Gateway in esecuzione nella VM Azure

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 i dati da un server SQL Azure utilizzando un database link tramite il software Oracle Database Gateway for SQL Server in esecuzione in una virtual machine Azure.

Architettura

Questa architettura utilizza Oracle Database Gateway for SQL Server in esecuzione in una virtual machine Azure per caricare i dati da SQL Server Azure 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 lenta utilizzando un endpoint privato Azure.

Il diagramma riportato di seguito illustra questa architettura.



exadata-db-azure-odsa-azure-vm.zip

Si noti quanto riportato di seguito.

  • Il software Oracle Database Gateway for SQL Server può essere eseguito su una virtual machine Azure. Il numero di CPU, la memoria e la dimensione del disco devono essere assegnati alla virtual machine Azure in base ai requisiti di Oracle Database Gateway for SQL Server e alle linee guida di dimensionamento. Per ulteriori informazioni, vedere di seguito i requisiti di sistema per Oracle Database Gateway for SQL Server.
  • Oracle Exadata Database Service on Dedicated Infrastructure deve risolvere il nome host e l'indirizzo IP della virtual machine Azure su cui è in esecuzione Oracle Database Gateway. 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:

  • OracleDB per Azure con Oracle Exadata Database Service on Dedicated Infrastructure
  • Infrastruttura Oracle Cloud
  • Macchina virtuale di Azure

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 Aggiungere regole di sicurezza, modificare DNS per risolvere l'endpoint Azure e la VM Azure.
Azure Virtual Machine: root Creare un utente oracle 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 sull'esecuzione di Oracle Database Gateway in una Virtual Machine Azure

L'esecuzione di Oracle Database Gateway for SQL Server in una virtual machine Azure è ideale per i clienti che hanno familiarità con i servizi Azure, ma non con i servizi OCI molto familiari.

Vantaggi di Oracle Database Gateway in esecuzione in una VM Azure

  • 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 gestione di entrambi gli ambienti. Inoltre, la soluzione potrebbe essere più conveniente, poiché il software Oracle Database Gateway viene eseguito su OCPU Azure meno costose invece di essere eseguito sulle OCPU Oracle Exadata Database Service on Dedicated Infrastructure più specializzate e a prezzi più elevati.
  • La comunicazione tra il server Oracle Database Gateway e Azure SQL Server viene cifrata (applicata dalla configurazione predefinita di Azure SQL Server).
  • La conversione e il mapping dei tipi di dati tra Oracle Database e Azure SQL Server Database vengono gestiti automaticamente dal software Oracle Database Gateway.
  • La risoluzione del nome host per Azure SQL Server viene gestita automaticamente da Azure a livello di virtual machine Azure.

Svantaggi di Oracle Database Gateway in esecuzione in una Virtual Machine Azure

  • 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 sqlnet.ora è necessaria una configurazione aggiuntiva in Oracle Database Gateway al server Oracle Database Gateway.

Configurare Oracle Database Gateway in esecuzione nella Virtual Machine Azure

  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 SQL Server 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: il nome di un utente di Azure SQL Server esistente ha consentito di connettersi al database o 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. Creare una virtual machine Azure su cui è in esecuzione Linux 7.9 nel vnet configurato per OracleDB per Azure. Questa virtual machine eseguirà Oracle Database Gateway for SQL Server. Prendere nota del nomehost e dell'indirizzo IP (su Azure vnet) assegnato a questa virtual machine, queste informazioni sono necessarie per indicare al database Oracle Exadata Database Service on Dedicated Infrastructure come connettersi al server Oracle Database Gateway. Il formato del nome host è in genere servername.windows.net.
  3. Dal menu principale di OCI, selezionare Networking/DNS Management per creare una zona DNS privata. Nella nuova zona DNS privata, aggiungere un nome host record e un indirizzo IP della VM Azure creata nel passo precedente.
  4. Dal menu principale di OCI, selezionare Gestione di rete/DNS per creare una vista privata DNS. Aggiungere la zona DNS privata creata nel passo precedente a questa vista privata DNS appena creata e attivare le modifiche.
  5. Nel menu principale di OCI selezionare Networking/Virtual Client Network (VCN). Selezionare la VCN creata al momento del provisioning del servizio Oracle Database Gateway Oracle Exadata Database Service on Dedicated Infrastructure (se necessario, modificare il compartimento). Fare clic sul collegamento al resolver DNS, quindi aggiungere la vista privata DNS creata dal passo precedente al resolver DNS. Ciò consentirà la risoluzione di nomi e indirizzi IP da Oracle Exadata Database Service on Dedicated Infrastructure alla VM Azure su cui è in esecuzione Oracle Database Gateway.
  6. Eseguire il login a uno dei nodi del cluster VM Oracle Exadata Database Service on Dedicated Infrastructure per utilizzare nslookup per verificare che il nome host e la risoluzione degli indirizzi IP funzionino per la VM Azure che eseguirà Oracle Database Gateway.
    Ad esempio:
    [opc@exa_dbnodex ~]$ nslookup servername.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: servername.windows.net
    Address: IP_address_of_Azure_VM_from_step_2
    [opc@exa_dbnodex ~]$
    Le variabili nell'esempio sono i seguenti:
    • nomeserver è il nome dell'endpoint privato di Azure SQL Server dal passo 1.
    • IP_address_of_Azure_VM_from_step_2 è l'indirizzo IP della VM di Azure dal passo 2.
  7. Installare il software Oracle Database Gateway scaricato in precedenza nella nuova virtual machine Azure.
  8. Configurare Oracle Database Gateway per Azure SQL Server per connettersi al database di Azure SQL Server utilizzando l'endpoint privato di Azure SQL Server.
    Si noti che la virtual machine Azure che esegue Oracle Database Gateway e l'endpoint privato Azure SQL Server si trovano nello stesso vnet Azure.
  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:
    [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=Azure_VM_Hostname_From_Step_2)(PORT=15
    21))
    (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.
    • Azure_VM_Hostname_From_Step_2 è il nome host della VM di Azure dal passo 2.
  10. Utilizzare tnsping per testare la connettività tra il database Oracle Exadata Database Service on Dedicated Infrastructure e Oracle Database Gateway for SQL Server in esecuzione nella virtual machine Azure (questa connessione utilizza il collegamento di rete a latenza basso e veloce stabilito da OracleDB for Azure tra Azure e OCI).
    [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=Azure_VM_Hostname_From_Step_2)(PORT=15
    21)) (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@exadbnodex ~]$
    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.
    • Azure_VM_Hostname_From_Step_2 è il nome host della VM di Azure dal passo 2.
  11. In Oracle Exadata Database Service on Dedicated Infrastructure PDB (pluggable database) (non nel CDB) crea un database link al database 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. Dopo aver creato il database link, è possibile eseguire query e caricare i dati dal database Azure SQL Server al Oracle Exadata Database Service on Dedicated Infrastructure pluggable database (PDB) 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;
    Le variabili nell'esempio sono i seguenti:
    • some_table è il nome di una tabella del database su cui eseguire la query.
    • DatabaseLink_Name è il nome del database link dal passo 11.

Installa Oracle Database Gateway Server

Questi passaggi descrivono come installare il software server Oracle Database Gateway su una virtual machine Azure 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 Server 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 decomprimere 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 nella virtual machine Azure su cui è in esecuzione Linux 7.9, è necessario configurarlo per connettersi al database 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:1433//Database_Name_From_Step_1
    # alternate connect format is hostname/serverinstance/databasename
    HS_DB_NAME=Database_Name_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 host del database di Azure SQL Server, dal passo 1.
    • Fully_Qualified_Server_Name è il nome host completamente qualificato per il server SQL in cui è in esecuzione il database Azure SQL Server, dal passo 1.
    • Database_Domain_Name è il nome del dominio in cui risiede il database dal passo 1, 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
    Azure_SQL_Server_Database_Name =
    (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST= 
    Azure_VM_Hostname_From_Step_2)(PORT=1521))
    (CONNECT_DATA=(SID=Azure_SQL_Server_Database_Name))
    (HS=OK)
    )
    Le variabili nell'esempio sono i seguenti:
    • Azure_SQL_Server_Database_Name è il nome del database di Azure SQL Server dal passo 1.
    • Azure_VM_Hostname_From_Step_2 è il nome host della VM di Azure dal passo 2.
  3. Nel server Oracle Database Gateway modificare listener.ora per includere le informazioni di Oracle Database Gateway.
    Ad esempio:
    [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=
    Azure_VM_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:
    • Azure_VM_Hostname_From_Step_2 è il nome host della VM di Azure dal passo 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 nella VM Azure 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= 
    Azure_VM_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.
    • Azure_VM_Hostname_From_Step_2 è il nome host della VM di Azure dal passo 2.