Crea il database in 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 delle variabili di ambiente a seconda della configurazione.

configura il database in standby

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 di database, la duplicazione viene eseguita utilizzando un listener temporaneo. Questo esempio utilizza la porta 1523, ma puoi utilizzare qualsiasi porta aperta per la comunicazione 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 il servizio di rete configurazione:

    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 in standby

  1. Ogni istanza di database richiede una directory in cui archiviare gli audit log. 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 i parametri specifici dell'istanza in modo che riflettano i nomi delle istanze 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 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 di parametri di database aggiornato con modifiche utilizzando gli esempi forniti in questa guida. Tieni presente che contenente parametri aggiuntivi specifici per il tuo e la configurazione del database. Solo i parametri che richiedono la modifica del parametro in standby sono visualizzati:

    *.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 variabili di ambiente per il database in standby:

    DBDG_SITE21:ORACLE_HOME:N
    

Crea il database di standby

  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 lo standby su un nodo. Accedi al primo server Bare Metal Solution in standby avvia SQL*Plus, quindi avvia il database in standby 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 del database di riserva. Da ogni soluzione Bare Metal Solution server nella posizione del database principale, prova a connetterti all'app in standby utilizzando SQL*Plus. Inserisci manualmente la password di accesso remoto SYS di connettersi correttamente all'istanza.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Se l'esito è positivo, dovresti ricevere un prompt SQL*Plus standard, in cui controlla 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 in 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 ha esito positivo, al termine dell'elaborazione dovresti ricevere un messaggio simile al nell'esempio seguente:

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

    EXIT;
    

Finalizza la creazione del database in standby

  1. Durante la duplicazione del database, ASM crea nuovi file di controllo per l'standby per configurare un database. Connettiti alla nuova istanza in standby e scarica il nuovo file di controllo nomi di utenti. L'esempio seguente mostra due file di controllo archiviati nell'+DATA e +RECO di gruppi di dischi:

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

    Il nome o i nomi dei file di controllo sono mostrati in "Valore" campo:

               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 per il parametro control_files in $ORACLE_HOME/dbs/initDBDG_SITE21.ora con la nuova e i relativi valori. Se sono presenti più file di controllo, incapsulali in un virgolette, 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 in $ORACLE_HOME/network/admin/listener.ora sul primo server Bare Metal Solution nel percorso del database in standby.

  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

A questo punto, configura e attiva il broker Data Guard.