Crea database in standby di Data Guard

Una volta preparato per Data Guard, il database principale è 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 database Nomi host dei server Nomi istanze RAC Ruolo
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principale
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 In attesa

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

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

A seconda della configurazione, potrebbe essere necessario modificare i percorsi delle variabile di ambiente.

Configura il database in standby

Configura la connettività del database

Accedi a ogni server Bare Metal Solution nella località 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)
    )
  )

Configura un listener temporaneo

Per evitare il riavvio del 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. Questo listener temporaneo viene eliminato dopo la duplicazione del database.

  1. Accedi al primo server Bare Metal Solution nella località di standby da utilizzare durante il processo di duplicazione del database. Modifica il file $ORACLE_HOME/network/admin/listener.ora 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 il listener temporaneo:

    lsnrctl start LISTENER_DBDG_SITE2
    

Prepara il database in standby

  1. Ogni istanza di database richiede una directory per archiviare gli audit log. Crea la directory del file di controllo su ogni server Bare Metal Solution nella posizione del database in 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 in standby:

    1. Imposta db_unique_name sul nuovo nome del database in standby.
    2. Modifica tutti i parametri specifici dell'istanza in modo che riflettano i nomi delle istanze per il database in 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 località 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 di database aggiornato con modifiche utilizzando gli esempi forniti in questa guida. Tieni presente che il file dei parametri conterrà parametri aggiuntivi specifici per la configurazione del tuo database. Vengono mostrati solo i parametri che richiedono modifiche per lo 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 in standby:

    DBDG_SITE21:ORACLE_HOME:N
    

Crea il database in standby

  1. Imposta la variabile di ambiente ORACLE_SID in modo da poterti connettere al database in 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 località in standby, avvia SQL*Plus, quindi avvia il database in standby in nomount mode utilizzando pfile:

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

    In caso di esito positivo, dovresti ricevere una risposta simile alla 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 di database in standby. Da ogni server Bare Metal Solution nella località del database principale, prova a connetterti all'istanza in standby utilizzando SQL*Plus. Inserisci manualmente la password di accesso remoto SYS per connetterti 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 lo 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;
    

    In caso di esito positivo, dopo l'elaborazione dovresti ricevere un messaggio simile al seguente esempio:

    Finished Duplicate Db at ...
    
  7. Esci da Gestione ripristino:

    EXIT;
    

Finalizza la creazione del database in standby

  1. Durante la duplicazione del database, ASM crea nuovi file di controllo per il database in standby. Connettiti alla nuova istanza in standby e recupera 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 sono 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 in 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 delle 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 in standby ed elimina il file temporaneo pfile e delle password:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Arresta il listener temporaneo utilizzato per la duplicazione del database sul primo server Bare Metal Solution nella posizione del database in 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 in standby.

  8. Aggiungi le nuove istanze e il nuovo database in standby al registro di 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 in standby utilizzando il comando srvctl:

    srvctl start database -db DBDG_SITE2
    

Passaggi successivi

Quindi, configura e attiva il broker Data Guard.