Preparar o banco de dados principal do Data Guard
O Data Guard requer um banco de dados principal e pelo menos um banco de dados em espera para funcionar. Antes de configurar o DataGuard na Solução Bare Metal, crie o banco de dados principal.
Os exemplos a seguir são usados neste 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 principal
Faça login no primeiro servidor da Solução Bare Metal que hospeda o banco de dados principal.
No arquivo
/etc/oratab
, adicione uma entrada para que o comandooraenv
possa definir variáveis de ambiente para o banco de dados principal. Modifique o nome da instância para corresponder à instância em execução em cada nó e especifique o caminho completo para a página inicial do banco de dados Oracle:DBDG_SITE11:ORACLE_HOME:N
Defina a variável de ambiente
ORACLE_SID
para se conectar ao banco de dados principal:source oraenv <<< "DBDG_SITE11"
Você receberá a resposta
The Oracle base has been set to /apps/oracle/oracle_base
.
Configurar a geração de registros do banco de dados e ativar o flashback
Inicie o SQL*Plus e ative
force logging
para que os tablespacesnologging
adicionados ao banco de dados sejam registrados:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Verifique se
archivelog mode
eflashback database
estão ativados:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Se
archivelog mode
eflashback database
estiverem desativados, ative-os com os seguintes comandos SQL:Interrompa o banco de dados em cluster para fazer as alterações necessárias:
srvctl stop database -d
Execute os comandos SQL necessários para ativar
archivelog mode
eflashback database
:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Inicie o banco de dados em cluster novamente:
srvctl start database -d DBDG_SITE1
Preparar o banco de dados para o Data Guard
Faça login no primeiro servidor da Solução Bare Metal que hospeda o banco de dados principal e defina a variável de ambiente
ORACLE_SID
para se conectar ao banco de dados principal:source oraenv <<< "DBDG_SITE11"
Você receberá a resposta
The Oracle base has been set to /apps/oracle/oracle_base
.Inicie o SQL*Plus e modifique os parâmetros de inicialização do banco de dados necessários para a configuração e os serviços do Data Guard:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Verifique a existência de registros "redo" em espera no banco de dados. Cada linha de execução precisa ter mais um grupo de registros "redo" em espera do que o número de grupos de registros "redo" on-line.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
O exemplo a seguir tem quatro registros "redo" on-line por linha de execução e não tem nenhum grupo de registros "redo" em espera criado. Como há quatro grupos de registros "redo" on-line, é preciso criar cinco grupos de registro "redo" em cada linha de execução:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Se houver grupos de registros "redo" em espera suficientes, pule esta etapa. Os grupos de registro "redo" em espera precisam ter o mesmo tamanho que cada grupo de registro "redo" on-line. Crie o número necessário de grupos de registros "redo" em espera com o seguinte código PL/SQL:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
O exemplo de saída a seguir instrui você a criar cinco grupos de registros "redo" em espera para cada uma das duas linhas de execução:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Verifique se os registros "redo" em espera estão configurados corretamente para a configuração:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
A saída a seguir tem quatro grupos de registro "redo" on-line por linha de execução e cinco grupos de registro "redo" em espera por linha de execução:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Saia do SQL*Plus:
EXIT;
Copie os parâmetros do banco de dados e os arquivos de senha para os servidores de espera
Crie um arquivo de parâmetro do banco de dados e copie-o para o servidor em espera:
Crie uma pasta para o arquivo de parâmetros do banco de dados em espera (
pfile
):mkdir /home/oracle/backup
Inicie o SQL*Plus e crie o banco de dados em espera
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Saia do SQL*Plus e copie o
pfile
para o primeiro servidor da Solução Bare Metal no local de espera:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Confirme se a senha de login remoto do SYS foi salva com segurança. Se você não souber a senha, redefina-a.
Copie o arquivo de senha para o cluster de espera:
Encontre o local do arquivo da senha usando o comando
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
A saída a seguir mostra o local de um armazenamento de arquivo de senha no ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Faça uma cópia temporária do arquivo de senha no sistema de arquivos local usando o comando
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Copie o arquivo de senha para o primeiro servidor da Solução Bare Metal no local de espera e exclua a cópia temporária pelo servidor da Solução Bare Metal no local principal:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Configurar a conectividade do banco de dados
Edite o arquivo $ORACLE_HOME/network/admin/tsnames.ora
em cada servidor da Solução Bare Metal
no local do banco de dados principal para atualizar a configuração do serviço da rede.
Há três entradas no arquivo, uma para cada banco de dados, e uma entrada
temporária usada durante a duplicação de banco de dados que você excluirá posteriormente:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
O banco de dados principal está pronto para ser usado em uma configuração do DataGuard.
Próximas etapas
Em seguida, crie o banco de dados em espera do Data Guard.