Distribuire la topologia

La clausola "from service" RMAN consente di ripristinare e recuperare i file del database primario in un database di standby in tutta la rete. È possibile utilizzare questa funzionalità per creare un'istanza di un database in standby al posto del comando RMAN DUPLICATE DATABASE ed è più intuitiva e meno soggetta a errori, con un conseguente risparmio di tempo.

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.

Creare un database in standby utilizzando RMAN

Utilizzare Oracle Recovery Manager (RMAN) per creare il database di standby dal database primario attivo. In alternativa, è possibile eseguire il ripristino da un backup del database primario.

  1. Connettersi al database e avviare il database in modalità NOMOUNT.
    $ rman target / 
    startup nomount;
  2. Ripristinare il control file in standby dal servizio primario. In questo esempio, DBUKS_898_LHR è il database primario:
    restore standby controlfile from service 'DBUKS_898_LHR';
    L'output deve essere simile al seguente:
    Starting restore at 04-JUL-23 
    using target database control file instead of recovery catalog 
    allocated channel: ORA_DISK_1 
    channel ORA_DISK_1: SID=28 device type=DISK 
    channel ORA_DISK_1: starting datafile backup set restore 
    channel ORA_DISK_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_DISK_1: restoring control file 
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:04 
    output file name=+RECO/DBUKS_R2J_AMS/CONTROLFILE/current.256.1139953721 
    Finished restore at 04-JUL-23
  3. Mount the database:
    alter database mount;
    L'output deve essere simile al seguente:
    released channel: 
    ORA_DISK_1 Statement processed
  4. Come root nell'istanza OCI, modificare le autorizzazioni della directory Oracle in apertura (chmod 777).
    cd /opt/ 
    ls -ltra 
    Dovresti vedere:
    drwxr-xr-x 10 root root 4096 Jun 20 03:52 oracle 
    L'ingresso:
    [root@ldbuksdr]# chmod 777 oracle/ 
    ls -ltra 
    Dovresti vedere:
    drwxrwxrwx 10 root root 4096 Jun 20 03:52 oracle
  5. Eseguire il ripristino dal database primario (DBUKS_898_LHR):
    restore database from service ' DBUKS_898_LHR ';
    L'output deve essere simile al seguente:
    Starting restore at 04-JUL-23 
    using target database control file instead of recovery catalog 
    allocated channel: ORA_SBT_TAPE_1 
    channel ORA_SBT_TAPE_1: SID=162 device type=SBT_TAPE 
    channel ORA_SBT_TAPE_1: Oracle Database Backup Service Library VER=19.0.0.1 allocated 
    channel: ORA_DISK_1 channel ORA_DISK_1: SID=28 device type=DISK 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00001 to +DATA/DBUKS_898_LHR/DATAFILE/system.261.1139943103 
    channel ORA_DISK_1: starting datafile backup set restore 
    channel ORA_DISK_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set 
    channel ORA_DISK_1: restoring datafile 00003 to +DATA/DBUKS_898_LHR/DATAFILE/sysaux.268.1139943085 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:38 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00004 to +DATA/DBUKS_898_LHR/DATAFILE/undotbs1.260.1139943133 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:04 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00005 to +DATA/DBUKS_898_LHR/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/system.264.1139942759 
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:49 
    channel ORA_DISK_1: starting datafile backup set restore 
    channel ORA_DISK_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set 
    channel ORA_DISK_1: restoring datafile 00006 to +DATA/DBUKS_898_LHR/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/sysaux.265.1139942759 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:25 channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00007 to +DATA/DBUKS_898_LHR/F9D6EA8CCAA09630E0530905F40A5107/DATAFILE/undotbs1.266.1139942759 
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:18 
    channel ORA_DISK_1: starting datafile backup set restore 
    channel ORA_DISK_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set 
    channel ORA_DISK_1: restoring datafile 00008 to +DATA/DBUKS_898_LHR/FE812140C0716067E053F6005A0AEB32/DATAFILE/system.273.1139943583 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:04 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00009 to +DATA/DBUKS_898_LHR/FE812140C0716067E053F6005A0AEB32/DATAFILE/sysaux.271.1139943599 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:16 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00010 to +DATA/DBUKS_898_LHR/FE812140C0716067E053F6005A0AEB32/DATAFILE/undotbs1.270.1139943611 
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:20 channel ORA_DISK_1: starting datafile backup set restore 
    channel ORA_DISK_1: using network backup set from service DBUKS_898_LHR 
    channel ORA_DISK_1: specifying datafile(s) to restore from backup set 
    channel ORA_DISK_1: restoring datafile 00011 to +DATA/DBUKS_898_LHR/DATAFILE/users.269.1139943873 channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:02 
    channel ORA_SBT_TAPE_1: starting datafile backup set restore 
    channel ORA_SBT_TAPE_1: using network backup set from service DBUKS_898_LHR channel ORA_SBT_TAPE_1: specifying datafile(s) to restore from backup set 
    channel ORA_SBT_TAPE_1: restoring datafile 00012 to +DATA/DBUKS_898_LHR/FE812140C0716067E053F6005A0AEB32/DATAFILE/users.274.1139943875 
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:02 
    channel ORA_SBT_TAPE_1: restore complete, elapsed time: 00:00:02 
    Finished restore at 04-JUL-23
    exit ;

