Preparar para Implantar a Topologia

Para que o Data Guard funcione, os dois bancos de dados nas diferentes regiões precisam se comunicar. Portanto, você precisa configurar uma conexão de pareamento remoto entre as duas regiões no OCI por meio de seus respectivos DRGs. Os DRGs são criados pelo OracleDB para a configuração do Azure; portanto, você só precisa estabelecer uma conexão de pareamento remoto entre os DRGs existentes.

Configurar a Rede

Para configurar sua rede, execute as seguintes etapas:

  1. Configure a conectividade de rede para a VM do Azure e OracleDB para sistemas de banco de dados do Azure.
    • Certifique-se de ter a chave privada ssh do sistema Oracle DB disponível na VM do Azure.
    • Teste a conectividade entre as VMs do Azure e o OracleDB para sistemas de BD do Azure.
  2. Configure a rede para sistemas de banco de dados no OCI.
    1. Primeiro, navegue até os detalhes da VCN do Sistema de BD na região 1, selecione Anexos do Gateway de Roteamento Dinâmico e, em seguida, o nome do DRG para carregar os detalhes do DRG na região 1. Em seguida, selecione Anexos da Conexão de Pareamento Remoto. Em uma segunda janela do navegador, faça exatamente o mesmo para a região 2.
    2. Em seguida, em ambas as regiões, selecione Criar Conexão de Pareamento Remoto para criar uma RPC.
    3. Quando ambas as RPCs tiverem sido criadas, selecione o nome da RPC na região 1 e copie o OCID.
    4. Na região 2, selecione o nome da RPC e selecione Estabelecer Conexão. Selecione o nome correto da região 1 (na qual estamos nos conectando) e forneça o OCID da RPC na região 1, que você copiou na etapa anterior. Alguns momentos depois de estabelecer a conexão, o Status do Par deve ser "Pareado".
    5. Em seguida, permita o tráfego entre as VCNs nas duas regiões. Navegue até os detalhes da VCN e selecione a lista de segurança padrão. Selecione Adicionar Regras de Entrada para permitir o tráfego da faixa CIDR da VCN oposta.
    6. Por fim, conecte-se das VMs no Azure aos respectivos Sistemas de BD Base do OCI. Edite o arquivo tnsnames.ora para que os Sistemas de BD Base tenham uma conexão com o outro banco de dados.
    7. Confirme se tnsping está funcionando bem de ambos os sistemas de BD para o banco de dados oposto.

Configurar a Configuração de DR do Oracle Database for Azure

Para configurar o banco de dados Oracle para a configuração de DR do Azure, prepare um banco de dados principal e um secundário, conforme descrito a seguir.

Observação:

Clique em Copiar para salvar o exemplo de comando na área de transferência para colar na linha de comando. Certifique-se de substituir qualquer variables por valores específicos para sua implementação.

Preparar o Banco de Dados Principal

