Preparazione alla distribuzione della topologia

Per garantire il funzionamento di Data Guard, i due database nelle diverse aree devono comunicare. Pertanto, è necessario impostare una connessione di peering remoto tra le due aree in OCI tramite i rispettivi DRG. I DRG vengono creati dall'impostazione OracleDB per Azure, pertanto è sufficiente stabilire una connessione di peering remoto tra i DRG esistenti.

Impostare la rete

Per configurare una rete, procedere come segue

  1. Impostare la connettività di rete per i sistemi di database Azure VM e OracleDB per Azure.
    • Assicurarsi di disporre della chiave privata ssh per il sistema Oracle DB disponibile nella VM di Azure.
    • Testare la connettività tra le VM di Azure e i sistemi DB di OracleDB for Azure.
  2. Impostare la rete per i sistemi di database in OCI.
    1. Passare ai dettagli della VCN del sistema DB nell'area 1, selezionare Collegamenti gateway di instradamento dinamico, quindi il nome del DRG per caricare i dettagli del DRG nell'area 1. Selezionare quindi Allegati a connessione peering remoto. In una seconda finestra del browser, fare esattamente lo stesso per l'area 2.
    2. Successivamente, in entrambe le aree, selezionare Crea connessione peering remoto per creare un RPC.
    3. Dopo aver creato entrambi gli RPC, selezionare il nome RPC nell'area 1 e copiare l'OCID.
    4. Nell'area 2, selezionare il nome RPC e selezionare Stabilisci connessione. Selezionare il nome dell'area corretta per l'area 1 (alla quale ci si connette) e fornire l'OCID per l'RPC nell'area 1, copiato nel passo precedente. Pochi istanti dopo aver stabilito la connessione, lo stato peer deve essere "Peered".
    5. Successivamente, consenti il traffico tra le reti VCN nelle due regioni. Passare ai dettagli della VCN e selezionare l'elenco di sicurezza predefinito. Selezionare Aggiungi regole di entrata per consentire il traffico dall'intervallo CIDR della VCN opposta.
    6. Infine, connettiti dalle VM di Azure ai rispettivi sistemi OCI Base DB. Modificare il file tnsnames.ora affinché entrambi i sistemi Base DB possano avere una connessione all'altro database.
    7. Verificare che tnsping funzioni correttamente da entrambi i sistemi DB al database opposto.

Impostazione della configurazione DR di Oracle Database for Azure

Per impostare il database Oracle per la configurazione DR di Azure, è necessario preparare sia un database primario che un database secondario, come descritto di seguito.

Nota

Fare clic su Copia per salvare l'esempio di comando negli Appunti da incollare nella riga di comando. Assicurarsi di sostituire qualsiasi variables con valori specifici dell'implementazione.

Prepara il database primario