Convalida database in standby

Successivamente, è necessario convalidare il database in standby.

  1. Visualizzare il nome e il ruolo del database. Nel prompt SQL> immettere:
     select FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, DATAGUARD_BROKER, PROTECTION_MODE from v$database ; 

    Dovresti vedere una risposta simile a questa:

    FORCE_LOGGING         FLASHBACK_ON       OPEN_MODE       DATABASE_ROLE       DATAGUARD_BROKER        PROTECTION_MODE 
    -------------------- ------------------ --------------- ------------------- ------------------------ ---------------------------- 
    YES                  NO                  MOUNTED        PHYSICAL STANDBY       DISABLED              MAXIMUM PERFORMANCE
  2. Visualizzare il processo di archiviazione, il numero di thread di stato e il numero di sequenza per il database:
    select sysdate,process,status,thread#,sequence#,block# from v$managed_standby where status!='IDLE'; 

    Dovresti vedere una risposta simile a questa:

    04-JUL-23    ARCH    CONNECTED    0    0    0 
    04-JUL-23    DGRD    ALLOCATED    0    0    0 
    04-JUL-23    DGRD    ALLOCATED    0    0    0 
    04-JUL-23    ARCH    CONNECTED    0    0    0 
    04-JUL-23    ARCH    CONNECTED    0    0    0 
    04-JUL-23    ARCH    CONNECTED    0    0    0 

    Quindi immettere:

    select distinct process from gv$managed_standby; 

    Dovresti vedere una risposta simile a questa:

    PROCESS 
    --------- 
    ARCH 
    DGRD

Aggiungi file di log in standby ai database primari e in standby