Para preparar o banco de dados principal, você precisa configurar listeners estáticos, atualizar o arquivo tnsnames.ora e configurar várias definições e parâmetros de banco de dados.

  1. No prompt SQL>, para verificar as seguintes informações:
    • Verificar se o flashback do banco de dados está ativado
    • Verifique se o registro em log do banco de dados está ativado
    • Verificar se o banco de dados está no modo de log de arquivamento
    • Verificar se o banco de dados está no modo aberto
    • Verificar se o banco de dados está na atribuição de banco de dados principal
    execute este comando:
    select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
    A saída deve ser semelhante a esta:
    LOG_MODE              FORCE_LOGGING               FLASHBACK_ON               OPEN_MODE                 DATABASE_ROLE
    ----------------      ------------------------   ----------------------     --------------------        -----------------------
    ARCHIVELOG            YES                         YES                        READ WRITE                  PRIMARY
  2. Verifique se o gerenciamento automático de arquivos stand-by está definido como automático executando este comando:
    show parameter standby_file_management
    A saída deve ser semelhante a esta:
    NAME                                          TYPE          VALUE
    ------------------------------------          -----------  ----------
    standby_file_management                       string       AUTO
  3. Defina os arquivos de configuração do broker:
    show parameter dg_broker_config_file1;
    A saída deve ser semelhante a esta:
    NAME                                          TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file1                        string        /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
    

    Em seguida, insira este comando:

    show parameter dg_broker_config_file2;
    A saída deve ser semelhante a esta:
    
    NAME                                                     TYPE          VALUE
    ------------------------------------         ----------- ------------------------------
    dg_broker_config_file2                             string          /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
  4. Ative o Data Guard broker:
    show parameter dg_broker_start
    A saída deve ser semelhante a esta:
    NAME                                             TYPE         VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean      FALSE
    Em seguida, insira estes comandos:
    alter system set dg_broker_start=true scope=both;
    
    show parameter dg_broker_start
    A saída deve ser semelhante a esta:
    NAME                                             TYPE        VALUE
    ------------------------------------            ----------- --------------
    dg_broker_start                                  boolean     TRUE
  5. No prompt de comando (por exemplo, [oracle@ldbuksdr ]$), observe o status do listerner:
    lsnrctl status
  6. Observe os detalhes da configuração do banco de dados:
    srvctl config database -d db_unique_name
  7. Observe as entradas tns:
    cat $ORACLE_HOME/network/admin/tnsnames.ora
  8. Saída sqlnet.ora da observação:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Copie o Arquivo de Senha para o sistema de banco de dados stand-by no local /tmp informando estes comandos:
    cd .ssh
    scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid   
  10. Localize e copie os arquivos da wallet para o sistema de banco de dados stand-by no local /tmp:
    select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
    A saída deve ser semelhante a esta:
    CON_ID         WRL_PARAMETER                                                                      STATUS       WALLET_TYPE
    ----------    ------------------------------------------------------------------------------     ------------  ------------ ----------------------------
    1              /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/                             OPEN          AUTOLOGIN
    2                                                                                                 OPEN          AUTOLOGIN
    3                                                                                                 OPEN          AUTOLOGIN
    
    Insira:
    cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde
    ls -ltra
    
    Você deverá ver algo assim:
    -rw------- 1 oracle asmadmin  5467 Jun 19 18:59 ewallet.p12
    -rw------- 1 oracle asmadmin  5512 Jun 19 18:59 cwallet.sso
    
    Em seguida, digite estes comandos (em que db_unique_name é o nome exclusivo do banco de dados da wallet):
    
    [oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
    cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
    chmod 777 /tmp/ewallet.p12
    chmod 777 /tmp/cwallet.sso
    scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
    scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
  11. Configure o listener estático.
    É necessário um listener estático para a instanciação inicial do banco de dados stand-by. Quando um banco de dados está inativo, um listener estático permite uma conexão remota com uma instância, permitindo que você use o Oracle Data Guard para iniciar a instância. Certifique-se de que não haja quebras de linha ou espaços em branco nos arquivos listener.ora.

    No banco de dados principal, anexe o arquivo SID_LIST_LISTENER no arquivo listener.ora para incluir o nome exclusivo do banco de dados, o Oracle Home e o Oracle System Identifier (SID) do banco de dados principal.

    lsnrctl status 
    vi listener.ora 
    Adicione a seguinte entrada a listener.ora, em que:
    • DB_UNIQUE_NAME é o nome exclusivo do banco de dados principal.
    • ORACLE_HOME é o Oracle home local do banco de dados principal.
    • ORACLE SID é o SID do banco de dados principal.
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
    (SID_NAME = ORACLE SID)))
    A entrada deve ser semelhante à seguinte (suas entradas para GLOBAL_DBNAME, ORACLE_HOME e SID_NAME variarão):
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)
    (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
    Recarregue o listener e verifique seu status.
    lsnrctl reload
    lsnrctl status
  12. Configure as entradas tns.
    Você precisa de entradas para cada banco de dados nos arquivos tnsnames.ora principal e stand-by para garantir o transporte de redo adequado. Os endereços IP são usados, pois não há DNS entre os bancos de dados para resolver nomes de servidor para endereços IP. Use o exemplo a seguir, substituindo valores relevantes para a configuração. As configurações do Oracle Real Application Clusters (Oracle RAC) não podem resolver o nome do listener de varredura; portanto, você deve usar uma lista de endereços para definir todos os nós. Esses serão adicionados posteriormente, a instância inicial deve listar apenas um endereço IP nas entradas tns para garantir que o Oracle Recovery Manager (RMAN) esteja sempre se conectando aos mesmos nós.
    [oracle@~]$ cd $ORACLE_HOME/network/admin 
    [oracle@~]$ vi tnsnames.ora
    A entrada no arquivo tnsnames.ora deve ser semelhante à seguinte:
    DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))