Per preparare il database primario, è necessario configurare listener statici, aggiornare il file tnsnames.ora e configurare varie impostazioni e parametri del database.

  1. Dal prompt SQL>, verificare le seguenti informazioni:
    • Controllare che il flashback del database sia abilitato
    • Controllare che il log forzato del database sia abilitato
    • Controllare che il database sia in modalità di log di archivio
    • Verifica che il database sia in modalità aperta
    • Controlla che il database sia nel ruolo di database primario
    eseguire questo comando:
    select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
    L'output deve essere simile al seguente:
    LOG_MODE              FORCE_LOGGING               FLASHBACK_ON               OPEN_MODE                 DATABASE_ROLE
    ----------------      ------------------------   ----------------------     --------------------        -----------------------
    ARCHIVELOG            YES                         YES                        READ WRITE                  PRIMARY
  2. Controllare che la gestione automatica dei file in standby sia impostata su automatica eseguendo questo comando:
    show parameter standby_file_management
    L'output deve essere simile al seguente:
    NAME                                          TYPE          VALUE
    ------------------------------------          -----------  ----------
    standby_file_management                       string       AUTO
  3. Impostare i file di configurazione del broker:
    show parameter dg_broker_config_file1;
    L'output deve essere simile al seguente:
    NAME                                          TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file1                        string        /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
    

    Quindi immettere il comando seguente:

    show parameter dg_broker_config_file2;
    L'output deve essere simile al seguente:
    
    NAME                                                     TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file2                             string          /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
  4. Abilitare il broker Data Guard:
    show parameter dg_broker_start
    L'output deve essere simile al seguente:
    NAME                                             TYPE         VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean      FALSE
    Immettere quindi i seguenti comandi:
    alter system set dg_broker_start=true scope=both;
    
    show parameter dg_broker_start
    L'output deve essere simile al seguente:
    NAME                                             TYPE        VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean     TRUE
  5. Dal prompt dei comandi (ad esempio, [oracle@ldbuksdr ]$), prendere nota dello stato del listerner:
    lsnrctl status
  6. Dettagli di configurazione del database note:
    srvctl config database -d db_unique_name
  7. Prendere nota delle voci tns:
    cat $ORACLE_HOME/network/admin/tnsnames.ora
  8. Output della nota sqlnet.ora:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Copiare il file delle password nel sistema DB in standby nella posizione /tmp immettendo i comandi riportati di seguito.
    cd .ssh
    scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid   
  10. Individuare e copiare i file wallet nel sistema DB in standby nella posizione /tmp:
    select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
    L'output deve essere simile al seguente:
    CON_ID         WRL_PARAMETER                                                                      STATUS       WALLET_TYPE
    ----------    ------------------------------------------------------------------------------     ------------  ------------ ----------------------------
    1              /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/                             OPEN          AUTOLOGIN
    2                                                                                                 OPEN          AUTOLOGIN
    3                                                                                                 OPEN          AUTOLOGIN
    
    Quindi immettere:
    cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde
    ls -ltra
    
    Dovresti vedere qualcosa del genere:
    -rw------- 1 oracle asmadmin  5467 Jun 19 18:59 ewallet.p12
    -rw------- 1 oracle asmadmin  5512 Jun 19 18:59 cwallet.sso
    
    Immettere quindi i comandi seguenti (dove db_unique_name è il nome univoco del database del wallet):
    
    [oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
    cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
    scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
    scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
  11. Configurare il listener statico.
    Per la creazione iniziale di un'istanza del database di standby è necessario un listener statico. Quando un database è inattivo, un listener statico abilita una connessione remota a un'istanza, consentendo di utilizzare Oracle Data Guard per avviare l'istanza. Accertarsi che non vi siano interruzioni di riga o spazi vuoti nei file listener.ora.

    Nel database primario aggiungere il file SID_LIST_LISTENER nel file listener.ora per includere il nome univoco del database, la Oracle home e il SID (ID di sistema) Oracle del database primario.

    lsnrctl status 
    vi listener.ora 
    Aggiungere la voce seguente a listener.ora, dove:
    • DB_UNIQUE_NAME è il nome univoco del database primario.
    • ORACLE_HOME è la Oracle home locale del database primario.
    • ORACLE SID è il SID del database primario.
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
    (SID_NAME = ORACLE SID)))
    La voce deve avere un aspetto simile al seguente (le voci per GLOBAL_DBNAME, ORACLE_HOME e SID_NAME variano):
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)
    (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
    Ricaricare il listener e verificarne lo stato.
    lsnrctl reload
    lsnrctl status
  12. Configurare le voci tns.
    Per garantire il trasporto corretto dei redo, sono necessarie voci per ogni database nei file tnsnames.ora primario e in standby. Gli indirizzi IP vengono utilizzati in quanto non vi è alcun DNS tra i database per risolvere i nomi dei server agli indirizzi IP. Per sostituire i valori rilevanti per la configurazione, usare l'esempio seguente. Le configurazioni Oracle Real Application Clusters (Oracle RAC) non sono in grado di risolvere il nome del listener di scansione. È pertanto necessario utilizzare una lista di indirizzi per definire tutti i nodi. Questi verranno aggiunti in seguito, l'istanza iniziale dovrebbe elencare solo un indirizzo IP nelle voci tns per garantire che Oracle Recovery Manager (RMAN) si connetta sempre agli stessi nodi.
    [oracle@~]$ cd $ORACLE_HOME/network/admin 
    [oracle@~]$ vi tnsnames.ora
    La voce nel file tnsnames.ora dovrebbe avere un aspetto simile al seguente:
    DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))

