Prepare a base de dados principal do Data Guard
O Data Guard requer uma base de dados principal e, pelo menos, uma base de dados em espera para funcionar. Antes de configurar o Data Guard na Solução Bare Metal, crie a base de dados principal.
Os exemplos seguintes são usados ao longo deste guia:
Nome exclusivo da base de dados | Nomes de anfitrião do servidor | Nomes das instâncias do RAC | Função |
---|---|---|---|
DBDG_SITE1 | site1db1, site1db2 | DBDG_SITE11, DBDG_SITE12 | Primary |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | Modo de espera |
Os servidores da Solução Bare Metal que executam o Oracle neste guia estã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 |
Pode ter de modificar os caminhos das variáveis de ambiente consoante a sua configuração.
Configure a base de dados principal
Inicie sessão no primeiro servidor da Bare Metal Solution que aloja a base de dados principal.
No ficheiro
/etc/oratab
, adicione uma entrada para que o comandooraenv
possa definir variáveis de ambiente para a base 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 o diretório base da base de dados Oracle:DBDG_SITE11:ORACLE_HOME:N
Defina a variável de ambiente
ORACLE_SID
para poder estabelecer ligação à base de dados principal:source oraenv <<< "DBDG_SITE11"
Deve receber a resposta
The Oracle base has been set to /apps/oracle/oracle_base
.
Configure o registo da base de dados e ative a base de dados de reversão
Inicie o SQL*Plus e, de seguida, ative o
force logging
para que osnologging
espaços de tabelas adicionados à base de dados sejam registados: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:Pare a base de dados agrupada para poder 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 novamente a base de dados agrupada:
srvctl start database -d DBDG_SITE1
Prepare a base de dados para o Data Guard
Inicie sessão no primeiro servidor da Bare Metal Solution que aloja a base de dados principal e defina a variável de ambiente
ORACLE_SID
para poder estabelecer ligação à base de dados principal:source oraenv <<< "DBDG_SITE11"
Deve receber a resposta
The Oracle base has been set to /apps/oracle/oracle_base
.Inicie o SQL*Plus e, em seguida, modifique os parâmetros de inicialização da base 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 registos de refazer em espera na base de dados. Cada thread tem de ter mais um grupo de registos de refazimento em espera do que o número de grupos de registos de refazimento online.
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 seguinte tem quatro registos de refazer online por thread e não tem grupos de registos de refazer em espera criados. Como existem quatro grupos de registo de refazimento online, têm de ser criados cinco grupos de registo de refazimento em espera para cada thread:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Se existirem grupos de registos de refazer em espera suficientes, ignore este passo. Os grupos de registos de refazimento em espera têm de ter o mesmo tamanho que cada grupo de registos de refazimento online. Crie o número necessário de grupos de registos de refazimento 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 seguinte indica-lhe que crie cinco grupos de registos de refazimento em espera para cada um dos dois threads:
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 registos de refazer em espera estão configurados corretamente para a sua 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#;
O resultado seguinte tem quatro grupos de registos de refazimento online por thread e cinco grupos de registos de refazimento em espera por thread:
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 ficheiros de parâmetros e palavras-passe da base de dados para os servidores de espera
Crie um ficheiro de parâmetros da base de dados e copie-o para o servidor de espera:
Crie uma pasta para o ficheiro de parâmetros da base de dados em espera (
pfile
):mkdir /home/oracle/backup
Inicie o SQL*Plus e, de seguida, crie a base de dados de reserva
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Saia do SQL*Plus e, em seguida, copie o ficheiro
pfile
para o primeiro servidor da Solução Bare Metal na localização de espera:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Certifique-se de que a palavra-passe de início de sessão remoto do SYS está guardada em segurança. Se não souber a palavra-passe, reponha-a.
Copie o ficheiro de palavras-passe para o cluster de espera:
Obtenha a localização do ficheiro de palavras-passe através do comando
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
O resultado seguinte mostra a localização de um arquivo de ficheiros de palavras-passe no ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Crie uma cópia temporária do ficheiro de palavras-passe no sistema de ficheiros local através do comando
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Copie o ficheiro de palavra-passe para o primeiro servidor da Bare Metal Solution na localização de espera e, de seguida, elimine a cópia temporária do servidor da Bare Metal Solution na localização principal:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Configure a conetividade da base de dados
Edite o ficheiro $ORACLE_HOME/network/admin/tsnames.ora
em cada servidor da Bare Metal Solution na localização da base de dados principal para atualizar a configuração do serviço de rede.
Existem três entradas no ficheiro: uma para cada base de dados e uma entrada temporária usada durante a duplicação da base de dados que vai eliminar mais tarde:
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)
)
)
A base de dados principal está agora pronta para ser usada numa configuração do Data Guard.
Passos seguintes
Em seguida, crie a base de dados em espera do Data Guard.