I file di log in standby vengono utilizzati in un database in standby per ricevere i dati di redo dal database primario. I record scritti nei redo log in linea del database primario vengono trasferiti al database in standby e scritti nei redo log in standby contemporaneamente, riducendo al minimo la probabilità di perdita di dati nel database in standby. Il redo log in standby è obbligatorio per l'applicazione in tempo reale.
Usare il prompt dei comandi SQL> per le seguenti operazioni:
  1. In primo luogo, aggiungere i file di log in standby al database primario.
    1. Immettere:
      select group#, type, member from v$logfile; 

      Vedrai una risposta simile a questa:

      GROUP#      TYPE    MEMBER 
      ---------- ------- --------------------------------------------------------- 
      3          ONLINE  +RECO/DBUKS_898_LHR/ONLINELOG/group_3.259.1139942665 
      2          ONLINE  +RECO/DBUKS_898_LHR/ONLINELOG/group_2.258.1139942665 
      1          ONLINE  +RECO/DBUKS_898_LHR/ONLINELOG/group_1.257.1139942665
    2. Immettere:
      select bytes, group# from v$log;
      Vedrai una risposta simile a questa:
      1073741824 1 
      1073741824 3 
      1073741824 2
    3. Inserire questa serie di comandi:
      SQL> alter database add standby logfile thread 1 group 5 ('+RECO') size 1073741824;
      alter database add standby logfile thread 1 group 6 ('+RECO') size 1073741824; 
      alter database add standby logfile thread 1 group 7 ('+RECO') size 1073741824;
      La risposta per ciascuno di essi dovrebbe essere:
      Database altered
    4. Immettere:
      select group#, type, member from v$logfile;
      Vedrai una risposta simile a questa:
      GROUP#      TYPE      MEMBER 
      ---------- -------   ------------------------------------------------------- 
      3          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_3.259.1139942665 
      2          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_2.258.1139942665 
      1          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_1.257.1139942665 
      4          STANDBY   +RECO/DBUKS_898_LHR/ONLINELOG/group_4.432.1141789993 
      5          STANDBY   +RECO/DBUKS_898_LHR/ONLINELOG/group_5.431.1141790001 
      6          STANDBY   +RECO/DBUKS_898_LHR/ONLINELOG/group_6.430.1141790011 
      7          STANDBY   +RECO/DBUKS_898_LHR/ONLINELOG/group_7.430.1141790017
    5. Archiviare l'elenco di log:
      archive log list
  2. A questo punto, aggiungere i file di log in standby al database in standby.
    1. Immettere:
      select group#, type, member from v$logfile;
      Vedrai una risposta simile a questa:
      GROUP#      TYPE    MEMBER 
      ---------- ------- ------------------------------------------------------ 
      3          ONLINE  +RECO/DBUKS_R2J_AMS/ONLINELOG/group_3.489.1141280529 
      2          ONLINE  +RECO/DBUKS_R2J_AMS/ONLINELOG/group_2.488.1141280519 
      1          ONLINE  +RECO/DBUKS_R2J_AMS/ONLINELOG/group_1.487.1141280511
    2. Immettere:
      select bytes, group# from v$log;
      Vedrai una risposta simile a questa:
      1073741824 1 
      1073741824 3 
      1073741824 2
    3. Inserire questa serie di comandi:
      alter database add standby logfile thread 1 group 4 ('+RECO') size 1073741824;
      alter database add standby logfile thread 1 group 5 ('+RECO') size 1073741824; 
      alter database add standby logfile thread 1 group 6 ('+RECO') size 1073741824; 
      alter database add standby logfile thread 1 group 7 ('+RECO') size 1073741824;
      La risposta per ogni comando deve essere:
      Database altered
    4. Immettere:
      select group#, type, member from v$logfile;
      Vedrai una risposta simile a questa:
      GROUP#      TYPE      MEMBER 
      ---------- -------   ------------------------------------------------------ 
      3          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_3.489.1141280529 
      2          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_2.488.1141280519 
      1          ONLINE    +RECO/DBUKS_898_LHR/ONLINELOG/group_1.487.1141280511 
      4          STANDBY   +DATA/DBUKS_R2J_AMS/ONLINELOG/group_4.294.1141283919 
      5          STANDBY   +DATA/DBUKS_R2J_AMS/ONLINELOG/group_5.295.1141283929 
      6          STANDBY   +DATA/DBUKS_R2J_AMS/ONLINELOG/group_6.296.1141283937 
      7          STANDBY   +DATA/DBUKS_R2J_AMS/ONLINELOG/group_7.296.1141283938
  3. Eliminare i file di log con il nome univoco del database primario. Uno dei tre file di log sarà il log corrente, pertanto non sarà possibile eliminarlo in questo momento. Questo file verrà eliminato e ricreato in seguito.
    1. Immettere:
      alter database drop logfile group 1;
      Vedrai una risposta simile a questa:
      alter database drop logfile group 1 
      * 
      ERROR at line 1: 
      ORA-01623: log 1 is current log for instance dbuks (thread 1) - cannot drop 
      ORA-00312: online log 1 thread 1: '+RECO/DBUKS_898_LHR/ONLINELOG/group_1.257.1139942665'
    2. Immettere:
      alter database drop logfile group 2; 
      alter database drop logfile group 3;
      La risposta per ciascuno di essi dovrebbe essere:
      Database altered
  4. Ricreare i file di log immettendo i seguenti comandi:
    alter database add logfile thread 1 group 2 ('+RECO') size 1073741824;
    alter database add logfile thread 1 group 3 ('+RECO') size 1073741824;
    La risposta per ciascuno di essi dovrebbe essere:
    Database altered.