Prepara il database in standby

Successivamente, preparare il database in standby.

  1. Elimina manualmente il database creato dagli strumenti di Oracle Database for Azure.
    Prima di eliminare il database di standby, salvare il file db_unique_name corrente e prendere nota della posizione del wallet che verrà utilizzata in seguito. La query seguente fornisce dettagli per la posizione del wallet.
    1. Dal prompt dei comandi sqlplus, immettere::
      select * from V$ENCRYPTION_WALLET; 
    2. Successivamente, preparare lo script rm_dbfiles.sql per rimuovere i file correlati al database:
      srvctl config database -d db_unique_name
    3. Eseguire lo script seguente per chiudere il database che si sta creando come database in standby e rimuovere i file del database:
      vi rm_dbfiles.sql 
      set heading off linesize 999 pagesize 0 feedback off trimspool on 
      spool /home/oracle/demo/files.lst 
      select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; 
      spool off 
      create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; 
      exit
      
    4. Quindi passare al prompt sqlplus come DBA di sistema:
      sqlplus "/ as sysdba"
      Ed eseguire i seguenti comandi:
      @rm_dbfiles.sql
      exit
    5. Successivamente, concedere l'autorizzazione per leggere, scrivere ed eseguire (dove db_unique_name è il nome univoco del database interessato):
      chmod 777 files.lst
      srvctl stop database -d db_unique_name
    6. Salvare ed eseguire lo script:
      ./files.lst 
    Tutti i file per il database iniziale sono stati rimossi.
  2. Copiare il password file e i file wallet ricevuti in /tmp dal database primario nelle rispettive posizioni nel sistema DB del database di standby.
    1. Copiare il password file del database e i file del wallet ricevuti in /tmp dal database primario alle rispettive posizioni nel sistema DB del database di standby (dove orapwsid è la password SID):
      sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid 
      Ad esempio:
      sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      L'output deve essere simile al seguente:
      
      -rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    2. Verificare che l'output md5sum del password file corrisponda a quello primario e in standby (dove orapwsid è la password SID):
      md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid 
      L'output del database primario deve avere un aspetto simile al seguente (dove orapwsid è orapwdbuks):
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      
      E per il database in standby:
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    3. Rimuovere i file wallet esistenti e copiare i file wallet da /tmp nella posizione TDE (dove db_unique_name è il nome univoco del database interessato):
      [oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
      rm ewallet.p12 cwallet.sso
      sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
      chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
  3. Configura listener statico:
    1. Nel database di standby in OCI, aggiungere il file SID_LIST_LISTENER per includere il nome univoco del database, la Oracle home di OCI e il SID (ID di sistema) Oracle del database primario.
      lsnrctl status
      vi listener.ora
    2. Aggiungere la voce seguente al file listener.ora, dove:
      • DB_UNIQUE_NAME è il nome del database primario.
      • ORACLE_HOME è la Oracle home locale del database primario.
      • ORACLE SID è il SID del database primario.
       SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
      (SID_NAME = ORACLE_SID)))
      Ad esempio, la voce dovrebbe avere un aspetto simile al seguente:
      SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com)
      (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks))) 
    3. Ricaricare il listener e controllare lo stato:
      lsnrctl reload 
      lsnrctl status
  4. Configurare le voci tns:
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    La voce nel file tnsnames.ora dovrebbe avere un aspetto simile al seguente:
     DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))