Crie a base de dados de reserva do Data Guard

Depois de a base de dados principal estar preparada para o Data Guard, está pronta para ser duplicada para o site de standby. O guia seguinte usa a duplicação ativa para criar uma cópia consistente da base de dados.

Como lembrete, os seguintes exemplos 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 em espera

Configure a conetividade da base de dados

Inicie sessão em cada servidor da Bare Metal Solution na localização de espera e modifique o ficheiro $ORACLE_HOME/network/admin/tsnames.ora para atualizar a configuração do serviço de rede:

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)
    )
  )

Configure um ouvinte temporário

Para evitar reiniciar o ouvinte usado para outras ligações à base de dados, a duplicação da base de dados é realizada através de um ouvinte temporário. Este exemplo usa a porta 1523, mas pode usar qualquer porta que esteja aberta para comunicação entre os clusters. Elimina este ouvinte temporário após a duplicação da base de dados.

  1. Inicie sessão no primeiro servidor da Solução Bare Metal na localização de espera a usar durante o processo de duplicação da base de dados. Modifique o ficheiro $ORACLE_HOME/network/admin/listener.ora para atualizar a configuração do serviço de rede:

    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. Inicie o ouvinte temporário:

    lsnrctl start LISTENER_DBDG_SITE2
    

Prepare a base de dados de reserva

  1. Cada instância da base de dados requer um diretório para armazenar registos de auditoria. Crie o diretório do ficheiro de auditoria em cada servidor do Bare Metal Solution na localização da base de dados em espera:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. Modifique o $ORACLE_HOME/dbs/initDBDG_SITE21.ora ficheiro que foi copiado anteriormente para o servidor de base de dados em espera:

    1. Defina o db_unique_name para o novo nome da base de dados de reserva.
    2. Modifique todos os parâmetros específicos da instância para refletir os nomes das instâncias da base de dados em espera. Seguem-se alguns exemplos:
      • instance_number
      • thread
      • undo_tablespace
    3. Defina o parâmetro audit_file_dest para usar o diretório criado no passo anterior.
    4. Se os grupos de discos do ASM em cada localização usarem nomes diferentes, modifique os parâmetros db_file_name_convert e log_file_name_convert para corresponderem às novas localizações dos ficheiros.
    5. Comente o parâmetro control_files.

    O exemplo seguinte mostra um ficheiro de parâmetros da base de dados atualizado com modificações através dos exemplos fornecidos neste guia. Tenha em atenção que o ficheiro de parâmetros contém parâmetros adicionais específicos da configuração da base de dados. Apenas são apresentados os parâmetros que requerem modificação para o modo de espera:

    *.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. No ficheiro /etc/oratab, adicione uma entrada para que o comando oraenv possa definir variáveis de ambiente para a base de dados em espera:

    DBDG_SITE21:ORACLE_HOME:N
    

Crie a base de dados de reserva

  1. Defina a variável de ambiente ORACLE_SID para poder estabelecer ligação à base de dados em espera:

    source oraenv <<< "DBDG_SITE21"
    

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

  2. Antes de duplicar a base de dados principal, tem de iniciar manualmente a instância de espera num nó. Inicie sessão no primeiro servidor da Solução Bare Metal na localização de espera, inicie o SQL*Plus e, em seguida, inicie a base de dados de espera em nomount mode com o seguinte comando: pfile

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

    Se for bem-sucedido, deve receber uma resposta semelhante ao seguinte exemplo:

    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. Saia do SQL*Plus depois de iniciar a instância:

    EXIT;
    
  4. Valide a conetividade ao serviço de base de dados em espera. Em cada servidor da Bare Metal Solution na localização da base de dados principal, tente estabelecer ligação à instância de reserva através do SQL*Plus. Introduza manualmente a palavra-passe de início de sessão remoto do SYS para estabelecer ligação à instância com êxito.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Se for bem-sucedido, deve receber um comando SQL*Plus padrão, onde pode verificar os parâmetros da instância:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Deve receber uma resposta semelhante à seguinte:

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. Saia do SQL*Plus depois de verificar o parâmetro DB_UNIQUE_NAME:

    EXIT;
    
  6. Associe-se ao Recovery Manager e, em seguida, execute o comando duplicate para duplicar a base de dados em espera a partir da base de dados principal ativa:

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

    Se for bem-sucedido, após o processamento, deve receber uma mensagem semelhante ao exemplo seguinte:

    Finished Duplicate Db at ...
    
  7. Saia do Recovery Manager:

    EXIT;
    

Finalize a criação da base de dados de reserva

  1. Durante a duplicação da base de dados, o ASM cria novos ficheiros de controlo para a base de dados de espera. Estabeleça ligação à nova instância de espera e obtenha os nomes dos novos ficheiros de controlo. O exemplo seguinte mostra dois ficheiros de controlo armazenados nos grupos de discos +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';
    

    Os nomes dos ficheiros de controlo são apresentados no campo "Valor":

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Registe os nomes dos ficheiros de controlo do passo anterior e substitua todas as entradas do parâmetro control_files em $ORACLE_HOME/dbs/initDBDG_SITE21.ora pelos novos valores. Se existirem vários ficheiros de controlo, encapsule cada um deles entre aspas simples, separados por uma vírgula:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Estabeleça ligação à base de dados em espera com o SQL*Plus e crie um novo spfile a partir do pfile modificado:

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. Copie o ficheiro de palavras-passe para o grupo de discos do ASM através do comando asmcmd:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. Encerre a instância de base de dados em modo de espera e elimine o ficheiro temporário pfile e de palavra-passe:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Pare o ouvinte temporário usado para a duplicação da base de dados no primeiro servidor da solução Bare Metal na localização da base de dados em espera:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Remova as entradas temporárias no ficheiro $ORACLE_HOME/network/admin/listener.ora no primeiro servidor do Bare Metal Solution na localização da base de dados em modo de espera.

  8. Adicione a nova base de dados e instâncias de reserva ao registo do cluster através do 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. Inicie a base de dados em espera com o comando srvctl:

    srvctl start database -db DBDG_SITE2
    

Passos seguintes

Em seguida, configure e ative o agente do Data Guard.