Criar banco de dados em espera do Data Guard

Depois que o banco de dados principal for preparado para o DataGuard, ele estará pronto para ser duplicado no local de espera. O guia a seguir usa duplicação ativa para criar uma cópia consistente do banco de dados.

Lembre-se dos seguintes exemplos ao longo deste guia:

Nome exclusivo do banco de dados Nomes de host do servidor Nomes de instâncias RAC Papel
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principal
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Espera

Os servidores da Solução Bare Metal que executam o Oracle neste guia sã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

Talvez seja necessário modificar os caminhos das variáveis de ambiente, dependendo da configuração.

Configurar o banco de dados em espera

Configurar a conectividade do banco de dados

Faça login em cada servidor da Solução Bare Metal no local de espera e modifique o arquivo $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)
    )
  )

Configurar um listener temporário

Para evitar a reinicialização do listener usado em outras conexões com o banco de dados, é realizada uma duplicação usando um listener temporário. Neste exemplo, usamos a porta 1523, mas é possível usar qualquer porta aberta para comunicação entre os clusters. Você exclui esse listener temporário após a duplicação do banco de dados.

  1. Faça login no primeiro servidor da Solução Bare Metal no local de espera a ser usado durante o processo de duplicação do banco de dados. Modifique o arquivo $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 listener temporário:

    lsnrctl start LISTENER_DBDG_SITE2
    

Preparar o banco de dados em espera

  1. Cada instância de banco de dados requer um diretório para armazenar registros de auditoria. Crie o diretório do arquivo de auditoria em cada servidor da Solução Bare Metal no local do banco de dados em espera:

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

    1. Defina db_unique_name como o novo nome de banco de dados em espera.
    2. Modifique os parâmetros específicos da instância para refletir os nomes das instâncias no banco de dados em espera. Alguns exemplos são:
      • instance_number
      • thread
      • undo_tablespace
    3. Defina o parâmetro audit_file_dest para usar o diretório criado na etapa anterior.
    4. Se os grupos de discos do ASM em cada local usarem nomes diferentes, modifique os parâmetros db_file_name_convert e log_file_name_convert para corresponder aos novos locais dos arquivos.
    5. Comente o parâmetro control_files.

    No exemplo a seguir, mostramos um arquivo de parâmetro de banco de dados atualizado com modificações usando os exemplos fornecidos neste guia. O arquivo de parâmetro conterá parâmetros adicionais específicos da configuração do banco de dados. Somente os parâmetros que exigem modificação na espera são mostrados:

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

    DBDG_SITE21:ORACLE_HOME:N
    

Crie o banco de dados em espera

  1. Defina a variável de ambiente ORACLE_SID para se conectar ao banco de dados em espera:

    source oraenv <<< "DBDG_SITE21"
    

    Você receberá a resposta The Oracle base has been set to /apps/oracle/oracle_base.

  2. Antes de duplicar o banco de dados principal, inicie manualmente a instância em espera em um nó. Faça login no primeiro servidor da Solução Bare Metal no local de espera, inicie o SQL*Plus e inicie o banco de dados em espera no nomount mode usando pfile:

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

    Se for bem-sucedido, você 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. Verifique a conectividade com o serviço de banco de dados em espera. Em cada servidor da Solução Bare Metal no local do banco de dados principal, tente se conectar à instância em espera usando o SQL*Plus. Digite a senha do login remoto do SYS manualmente para se conectar à instância.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Se a conexão ocorrer, você receberá um prompt do SQL*Plus padrão, em que poderá verificar os parâmetros da instância:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Você receberá uma resposta semelhante a esta:

                    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. Conecte-se ao Gerenciador de recuperação e execute o comando duplicate para duplicar o modo de espera do banco de dados principal ativo:

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

    Se a duplicação ocorrer, após o processamento, você receberá uma mensagem semelhante a este exemplo:

    Finished Duplicate Db at ...
    
  7. Saia do Gerenciador de recuperação:

    EXIT;
    

Finalize a criação do banco de dados em espera

  1. Durante a duplicação do banco de dados, o ASM cria novos arquivos de controle para o banco de dados em espera. Conecte-se à nova instância em espera e receba os novos nomes dos arquivos de controle. O exemplo a seguir mostra dois arquivos de controle 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 arquivos de controle são mostrados no campo "Valor":

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Registre os nomes dos arquivos de controle da etapa anterior e substitua todas as entradas do parâmetro control_files em $ORACLE_HOME/dbs/initDBDG_SITE21.ora pelos novos valores. Se houver vários arquivos de controle, coloque cada um entre aspas simples, separados por vírgula:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Conecte-se ao banco 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 arquivo de senha para o grupo de discos ASM usando o 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 banco de dados em espera e exclua o pfile e o arquivo de senha temporários:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Interrompa o listener temporário usado para a duplicação do banco de dados no primeiro servidor da Solução Bare Metal no local do banco de dados em espera:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Remova as entradas temporárias no arquivo $ORACLE_HOME/network/admin/listener.ora no primeiro servidor da Solução Bare Metal no local do banco de dados em espera.

  8. Adicione o novo banco de dados e as instâncias em espera ao registro do cluster usando o 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 o banco de dados em espera usando o comando srvctl:

    srvctl start database -db DBDG_SITE2
    

Próximas etapas

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