Preparar o Banco de Dados Stand-by

Em seguida, examine o banco de dados stand-by.

  1. Exclua manualmente o banco de dados criado pelo conjunto de ferramentas do Oracle Database for Azure.
    Antes de excluir o banco de dados stand-by, salve o db_unique_name atual e anote o local da wallet, pois ele será usado posteriormente. A consulta a seguir fornece detalhes do local da wallet.
    1. No prompt de comando sqlplus, insira::
      select * from V$ENCRYPTION_WALLET; 
    2. Em seguida, prepare o script rm_dbfiles.sql para remover arquivos relacionados ao banco de dados:
      srvctl config database -d db_unique_name
    3. Execute o seguinte script para fazer shutdown do banco de dados que você está criando como stand-by e remover os arquivos do banco de dados:
      vi rm_dbfiles.sql 
      set heading off linesize 999 pagesize 0 feedback off trimspool on 
      spool /home/oracle/demo/files.lst 
      select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; 
      spool off 
      create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; 
      exit
      
    4. Em seguida, vá para o prompt sqlplus como DBA do sistema:
      sqlplus "/ as sysdba"
      E execute estes comandos:
      @rm_dbfiles.sql
      exit
    5. Em seguida, conceda permissão para ler, gravar e executar (em que db_unique_name é o nome exclusivo do banco de dados afetado):
      chmod 777 files.lst
      srvctl stop database -d db_unique_name
    6. Salvar e executar o script:
      ./files.lst 
    Todos os arquivos do banco de dados inicial foram removidos agora.
  2. Copie o arquivo de senha e os arquivos da wallet recebidos em /tmp do banco de dados principal para os respectivos locais no sistema de banco de dados stand-by.
    1. Copie o arquivo de senha do banco de dados e os arquivos da wallet recebidos em /tmp do principal para os respectivos locais no sistema de banco de dados stand-by (em que orapwsid é a senha do SID):
      sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid 
      Por exemplo:
      sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      A saída deve ser semelhante à seguinte:
      
      -rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    2. Verifique se a saída md5sum do arquivo de senha corresponde ao Primário e Stand-by (em que orapwsid é a senha do SID):
      md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid 
      A saída do banco de dados principal deve ser semelhante à seguinte (em que orapwsid é orapwdbuks):
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      
      E para o banco de dados stand-by:
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    3. Remova os arquivos da wallet existentes e copie os arquivos da wallet de /tmp para o local de TDE (em que db_unique_name é o nome exclusivo do banco de dados afetado):
      [oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
      rm ewallet.p12 cwallet.sso
      sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
      chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
      sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
  3. Configurar listener estático:
    1. No banco de dados stand-by no OCI, anexe o arquivo SID_LIST_LISTENER para incluir o nome exclusivo do banco de dados, o Oracle Home do OCI e o Oracle System Identifier (SID) do banco de dados principal.
      lsnrctl status
      vi listener.ora
    2. Adicione a seguinte entrada ao arquivo listener.ora, em que:
      • DB_UNIQUE_NAME é o nome do banco de dados principal.
      • ORACLE_HOME é o Oracle home local do banco de dados principal.
      • ORACLE SID é o SID do banco de dados principal.
       SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
      (SID_NAME = ORACLE_SID)))
      Por exemplo, a entrada deve ser semelhante à seguinte:
      SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com)
      (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks))) 
    3. Recarregue o listener e verifique o status:
      lsnrctl reload 
      lsnrctl status
  4. Configure as entradas tns:
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    A entrada no arquivo tnsnames.ora deve ser semelhante à seguinte:
     DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) 
    
    DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)
    (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))