Prepare a base de dados principal do Data Guard

O Data Guard requer uma base de dados principal e, pelo menos, uma base de dados em espera para funcionar. Antes de configurar o Data Guard na Solução Bare Metal, crie a base de dados principal.

Os exemplos seguintes são usados ao longo deste guia:

Nome exclusivo da base de dados Nomes de anfitrião do servidor Nomes das instâncias do RAC Função
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Primary
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Modo de espera

Os servidores da Solução Bare Metal que executam o Oracle neste guia estão configurados com as seguintes variáveis de ambiente:

Nome da variável de ambiente Valor
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

Pode ter de modificar os caminhos das variáveis de ambiente consoante a sua configuração.

Configure a base de dados principal

  1. Inicie sessão no primeiro servidor da Bare Metal Solution que aloja a base de dados principal.

  2. No ficheiro /etc/oratab, adicione uma entrada para que o comando oraenv possa definir variáveis de ambiente para a base de dados principal. Modifique o nome da instância para corresponder à instância em execução em cada nó e especifique o caminho completo para o diretório base da base de dados Oracle:

    DBDG_SITE11:ORACLE_HOME:N
    
  3. Defina a variável de ambiente ORACLE_SID para poder estabelecer ligação à base de dados principal:

    source oraenv <<< "DBDG_SITE11"
    

    Deve receber a resposta The Oracle base has been set to /apps/oracle/oracle_base.

Configure o registo da base de dados e ative a base de dados de reversão

  1. Inicie o SQL*Plus e, de seguida, ative o force logging para que os nologging espaços de tabelas adicionados à base de dados sejam registados:

    sqlplus / as sysdba
    
    ALTER DATABASE FORCE LOGGING;
    
  2. Verifique se archivelog mode e flashback database estão ativados:

    ARCHIVE LOG LIST;
    SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
    

    Se archivelog mode e flashback database estiverem desativados, ative-os com os seguintes comandos SQL:

    1. Pare a base de dados agrupada para poder fazer as alterações necessárias:

       srvctl stop database -d 
      
    2. Execute os comandos SQL necessários para ativar archivelog mode e flashback database:

       STARTUP MOUNT;
       ALTER DATABASE ARCHIVELOG;
       ALTER DATABASE FLASHBACK ON;
       ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH;
       ALTER DATABASE OPEN;
       SHUTDOWN IMMEDIATE;
       EXIT;
      
    3. Inicie novamente a base de dados agrupada:

       srvctl start database -d DBDG_SITE1
      

Prepare a base de dados para o Data Guard

  1. Inicie sessão no primeiro servidor da Bare Metal Solution que aloja a base de dados principal e defina a variável de ambiente ORACLE_SID para poder estabelecer ligação à base de dados principal:

    source oraenv <<< "DBDG_SITE11"
    

    Deve receber a resposta The Oracle base has been set to /apps/oracle/oracle_base.

  2. Inicie o SQL*Plus e, em seguida, modifique os parâmetros de inicialização da base de dados necessários para a configuração e os serviços do Data Guard:

    sqlplus / as sysdba
    
    ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
    
  3. Verifique a existência de registos de refazer em espera na base de dados. Cada thread tem de ter mais um grupo de registos de refazimento em espera do que o número de grupos de registos de refazimento online.

    SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD#
    UNION
    SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
    

    O exemplo seguinte tem quatro registos de refazer online por thread e não tem grupos de registos de refazer em espera criados. Como existem quatro grupos de registo de refazimento online, têm de ser criados cinco grupos de registo de refazimento em espera para cada thread:

    Logfile groups in thread 1: 4
    Logfile groups in thread 2: 4
    
  4. Se existirem grupos de registos de refazer em espera suficientes, ignore este passo. Os grupos de registos de refazimento em espera têm de ter o mesmo tamanho que cada grupo de registos de refazimento online. Crie o número necessário de grupos de registos de refazimento em espera com o seguinte código PL/SQL:

    SET FEEDBACK OFF
    SET SERVEROUTPUT ON
    DECLARE
      CURSOR cur_thread IS
        SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#;
      standbylog_count NUMBER := 0;
      standbylog_group NUMBER := 0;
      standbylog_size NUMBER := 0;
      last_group_number NUMBER;
      sqlstmt VARCHAR2(200);
    BEGIN
      SELECT MAX(GROUP#), MAX(BYTES)
    INTO last_group_number, standbylog_size
    FROM V$LOG;
      standbylog_group := last_group_number + 1;
      FOR rec_thread IN cur_thread LOOP
    standbylog_count := rec_thread.count + 1;
    FOR i IN 1..standbylog_count LOOP
      sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';';
      DBMS_OUTPUT.PUT_LINE( sqlstmt);
      standbylog_group := standbylog_group + 1;
    END LOOP;
      END LOOP;
    END;
    /
    SET FEEDBACK ON
    

    O exemplo de saída seguinte indica-lhe que crie cinco grupos de registos de refazimento em espera para cada um dos dois threads:

    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP  9 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
    
  5. Verifique se os registos de refazer em espera estão configurados corretamente para a sua configuração:

    SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD#
    UNION
    SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
    

    O resultado seguinte tem quatro grupos de registos de refazimento online por thread e cinco grupos de registos de refazimento em espera por thread:

    Logfile groups in thread 1: 4
    Logfile groups in thread 2: 4
    Standby logfile groups in thread 1: 5
    Standby logfile groups in thread 2: 5
    
  6. Saia do SQL*Plus:

    EXIT;
    

Copie os ficheiros de parâmetros e palavras-passe da base de dados para os servidores de espera

  1. Crie um ficheiro de parâmetros da base de dados e copie-o para o servidor de espera:

    1. Crie uma pasta para o ficheiro de parâmetros da base de dados em espera (pfile):

      mkdir /home/oracle/backup
      
    2. Inicie o SQL*Plus e, de seguida, crie a base de dados de reserva pfile:

      sqlplus / as sysdba
      
      CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
      
    3. Saia do SQL*Plus e, em seguida, copie o ficheiro pfile para o primeiro servidor da Solução Bare Metal na localização de espera:

      EXIT;
      
      scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
      
  2. Certifique-se de que a palavra-passe de início de sessão remoto do SYS está guardada em segurança. Se não souber a palavra-passe, reponha-a.

  3. Copie o ficheiro de palavras-passe para o cluster de espera:

    1. Obtenha a localização do ficheiro de palavras-passe através do comando srvctl:

      srvctl config database -db DBDG_SITE1 | grep -i password
      

      O resultado seguinte mostra a localização de um arquivo de ficheiros de palavras-passe no ASM:

        Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
      
    2. Crie uma cópia temporária do ficheiro de palavras-passe no sistema de ficheiros local através do comando asmcmd:

      asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
      
    3. Copie o ficheiro de palavra-passe para o primeiro servidor da Bare Metal Solution na localização de espera e, de seguida, elimine a cópia temporária do servidor da Bare Metal Solution na localização principal:

      scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21
      rm /tmp/orapwDBDG_SITE21
      

Configure a conetividade da base de dados

Edite o ficheiro $ORACLE_HOME/network/admin/tsnames.ora em cada servidor da Bare Metal Solution na localização da base de dados principal para atualizar a configuração do serviço de rede. Existem três entradas no ficheiro: uma para cada base de dados e uma entrada temporária usada durante a duplicação da base de dados que vai eliminar mais tarde:

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

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

DBDG_SITE2_FOR_DUPLICATION =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
      (CONNECT_DATA =
          (SERVER = DEDICATED)
          (INSTANCE_NAME = DBDG_SITE21) (UR=A)
      )
  )

A base de dados principal está agora pronta para ser usada numa configuração do Data Guard.

Passos seguintes

Em seguida, crie a base de dados em espera do Data Guard.