Crea il database di standby di Data Guard

Dopo aver preparato il database principale per Data Guard, è pronto per essere duplicato nel sito di standby. La seguente guida utilizza la duplicazione attiva per creare una copia coerente del database.

Ti ricordiamo che in questa guida vengono utilizzati i seguenti esempi:

Nome univoco del database Nomi host del server Nomi delle istanze RAC Ruolo
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principale
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Standby

I server Bare Metal Solution che eseguono Oracle in questa guida sono configurati con le seguenti variabili di ambiente:

Nome della variabile di ambiente Valore
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

Potresti dover modificare i percorsi variabile di ambiente a seconda della configurazione.

Configura il database di riserva

Configura la connettività del database

Accedi a ogni server Bare Metal Solution nella posizione di standby e modifica il file $ORACLE_HOME/network/admin/tsnames.ora per aggiornare la configurazione del servizio di rete:

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

Configurare un listener temporaneo

Per evitare di riavviare il listener utilizzato per altre connessioni al database, la duplicazione del database viene eseguita utilizzando un listener temporaneo. Questo esempio utilizza la porta 1523, ma puoi utilizzare qualsiasi porta aperta per la comunicazione tra i cluster. Elimina questo ascoltatore temporaneo dopo la duplicazione del database.

  1. Accedi al primo server Bare Metal Solution nella posizione di standby da utilizzare durante il processo di duplicazione del database. Modifica il $ORACLE_HOME/network/admin/listener.ora file per aggiornare la configurazione del servizio di rete:

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. Avvia l'ascoltatore temporaneo:

    lsnrctl start LISTENER_DBDG_SITE2
    

Prepara il database di standby

  1. Ogni istanza di database richiede una directory per archiviare i log di controllo. Crea la directory dei file di controllo su ogni server Bare Metal Solution nella posizione del database di standby:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. Modifica il file $ORACLE_HOME/dbs/initDBDG_SITE21.ora che è stato copiato in precedenza sul server di database di riserva:

    1. Imposta db_unique_name sul nome del nuovo database di standby.
    2. Modifica eventuali parametri specifici dell'istanza in modo che riflettano i nomi delle istanze per il database di standby. Ecco alcuni esempi:
      • instance_number
      • thread
      • undo_tablespace
    3. Imposta il parametro audit_file_dest in modo da utilizzare la directory creata nel passaggio precedente.
    4. Se i gruppi di dischi ASM in ogni posizione utilizzano nomi diversi, modifica i parametri db_file_name_convert e log_file_name_convert in modo che corrispondano alle nuove posizioni dei file.
    5. Commenta il parametro control_files.

    L'esempio seguente mostra un file dei parametri del database aggiornato con le modifiche utilizzando gli esempi forniti in questa guida. Tieni presente che il file di parametri conterrà parametri aggiuntivi specifici per la configurazione del database. Vengono visualizzati solo i parametri che richiedono la modifica per il funzionamento in standby:

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. Nel file /etc/oratab, aggiungi una voce in modo che il comando oraenv possa impostare le variabili di ambiente per il database di standby:

    DBDG_SITE21:ORACLE_HOME:N
    

Crea il database di riserva

  1. Imposta la variabile di ambiente ORACLE_SID per poterti connettere al database di standby:

    source oraenv <<< "DBDG_SITE21"
    

    Dovresti ricevere la risposta The Oracle base has been set to /apps/oracle/oracle_base.

  2. Prima di duplicare il database principale, devi avviare manualmente l'istanza di standby su un nodo. Accedi al primo server Bare Metal Solution nella posizione di standby, avvia SQL*Plus e poi avvia il database di standby in nomount mode utilizzando pfile:

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    Se l'operazione ha esito positivo, dovresti ricevere una risposta simile al seguente esempio:

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. Esci da SQL*Plus dopo aver avviato l'istanza:

    EXIT;
    
  4. Verifica la connettività al servizio del database di riserva. Da ogni server Bare Metal Solution nella posizione del database principale, prova a connetterti all'istanza di standby utilizzando SQL*Plus. Inserisci manualmente la password di accesso remoto SYS per connetterti correttamente all'istanza.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    In caso di esito positivo, dovresti ricevere un prompt SQL*Plus standard, in cui puoi controllare i parametri dell'istanza:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Dovresti ricevere una risposta simile alla seguente:

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. Esci da SQL*Plus dopo aver controllato il parametro DB_UNIQUE_NAME:

    EXIT;
    
  6. Connettiti a Recovery Manager, quindi esegui il comando duplicate per duplicare il database standby dal database principale attivo:

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    Se l'operazione è andata a buon fine, dopo l'elaborazione dovresti ricevere un messaggio simile al seguente:

    Finished Duplicate Db at ...
    
  7. Esci da Recovery Manager:

    EXIT;
    

Completa la creazione del database di standby

  1. Durante la duplicazione del database, ASM crea nuovi file di controllo per il database di standby. Connettiti alla nuova istanza di standby e ottieni i nuovi nomi dei file di controllo. L'esempio seguente mostra due file di controllo archiviati nei gruppi di dischi +DATA e +RECO:

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    I nomi dei file di controllo vengono visualizzati nel campo "Valore":

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Registra i nomi dei file di controllo del passaggio precedente e sostituisci eventuali voci per il parametro control_files in $ORACLE_HOME/dbs/initDBDG_SITE21.ora con i nuovi valori. Se sono presenti più file di controllo, racchiudi ciascuno tra virgolette singole, separate da una virgola:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Connettiti al database di standby con SQL*Plus e crea un nuovo spfile dal pfile modificato:

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. Copia il file della password nel gruppo di dischi ASM utilizzando il comando asmcmd:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. Arresta l'istanza del database di riserva ed elimina il file temporaneo pfile e la password:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Interrompi l'ascoltatore temporaneo utilizzato per la duplicazione del database sul primo server Bare Metal Solution nella posizione del database di standby:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Rimuovi le voci temporanee nel file $ORACLE_HOME/network/admin/listener.ora sul primo server Bare Metal Solution nella posizione del database di riserva.

  8. Aggiungi il nuovo database e le nuove istanze di standby al registry del cluster utilizzando il comando srvctl:

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. Avvia il database di standby utilizzando il comando srvctl:

    srvctl start database -db DBDG_SITE2
    

Passaggi successivi

Poi, configura e attiva il broker Data Guard.