- Implante uma topologia de recuperação de desastres multinuvem usando o Oracle Database Service for Azure
- Preparar para Implantar a Topologia
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:
- 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.
- Configure a rede para sistemas de banco de dados no OCI.
- 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.
- Em seguida, em ambas as regiões, selecione Criar Conexão de Pareamento Remoto para criar uma RPC.
- Quando ambas as RPCs tiverem sido criadas, selecione o nome da RPC na região 1 e copie o OCID.
- 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".
- 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.
- 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. - 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 qualquervariables
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.
- 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
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
- 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
- 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
- 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
- No prompt de comando (por exemplo,
[oracle@ldbuksdr ]$
), observe o status do listerner:lsnrctl status
- Observe os detalhes da configuração do banco de dados:
srvctl config database -d db_unique_name
- Observe as entradas
tns
:cat $ORACLE_HOME/network/admin/tnsnames.ora
- Saída
sqlnet.ora
da observação:cat $ORACLE_HOME/network/admin/sqlnet.ora
- 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
- 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 quedb_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.
- 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 arquivolistener.ora
para incluir o nome exclusivo do banco de dados, o Oracle Home e o Oracle System Identifier (SID) do banco de dados principal.
Adicione a seguinte entrada alsnrctl status vi listener.ora
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.
A entrada deve ser semelhante à seguinte (suas entradas paraSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE SID)))
GLOBAL_DBNAME
,ORACLE_HOME
eSID_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
- Configure as entradas
tns
.Você precisa de entradas para cada banco de dados nos arquivostnsnames.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 arquivotnsnames.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.
- 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.
- No prompt de comando sqlplus, insira::
select * from V$ENCRYPTION_WALLET;
- Em seguida, prepare o script
rm_dbfiles.sql
para remover arquivos relacionados ao banco de dados:srvctl config database -d db_unique_name
- 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
- Em seguida, vá para o prompt sqlplus como DBA do sistema:
sqlplus "/ as sysdba"
E execute estes comandos:@rm_dbfiles.sql
exit
- 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
- Salvar e executar o script:
./files.lst
- No prompt de comando sqlplus, insira::
- 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.- 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):
Por exemplo:sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid
A saída deve ser semelhante à seguinte:sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
-rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Verifique se a saída md5sum do arquivo de senha corresponde ao Primário e Stand-by (em que orapwsid é a senha do SID):
A saída do banco de dados principal deve ser semelhante à seguinte (em que orapwsid émd5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid
orapwdbuks
):
E para o banco de dados stand-by:b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Remova os arquivos da wallet existentes e copie os arquivos da wallet de
/tmp
para o local de TDE (em quedb_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
- 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):
- Configurar listener estático:
- 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
- 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.
Por exemplo, a entrada deve ser semelhante à seguinte:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE_SID)))
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)))
- Recarregue o listener e verifique o status:
lsnrctl reload
lsnrctl status
- No banco de dados stand-by no OCI, anexe o arquivo
- Configure as entradas
tns
:cd $ORACLE_HOME/network/admin
vi tnsnames.ora
A entrada no arquivotnsnames.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)))