Configurare Oracle Data Guard Broker

Ora, configura Oracle Data Guard Broker, registra il database in standby e sincronizza i database primari e in standby. Configurare il broker Oracle Data Guard abilitando il parametro dg_broker_config_file nei database primari e in standby. Per Oracle Automatic Storage Management (Oracle ASM), posizionare i file di configurazione del broker su gruppi di dischi separati. Per Oracle Real Application Clusters (Oracle RAC), i file di configurazione del broker devono trovarsi nella memoria condivisa.
  1. Verificare il valore dg_broker_start per il database primario e il database in standby. Assicurarsi che sia impostato su True. Nella riga di comando SQL immettere:
    show parameter dg_broker_start;
    L'output deve essere simile al seguente:
    NAME                                  TYPE         VALUE 
    ------------------------------------ ----------- ------------------------------ 
    dg_broker_start                       boolean      TRUE 
    Se dg_broker_start è impostato su FALSE, impostare il parametro su TRUE prima di passare ai passi successivi; immettere:
    alter system set dg_broker_start=true; 
    select pname from v$process where pname like 'DMON%';
    L'output deve essere simile al seguente:
    PNAME 
    ----- 
    DMON
  2. Controllare i file Oracle Data Guard per il database primario:
    show parameter dg_broker_config_file1;
    show parameter dg_broker_config_file2;
    Se si dispone di Oracle RAC o Oracle ASM, è possibile modificare la posizione del file di configurazione, ad esempio:
    alter system set dg_broker_config_file1=broker_config_file_location; 
    alter system set dg_broker_config_file2=broker_config_file_location; 
  3. Registrare il database primario e il database di standby:
    Utilizzare l'interfaccia della riga di comando (DGMGRL) di Oracle Data Guard per registrare il database primario e aggiungere il profilo del database in standby alla configurazione del broker.
    1. Eseguire il login all'host principale come sys.
      dgmgrl sys/password@net_service_name_for_primary
    2. Creare una configurazione che utilizzi il nome del database primario.
      CREATE CONFIGURATION configuration_name AS PRIMARY DATABASE IS primary_database_name CONNECT IDENTIFIER IS primary_database_name; 
      L'output deve essere simile al seguente:
      CREATE CONFIGURATION dbuks_898_lhr_dbuks_r2j_ams AS PRIMARY DATABASE IS dbuks_898_lhr CONNECT IDENTIFIER IS dbuks_898_lhr;
    3. Aggiungere il database di standby.
      ADD DATABASE standby unique database name AS CONNECT IDENTIFIER IS standby unique database name MAINTAINED AS PHYSICAL;
      Ad esempio:
      ADD DATABASE dbuks_r2j_ams AS CONNECT IDENTIFIER IS dbuks_r2j_ams MAINTAINED AS PHYSICAL; 
      
      L'output deve essere simile al seguente:
      Database "dbuks_r2j_ams" added
  4. Abilitare la configurazione:
    enable configuration;
  5. Visualizzare la configurazione:
    1. Immettere:
      show configuration; 

      Nota

      Se si riceve un'AVVERTENZA che indica che non è stato possibile determinare il ritardo di applicazione, eseguire il login al database primario tramite sqlplus ed eseguire alcuni switch di log.
      L'output deve essere simile al seguente:
      Configuration - dbuks_898_lhr_dbuks_r2j_ams 
      Protection Mode: MaxPerformance 
      Members: 
      dbuks_898_lhr - Primary database 
      dbuks_r2j_ams - Physical standby database 
      Fast-Start Failover: Disabled 
      Configuration Status: 
      SUCCESS (status updated 36 seconds ago)
    2. Visualizzare la configurazione per il database primario (in questo esempio, dbuks_898_lhr):
      show database dbuks_898_lhr 
      Verrà visualizzata una risposta simile alla seguente:
      Database - dbuks_898_lhr 
      Role: PRIMARY 
      Intended State: TRANSPORT-ON 
      Instance(s): 
      dbuks 
      Database Status: 
      SUCCESS
    3. Visualizzare la configurazione per il database di standby (in questo esempio, dbuks_r2j_ams):
      show database dbuks_r2j_ams 
      Verrà visualizzata una risposta simile alla seguente:
      Database - dbuks_r2j_ams 
      Role: PHYSICAL STANDBY 
      Intended State: APPLY-ON 
      Transport Lag: 0 seconds (computed 1 second ago) 
      Apply Lag: 0 seconds (computed 0 seconds ago) 
      Average Apply Rate: 59.00 KByte/s 
      Real Time Query: ON 
      Instance(s): 
      dbuks 
      Database Status: 
      SUCCESS

Conferma la replica

Il database di standby dovrebbe ora iniziare ad applicare il redo ricevuto dal database primario.

Usare il prompt dei comandi SQL> per le seguenti operazioni:
  1. Controllare il processo MRP:
    1. Immettere:
      select sysdate, process, status, thread#, sequence#, block# 
      from v$managed_standby 
      where status!='IDLE';
      L'output deve essere simile al seguente:
      SYSDATE    PROCESS     STATUS         THREAD#      SEQUENCE#    BLOCK# 
      ---------  ---------  ------------   ----------   ----------   ---------- 
      10-JUL-23  DGRD       ALLOCATED          0            0            0 
      10-JUL-23  ARCH       CONNECTED          0            0            0 
      10-JUL-23  DGRD       ALLOCATED          0            0            0 
      10-JUL-23  ARCH       CONNECTED          0            0            0 
      10-JUL-23  ARCH       CONNECTED          0            0            0 
      10-JUL-23  ARCH       CONNECTED          0            0            0 
      10-JUL-23  RFS        RECEIVING          1           417          2413 
      10-JUL-23  MRP0       APPLYING_LOG       1           417          2412
    2. Visualizzare i processi Data Guard.
      select distinct process from gv$managed_standby;
      L'output deve essere simile al seguente:
      PROCESS 
      --------- 
      DGRD 
      RFS 
      MRP0 
      ARCH
    3. Il database di standby ha ora iniziato ad applicare i redo log. Eseguire alcuni switch di log nel database primario e confermare di nuovo nel database di standby:
      select sysdate, process, status, thread#, sequence#, block#from v$managed_standbywhere status!='IDLE';
      L'output deve essere simile al seguente:
      SYSDATE      PROCESS    STATUS          THREAD#     SEQUENCE#     BLOCK#
      ---------   ---------   ------------   ----------   ----------   ----------
      04-JUL-23   DGRD        ALLOCATED           0           0           0
      04-JUL-23   ARCH        CONNECTED           0           0           0
      04-JUL-23   DGRD        ALLOCATED           0           0           0
      04-JUL-23   ARCH        CLOSING             1          253          1
      04-JUL-23   ARCH        CONNECTED           0           0           0
      04-JUL-23   ARCH        CLOSING             1          252          1
      04-JUL-23   MRP0        APPLYING_LOG        1          254          17
      04-JUL-23   RFS         RECEIVING           1          254          18
    4. Archiviare la lista di log nel database primario:
      archive log list
      L'output deve essere simile al seguente:
      Database log mode Archive Mode 
      Automatic archival Enabled 
      Archive destination USE_DB_RECOVERY_FILE_DEST 
      Oldest online log sequence 415 
      Next log sequence to archive 417 
      Current log sequence 417 
      Quindi immettere:
      alter system switch logfile;
      Dovresti ricevere questa risposta:
      System altered.
      Immettere:
       / 
      Dovresti vedere:
      System altered.
      A questo punto, archiviare l'elenco di log:
      archive log list 
      Dovresti ricevere questa risposta:
      Database log mode Archive Mode 
      Automatic archival Enabled 
      Archive destination USE_DB_RECOVERY_FILE_DEST 
      Oldest online log sequence 417 
      Next log sequence to archive 419 
      Current log sequence 419
    5. Archiviare la lista di log nel database di standby; immettere:
      select sysdate, process, status, thread#, sequence#, block# 
      from v$managed_standby 
      where status!='IDLE';

      Dovresti ricevere questa risposta:

      SYSDATE      PROCESS     STATUS        THREAD#      SEQUENCE#      BLOCK#
      ---------    ---------  ------------ ----------    ----------     ----------
      10-JUL-23    DGRD       ALLOCATED         0             0             0
      10-JUL-23    ARCH      CONNECTED          0             0             0
      10-JUL-23    DGRD      ALLOCATED          0             0             0
      10-JUL-23    ARCH      CLOSING            1            418            1
      10-JUL-23    ARCH      CONNECTED          0             0             0
      10-JUL-23    ARCH      CLOSING            1            417          2048
      10-JUL-23    RFS       RECEIVING          1            419           59
      10-JUL-23    MRP0      APPLYING_LOG       1            419           58
  2. Abilitare il flashback sul database in standby:
    1. Immettere:
      ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel; 
      SQL> alter database flashback on;
      Dopo ogni comando, dovresti vedere:
      Database altered
    2. Verificare che il flashback del database sia abilitato (attivo).
      select flashback_on from v$database;
      L'output deve essere simile al seguente:
      FLASHBACK_ON 
      ------------------ 
      YES 
    3. Quindi immettere:
      recover managed standby database using current logfile disconnect from session;
      Dovresti vedere:
      Media recovery complete.
  3. Visualizzare i dettagli del database:
    select FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, DATAGUARD_BROKER, PROTECTION_MODE from v$database ;
    L'output deve essere simile al seguente:
    FORCE_LOGGING   FLASHBACK_ON   OPEN_MODE   DATABASE_ROLE     DATAGUARD_BROKER   PROTECTION_MODE 
    ---------------------------------------------------------- --------------- ----- ----------------------- ----------------------------- 
    YES             YES            MOUNTED     PHYSICAL STANDBY  ENABLED          MAXIMUM PERFORMANCE
  4. Utilizzare la utility Server Control (srvctl) per arrestare il database di standby:
    srvctl stop database -d db_unique_name
    L'output deve essere simile al seguente:
    srvctl stop database -d dbuks_r2j_ams
  5. Utilizzare la utility Server Control per avviare il database in standby.
    srvctl start database -d db_unique_name
    L'output deve essere simile al seguente:
    srvctl start database -d dbuks_r2j_ams
  6. Visualizzare i dettagli del database:
    select FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, DATAGUARD_BROKER, PROTECTION_MODE from v$database ;
    L'output deve essere simile al seguente:
     FORCE_LOGGING   FLASHBACK_ON   OPEN_MODE               DATABASE_ROLE      DATAGUARD_BROKER     PROTECTION_MODE 
    -----------------------------------------------------------------------   -------------------- ----------------------- 
    YES             YES             READ ONLY WITH APPLY   PHYSICAL STANDBY   ENABLED               MAXIMUM PERFORMANCE
  7. Ora è possibile assegnare altri switch di file di log dal database primario e assicurarsi che il redo venga applicato al database in standby.
  8. Ricreare il file di log in sospeso esistente con il nome univoco principale. Immettere i seguenti comandi:
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel; 
    alter database drop logfile group 1;
    alter database add standby logfile thread 1 group 1 ('+RECO') size 1073741824;
    
    Dopo ogni comando, dovresti vedere:
    Database altered.
    Infine, inserire:
    recover managed standby database using current logfile disconnect from session; 
    Dovresti vedere:
    Media recovery complete.