Quando usar snapshot standby no Oracle Data Guard
Em ambientes com Oracle Data Guard, há situações em que se torna necessário executar alterações estruturais, aplicar patches, validar funcionalidades ou simular cargas sem afetar a integridade do banco primário. Nestes casos, o uso do snapshot standby permite converter o standby temporariamente para modo leitura e escrita, viabilizando testes completos em um ambiente isolado.
Essa funcionalidade só é possível porque, durante a conversão para snapshot standby, o Data Guard Broker cria automaticamente um Guaranteed Restore Point no banco standby. A partir daí, o Flashback Database garante a reversão exata ao estado anterior. Após os testes, o banco é revertido para Physical Standby, descartando todas as mudanças feitas durante o snapshot e retomando a sincronização com o primário.
Operacionalmente, é obrigatório que o Flashback esteja habilitado e que a Fast Recovery Area (FRA) tenha espaço suficiente.
.
Ambiente Oracle 19c com Data Guard
| Função | Datacenter | Host | IP | Instância | Unique Name |
|---|---|---|---|---|---|
| Primário | BR | srvora4 | 192.168.56.11 | AUTOBR | AUTO_U_BR |
| Standby | US | srvora3 | 192.168.56.10 | AUTOUS | AUTO_U_US |
.
Passo a passo para usar snapshot standby com segurança
1. Preparação inicial
Antes de executar qualquer comando:
- Abrir o
alert.logdo primário e do standby comtail -f - Abrir também o
drc.log(log do Data Guard Broker) nos dois lados:tail -f - Usar dois terminais por banco: um para comandos, outro só para logs
- Não continuar se o broker não estiver funcional (
Configuration Status = SUCCESS)
.
.
2. Verificar o status do Data Guard Broker
2.1 Status geral
DGMGRL> SHOW CONFIGURATION;Esperado: Configuration Status: SUCCESS
DGMGRL> SHOW CONFIGURATION;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 8 seconds ago)
DGMGRL>ShellSession2.2 Detalhes completos
DGMGRL> SHOW CONFIGURATION VERBOSE;DGMGRL> SHOW CONFIGURATION VERBOSE;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
TraceLevel = 'USER'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
ObserverReconnect = '0'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
ObserverOverride = 'FALSE'
ExternalDestination1 = ''
ExternalDestination2 = ''
PrimaryLostWriteAction = 'CONTINUE'
ConfigurationWideServiceName = 'AUTO_CFG'
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS
DGMGRL>ShellSession2.3 Consultar Lag
DGMGRL> SHOW CONFIGURATION LAG;Esperado: Apply Lag e Transport Lag = 0 seconds ou próximo disso
PULO DO GATO: gap ou apply parado? parar aqui.
DGMGRL> SHOW CONFIGURATION LAG;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 38 seconds ago)
DGMGRL>ShellSession2.4 Validar standby antes da conversão
DGMGRL> VALIDATE DATABASE 'AUTO_U_US';Esperado: Confirmar que o broker está pronto para switchover/failover e verificar o status do Flashback = Yes – ⚠️ Se o flashback estiver Off, não continuar.
DGMGRL> VALIDATE DATABASE 'AUTO_U_US';
Database Role: Physical standby database
Primary Database: AUTO_U_BR
Ready for Switchover: Yes
Ready for Failover: Yes (Primary Running)
Managed by Clusterware:
AUTO_U_BR: YES
AUTO_U_US: YES
Standby Apply-Related Information:
Apply State: Running
Apply Lag: Unknown
Apply Delay: 0 minutes
DGMGRL>
ShellSession.
3. Verificar FRA no standby
Mesmo com flashback ativo, o restore point só funciona se a FRA tiver espaço suficiente.
3.1 Parâmetros da FRA
SQL> SHOW PARAMETER db_recovery_file_dest;
SQL> SHOW PARAMETER db_recovery_file_dest_size;Esses parâmetros mostram o caminho e o tamanho total disponível da FRA.
srvora3:AUTOUS\sys = MOUNTED> SHOW PARAMETER db_recovery_file_dest;
NAME | TYPE | VALUE
------------------------------------ | ---------------------------- | --------------------
db_recovery_file_dest | string | +FRA
db_recovery_file_dest_size | big integer | 100G
srvora3:AUTOUS\sys = MOUNTED>SQL3.2 Uso atual da FRA
SQL> SELECT file_type, percent_space_used, percent_space_reclaimable,
FROM v$flash_recovery_area_usage;Esse comando mostra o que está consumindo espaço na FRA (archive logs, backups, restore points, etc).
srvora3:AUTOUS\sys = MOUNTED>
SELECT file_type, percent_space_used, percent_space_reclaimable, number_of_files
2 FROM v$flash_recovery_area_usage;
FILE_TYPE | PERCENT_SPACE_USED | PERCENT_SPACE_RECLAIMABLE | NUMBER_OF_FILES
----------------------- | ------------------ | ------------------------- | ---------
CONTROL FILE | 0 | 0 | 0
REDO LOG | 1.37 | 0 | 7
ARCHIVED LOG | .02 | .01 | 13
BACKUP PIECE | 0 | 0 | 0
IMAGE COPY | 0 | 0 | 0
FLASHBACK LOG | .39 | .2 | 2
FOREIGN ARCHIVED LOG | 0 | 0 | 0
AUXILIARY DATAFILE COPY | 0 | 0 | 0
8 rows selected.
srvora3:AUTOUS\sys = MOUNTED>SQL.
4. Converter para snapshot standby via broker
DGMGRL> CONVERT DATABASE 'AUTO_U_US' TO SNAPSHOT STANDBY;O broker:
- Cria restore point automático
- Abre o banco em modo
READ WRITE
Não interromper o processo.
DGMGRL> CONVERT DATABASE 'AUTO_U_US' TO SNAPSHOT STANDBY;
Converting database "AUTO_U_US" to a Snapshot Standby database, please wait...
Database "AUTO_U_US" converted successfully
DGMGRL>ShellSession.
.
5. Validar conversão e estado do banco
5.1 Verificações no broker
DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW DATABASE VERBOSE 'AUTO_U_US';
DGMGRL> SHOW CONFIGURATION LAG;O que esperar:
Database Role = SNAPSHOT STANDBYOpenMode = READ-WRITEApply Lagcomeçará a crescer (é normal — o banco está aberto e não aplica redo durante o snapshot)Transport Lagdeve continuar zerado ou próximo disso (o transporte continua funcionando)
Pulo do gato: nesse ponto, o apply está parado de propósito. O lag aumenta, mas isso é esperado e aceitável durante os testes.
DGMGRL> SHOW CONFIGURATION;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Snapshot standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 60 seconds ago)
DGMGRL> SHOW DATABASE 'AUTO_U_US';
Database - AUTO_U_US
Role: SNAPSHOT STANDBY
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 22 minutes 41 seconds (computed 0 seconds ago)
Instance(s):
AUTOUS
Database Status:
SUCCESS
DGMGRL> SHOW CONFIGURATION LAG;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Snapshot standby database
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 22 minutes 47 seconds (computed 1 second ago)
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 12 seconds ago)
DGMGRL>ShellSession5.2 Verificar open_mode e role no banco
SQL> SELECT name, open_mode, database_role FROM v$database;Esperado: SNAPSHOT STANDBY, READ WRITE
srvora3:AUTOUS\sys = OPEN> SELECT name, open_mode, database_role FROM v$database;
NAME | OPEN_MODE | DATABASE_ROLE
---------- | -------------------- | ----------------
AUTO | READ WRITE | SNAPSHOT STANDBY
1 row selected.
srvora3:AUTOUS\sys = OPEN>SQL5.3 Verificar restore point criado
SQL> SELECT
name AS name_restore_point,
scn,
ROUND(storage_size / (1024*1024), 2) AS storage_mb,
guarantee_flashback_database AS guar
FROM v$restore_point;Esperado: guarantee_flashback_database = YES
srvora3:AUTOUS\sys = OPEN> SELECT name AS name_restore_point,
scn,
ROUND(storage_size / (1024*1024), 2) AS storage_mb,
guarantee_flashback_database AS guar
FROM v$restore_point;
NAME_RESTORE_POINT | SCN | STORAGE_MB | GUA
----------------------------------------------- | ------- | ---------- | ---
SNAPSHOT_STANDBY_REQUIRED_01/08/2026 17:20:50 | 3459307 | 200 | YES
1 row selected.
srvora3:AUTOUS\sys = OPEN>SQL.
6. Executar testes no snapshot standby
Neste momento, o banco de dados standby está em modo READ WRITE, permitindo a execução de testes completos, como:
- Alterações estruturais (DDL)
- Execução de cargas de aplicação
- Testes de performance e tuning
- Aplicação de patches ou validações em ambiente isolado
Todas as transações realizadas aqui não impactam o banco primário. O ambiente pode ser explorado livremente, como se fosse um ambiente de homologação com dados reais.
.
7. Reverter snapshot para physical standby
Encerrados os testes, o próximo passo é reverter o banco para o modo Physical Standby. Isso é feito pelo próprio Data Guard Broker, que executa um flashback até o restore point criado automaticamente.
⚠️ Atenção: ao reverter para Physical Standby, todas as alterações feitas serão descartadas. Nenhuma transação é preservada após o flashback.
DGMGRL> CONVERT DATABASE 'AUTO_U_US' TO PHYSICAL STANDBY;Durante o processo, o broker:
- Executa o flashback até o SCN original
- Descarta todas as alterações feitas durante o snapshot
- Monta o banco em
MOUNTED, pronto para reaplicar os logs recebidos
⚠️ Não interromper o processo. Ele pode levar alguns minutos
DGMGRL> show configuration
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Snapshot standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 5 seconds ago)
DGMGRL> CONVERT DATABASE 'AUTO_U_US' TO PHYSICAL STANDBY;
Converting database "AUTO_U_US" to a Physical Standby database, please wait...
Operation requires a connection to database "AUTO_U_BR"
Connecting ...
Connected to "AUTO_U_BR"
Connected as SYSDBA.
Oracle Clusterware is restarting database "AUTO_U_US" ...
Connected to an idle instance.
Connected to an idle instance.
Connected to an idle instance.
Connected to an idle instance.
Connected to "AUTO_U_US"
Connected to "AUTO_U_US"
Continuing to convert database "AUTO_U_US" ...
Database "AUTO_U_US" converted successfully
DGMGRL>
DGMGRL> show configuration
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 58 seconds ago)
ShellSession.
8. Validar o retorno para physical standby
DGMGRL> SHOW CONFIGURATION;
DGMGRL> SHOW CONFIGURATION LAG;
DGMGRL> SHOW DATABASE 'AUTO_U_US';O que esperar:
Database Role = PHYSICAL STANDBYOpenMode = MOUNTEDApply Lagpode aparecer alto logo após a reversão e isso é esperado, pois o MRP ainda está aplicando os logs acumulados durante o snapshot. Esse lag deve começar a cair rapidamente, conforme os logs forem sendo aplicados no standby.Transport Lagdeve estar baixo ou zerado, indicando que o primário continua enviando os redo normalmente.
DGMGRL> SHOW CONFIGURATION;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 14 seconds ago)
DGMGRL> SHOW CONFIGURATION LAG;
Configuration - DG_AUTO
Protection Mode: MaxPerformance
Members:
AUTO_U_BR - Primary database
AUTO_U_US - Physical standby database
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 19 seconds ago)
DGMGRL> SHOW DATABASE 'AUTO_U_US';
Database - AUTO_U_US
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Average Apply Rate: 24.00 KByte/s
Real Time Query: OFF
Instance(s):
AUTOUS
Database Status:
SUCCESSShellSession.
O Snapshot Standby permite executar testes e mudanças no standby sem afetar o ambiente principal. Com o Data Guard Broker, o processo de conversão e reversão se torna simples e controlado.
Seguindo as validações de flashback, FRA e lag, o recurso pode ser usado com segurança em rotinas de manutenção, validação e troubleshooting.
.
Referências oficiais da Oracle
- Configurando snapshot standby com Oracle Database Migration
- Documentação principal do Data Guard Broker
- Exemplos de uso do DGMGRL no Data Guard Broker
- CREATE RESTORE POINT – Oracle SQL Reference
.
#20260109 #DBASobrinho #GuinaNãoTinhaDó #BóBó #CaceteDeAgulha #OracleACE #PowerLab #ChaoLava #2026 #FelizNatal



