Anteriormente, aprendemos como configurar a replicação do Zero Data Loss, unilateralmente, de um upstream para um downstream, formando um ambiente de alta disponibilidade.
Neste artigo, utilizaremos a mesma configuração ja realizada antes, e adicionaremos apenas algumas configurações a mais, para que o downstream RAHA2, também seja um upstream, enviando backups para o RAHA1, que agora também será um downstream.
Usaremos 1 usuario vpc adicional, repuser_from_raha2, que será responsável pela replicação dos backups, entre os RAs. Chamaremos os Recovery Appliances de RAHA1 e RAHA2:
- repuser_from_raha2
- RAHA1
- RAHA2
Se ele nao existir ainda no RAHA1, crie o usuario VPC que será usado pelo replication server para enviar backups do RAHA2 Recovery Appliance para o RAHADR1 Recovery Appliance.
# racli add vpc_user –user_name repuser_from_raha2
repuser_from_raha2 New Password: repuser_from_raha2_password
Sun Mar 25 08:35:01 2018: Start: Add vpc user repuser_from_raha2.
Sun Mar 25 08:35:01 2018: Add vpc user repuser_from_raha2 successfully.
Sun Mar 25 08:35:01 2018: End: Add vpc user repuser_from_raha2.
Passo 2: Configure o replication server que será usado para replicar os backups dos bancos de dados do RAHA2 para RAHA1
Se o replication server nao foi criado, crie o replication server entre RAHA2 e RAHA1. Os passos a seguir, usa a mesma operação e nomeação convencional conforme os passos equivalentes executado, usando o EM quando não há rede de replicação dedicada.
Passo 2a: Crie o auto-login wallet
Se a replication wallet não existir no RAHA2, crie a replication wallet que aponta para o RAHA1.
$ mkstore -wrl file:/dbfs_repdbfs/REPLICATION -createALO
Passo 2b: Adicione credenciais a wallet
No RAHA2, adicione as credenciais para logar no RAHA1.
$ mkstore -wrl file:/dbfs_repdbfs/REPLICATION -createCredential ra1repl-scan.<domain>:<PORT>/raha1 repuser_from_raha2 repuser_from_raha2_password
Passo 2c: Crie o RA replication server.
No RAHA2, crie a RA replication server.
$ sqlplus rasys/<RASYS_PASSWORD>
SQL> exec dbms_ra.create_replication_server( replication_server_name => ‘RAHA1_REP’, sbt_so_name=> ‘libra.so’, max_streams => 8, catalog_user_name => ‘RASYS’,
wallet_alias => ‘ra1repl-scan.<domain>:<PORT>/raha1’, wallet_path => ‘file:/dbfs_repdbfs/REPLICATION’);
PL/SQL procedure successfully completed.
Passo 3: Configure upstream e downstream Recovery Appliances.
Passo 3a: Crie a politica de proteção para o protected database no downstream Recovery Appliance e adicionei o banco de dados.
No RAHA1, crie uma politica de replicação que será usado no banco de dados CDB122HA. (Se um ja não existir). Não é necessário um unico nome da politica de proteção, mas a politica de proteção não será adicionada para qualquer replication server configurado entre RAHA1 e RAHA2 (Se um existir).
Nota: Porque o RAHA1 Recovery Appliance não estará normalmente aceitando redo do banco de dados CDB122HA, o parâmetro unprotected data window é configurado para 1.25 dias para contornar alertas falsos vindo a ocorrer, se o banco de dados CDB122HA estiver inativo.
$ sqlplus rasys/<RASYS_PASSWORD>
SQL> exec dbms_ra.create_protection_policy( protection_policy_name => ‘cdb122ha_PP’ , storage_location_name => ‘DELTA’ , recovery_window_goal => numtodsinterval(3,’DAY’) , unprotected_window => numtodsinterval(1.25,’DAY’), allow_backup_deletion => ‘NO’, store_and_forward => ‘YES’);
PL/SQL procedure successfully completed.
SQL> exec dbms_ra.add_db(db_unique_name => ‘cdb122ha’, protection_policy_name => ‘cdb122ha_PP’, reserved_space => ‘1T’);
PL/SQL procedure successfully completed.
SQL> exec dbms_ra.grant_db_access(username => ‘repuser_from_raha2‘, db_unique_name => ‘cdb122ha’);
PL/SQL procedure successfully completed.
Passo 3b: Crie a politica de proteção para os protected databases no upstream Recovery Appliance e adicione o banco de dados.
No RAHA1, crie a politica de proteção que será usada pelo banco de dados CDB122HA (se um já não existir). Não há necessidade de um nome de politica de proteção unico, mas a politica de proteção será adicionado para o replication server configurado entre RAHA1 e RAHA2, então todos os banco de dados na politica de proteção serão replicados.
$ sqlplus rasys/<RASYS_PASSWORD>
SQL> exec dbms_ra.create_protection_policy( protection_policy_name => ‘cdb122ha_PP’ , storage_location_name => ‘DELTA’ , recovery_window_goal => numtodsinterval(3,’DAY’) , unprotected_window => numtodsinterval(5,’MINUTE’) , allow_backup_deletion => ‘NO’);
PL/SQL procedure successfully completed.
SQL> exec dbms_ra.add_db(db_unique_name => ‘cdb122ha’, protection_policy_name => ‘cdb122ha_PP’, reserved_space => ‘1T’);
PL/SQL procedure successfully completed.
SQL> exec dbms_ra.grant_db_access(username => ‘repuser_from_raha2‘, db_unique_name => ‘cdb122ha’);
PL/SQL procedure successfully completed.
Paso 3c: Adicione a politica de proteção para o replication server que foi configurado no upstream Recovery Appliance
No RAHA2, adicione a politica de proteção para o banco de dados CDB122HA.
$ sqlplus rasys/<RASYS_PASSWORD>
SQL> exec dbms_ra.add_replication_server( replication_server_name => ‘RAHA1_REP’, protection_policy_name => ‘cdb122ha_PP’);
PL/SQL procedure successfully completed.
Ao final teremos o seguinte:
