Oracle Data Guard – Synchronous redo transport
Neste artigo nós iremos discutir novas funcionalidades do Oracle Dataguard 12c relacionadas ao transporte de redo síncrono. Então nós iremos ver configurações FAST SYNC, FAR SYNC e Real-Time cascade.
Oracle Dataguard – Visão Geral
O Oracle Data Guard garante alta disponibilidade (HA), proteção dos dados, e Recuperação contra desastres para dados de empresas. O Oracle Data Guard fornece um conjunto abrangente de serviços que criam, mantém, gerenciam, e monitoram um ou mais Standby Databases para habilitar que o Oracle Database sobreviva a desastres e corrupção de dados. Um Standby Database é uma cópia do Database primário (produção). Então, se o banco de dados de produção se torna indisponível, o Data Guard pode trocar a função de qualquer um dos bancos de Standby para fazer o papel de banco de produção.
Uma configuração de Data Guard consiste em um Database principal e um ou mais (máx. 30) databases que podem ser (Physical, Logical ou Snapshot) Standby databases e os serviços do Data Guard. O serviço de transporte de redo transmite os dados do Database primário para um Standby Database nesta configuração. Os dados de redo transmitidos do Database primário é escrito no Standby redo log no Standby Database. O Apply Service automaticamente aplica os dados de redo no Standby para manter a consistência com o Database primário. Redo Apply Service é executado em um Standby Físico e o SQL Apply Service é executado em um Standby Lógico. Role Transition Service é o serviço responsável por um mudança de papel entre o Database primário e um Standby Database em uma configuração de Data Guard.
A configuração de Data Guard tem três modos de proteção: Maximum Availability, Maximum Performance e Maximum Protection. Todos os três modos de proteção requerem que você especifique as opções de transporte de redo que serão utilizadas para enviar os dados de redo para pelo menos um Standby Database. O Data Guard oferece duas opções para o Transport Services: synchronous (SYNC) e asynchronous (ASYNC).
Como você sabe, nos modos de proteção Maximum Protection e Maximum Availability requer o transporte síncrono (SYNC).
Atributos Requeridos de Transporte de Redo para os Modos de Proteção (*)
Maximum Availability |
Maximum Protection |
Maximum Performance |
AFFIRM ou NOAFFIRM |
AFFIRM |
NOAFFIRM |
SYNC |
SYNC |
ASYNC |
DB_UNIQUE_NAME |
DB_UNIQUE_NAME |
DB_UNIQUE_NAME |
O modo de transporte SYNC de redo transmite as mudanças do Database primário para o Standby Database de maneira síncrona respeitando as ordem de confirmações das transações. Uma transação não pode ser confirmada (commit) no Database primário até que toda redo gerado por essa transação seja enviada ao Standby com sucesso que usa modo de transporte de redo síncrono.
Nota: Não há limite de distância entre o Database primário e um destino de transporte de redo SYNC, a latência de commit de uma transação aumenta assim como a latência de rede entre Database primário e um destino de transporte de redo SYNC.
O que é Fast Sync?
Como você sabe, antes do Oracle Database 12c, para o modo Maximum Availability era mandatório o atributo de SYNC AFFIRM para o parâmetro LOG_ARCHIVE_DEST_n, porém, no Oracle Database 12c nós podemos usar SYNC NOAFFIRM com o modo Maximum Availability. O nome dessa funcionalidade é FAST SYNC.
Fast Sync fornece uma maneira fácil de aumentar a performance do sincronismo na configuração sem perda da dados (zero data loss) e também permite que o Standby tenha conhecimento mais rápido sobre a geração de redo do Database primário em memória, sem ter que esperar por I/O de disco no Standby redo log file.
Como configurar o FAST SYNC?
No nosso caso o Primary Database (prmcdb) e o Standby Database (stbcdb) é um Container Database (CDB) e a configuração do Data Guard (cdbdg) é gerenciada pelo Database Broker.
[oracle@oel62-prmdb-12c Desktop]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c Desktop]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 15:14:46 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select cdb, name, database_role from v$database;
CDB NAME DATABASE_ROLE
--- --------- ----------------
YES PRMCDB PRIMARY
SQL> select value from v$parameter
2 where name ='log_archive_dest_2';
VALUE
--------------------------------------------------------------------------------
service="stbcdb", ASYNC NOAFFIRM delay=0 optional compression=disable max_failure
=0 max_connections=1 reopen=300 db_unique_name="stbcdb" net_timeout=30, valid_fo
r=(online_logfile,all_roles)
SQL>exit
[oracle@oel62-prmdb-12c Desktop]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production
Copyright (c) 2000, 2012, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect "sys as sysdg"
Password:
Connected as SYSDG.
DGMGRL>
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
Como você pode ver, redo transport está como asynchronous (ASYNC NOAFFIRM) e o Protection Mode está como Maximum Performance. Para configurar o Fast Sync nós temos que mudar o atributo do parâmetro LOG_ARCHIVE_DEST_n para SYNC NOAFFIRM. No nosso caso, nosso database é gerenciado pelo Database Broker, então nós precisamos usar o Data Guard Broker Manager Command Line (DGMGRL) para todas as mudanças.
DGMGRL> EDIT DATABASE prmcdb SET PROPERTY LogXptMode=FASTSYNC;
Property "logxptmode" updated
DGMGRL> EDIT DATABASE stbcdb SET PROPERTY LogXptMode=FASTSYNC;
Property "logxptmode" updated
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Succeeded.
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxAvailability
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> show database verbose prmcdb
Database - prmcdb
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
prmcdb
Properties:
DGConnectIdentifier = 'prmcdb'
ObserverConnectIdentifier = ''
LogXptMode = 'fastsync'
RedoRoutes = ''
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyLagThreshold = '0'
TransportLagThreshold = '0'
TransportDisconnectedThreshold = '30'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'MANUAL'
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '4'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = 'prmcdb,stbcdb'
LogFileNameConvert = 'prmcdb,stbcdb'
FastStartFailoverTarget = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oel62-prmdb-12c.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=prmcdb_DGMGRL)(INSTANCE_NAME=prmcdb)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
SUCCESS
Nota: Para a propriedade LogXptMode estão disponíveis os valores SYNC, ASYNC e o novo FASTSYNC.
Abaixo podemos ver que o Data Guard Configuration broker mudou o valor do parâmetro log_archive_dest_2:
SQL> select value from v$parameter
2 where name ='log_archive_dest_2';
VALUE
--------------------------------------------------------------------------------
service="stbcdb", SYNC NOAFFIRM delay=0 optional compression=disable max_failure
=0 max_connections=1 reopen=300 db_unique_name="stbcdb" net_timeout=30, valid_fo
r=(online_logfile,all_roles)
Se você não estiver usar o Broker, então pode mudar estes parâmetros diretamente pelo SQL*Plus ou Enterprise Manager Cloud Control 12c.
Com o SQL*Plus:
On primary:
SQL> alter system set log_archive_dest_2='service=stbcdb SYNC NOAFFIRM db_unique_name=stbcdb valid_for=(online_logfile,all_roles)';
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
FAR SYNC Instance
Uma instância Oracle Data Guard Far Sync é um pequeno destino de standby em cascata. Então uma instância Oracle Data Guard Far Sync recebe redo do Database primário e então envia o redo para outro destino de Standby Database em casacata. Porém, há mais diferenças entre uma instância Far Sync e um destino de Standby em cascata. Far Sync não tem nenhum datafile, não roda Apply Service. Uma instância Far Sync gerencia um Control File, recebe o redo dentro dos Standby Redo Logs (SRLs), e gera archives destes SRLs para o local de archived redo logs.
Nota: Far sync instances são parte da funcionalidade Oracle Active Data Guard Far Sync, que requer uma licença do Oracle Active Data Guard.
Como configurar uma instância FAR SYNC?
[oracle@oel62-prmdb-12c Desktop]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c Desktop]$ sqlplus "/ as sysdba";
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 16:32:20 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select cdb,name,protection_mode from v$database;
CDB NAME PROTECTION_MODE
--- --------- --------------------
YES PRMCDB MAXIMUM PERFORMANCE
SQL> exit
[oracle@oel62-prmdb-12c Desktop]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production
Copyright (c) 2000, 2012, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect "sys as sysdg"
Password:
Connected as SYSDG.
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
Como você pode ver, nosso modo de proteção é Maximum Performance. prmcdb – Primary database e stbcdb – Physical standby database.
Nós iremos criar a instância FAR SYNC na mesma máquina do Database primário.
- Crie as pastas para a Far Sync instance.
[oracle@oel62-prmdb-12c ~]$ mkdir -p /u01/app/oracle/oradata/prmfs
[oracle@oel62-prmdb-12c ~]$ mkdir -p /u01/app/oracle/admin/prmfs/adump
- Crie um arquivo de inicialização e um control file para a Far Sync instance.
[oracle@oel62-prmdb-12c ~]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 16:42:31 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> create pfile='/u01/prmfs_pfile.ora' from spfile;
File created.
SQL> alter database create far sync instance controlfile as '/u01/app/oracle/oradata/prmfs/control01.ctl';
Database altered.
Edite o arquivo de parâmetros de inicialização para a instância Far Sync. Há parâmetros que requerem sua atenção: control_files, db_unique_name e log_file_name_convert.
Nota: Nós não configuramos o parâmetro db_file_name_convert, porque a instância Far Sync não usa datafiles.
prmfs.__data_transfer_cache_size=0
prmfs.__db_cache_size=318767104
prmfs.__java_pool_size=4194304
prmfs.__large_pool_size=8388608
prmfs.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
prmfs.__pga_aggregate_target=281018368
prmfs.__sga_target=524288000
prmfs.__shared_io_pool_size=16777216
prmfs.__shared_pool_size=167772160
prmfs.__streams_pool_size=0
*.archive_lag_target=0
*.audit_file_dest='/u01/app/oracle/admin/prmfs/adump'
*.audit_trail='db'
*.compatible='12.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/prmfs/control01.ctl'
*.log_file_name_convert='prmcdb','prmfs'
*.db_block_size=8192
*.db_domain=''
*.db_name='prmcdb'
*.db_unique_name='prmfs'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4800m
*.dg_broker_start=TRUE
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prmfsXDB)'
*.enable_pluggable_database=true
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST','valid_for=(ALL_LOGFILES, ALL_ROLES)'
*.log_archive_format='%t_%s_%r.dbf'
*.log_archive_max_processes=4
*.log_archive_min_succeed_dest=1
*.log_archive_trace=0
*.memory_target=768m
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='MANUAL'
*.undo_tablespace='UNDOTBS1'
Nota: A instância Far Sync cria standby redo logs (SRLs) automaticamente.
- Inicializando a instância Far Sync.
[oracle@oel62-prmdb-12c ~]$ export ORACLE_SID=prmfs
[oracle@oel62-prmdb-12c ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 17:10:24 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL>create spfile from pfile='/u01/prmfs_pfile.ora';
File created.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 801701888 bytes
Fixed Size 2293496 bytes
Variable Size 545259784 bytes
Database Buffers 251658240 bytes
Redo Buffers 2490368 bytes
Database mounted.
SQL> select name, db_unique_name, database_role from v$database;
NAME DB_UNIQUE_NAME DATABASE_ROLE
--------- ------------------------------ ----------------
PRMCDB prmfs FAR SYNC
- Faça uma cópia do password file para a Far Sync instance a partir do password file do Database primário.
[oracle@oel62-prmdb-12c ~]$ cd $ORACLE_HOME/dbs
[oracle@oel62-prmdb-12c dbs]$ cp orapwprmcdb orapwprmfs
Nota: Password file deve ser o mesmo para os Databases primário, standby e Far Sync instance.
- Adicione o network service do Far Sync ao tnsnames.ora nos dois sites (primário e standby) como abaixo:
PRMFS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oel62-prmdb-12c.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prmfs)
)
)
Agora nós podemos adicionar a instância Far Sync (prmfs) a nossa configuração de Dataguard com o DGMGRL.
[oracle@oel62-prmdb-12c Desktop]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production
Copyright (c) 2000, 2012, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect "sys as sysdg";
Password:
Connected as SYSDG.
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> ADD FAR_SYNC prmfs AS CONNECT IDENTIFIER IS prmfs;
far sync instance "prmfs" added
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
prmfs - Far Sync (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> ENABLE FAR_SYNC prmfs;
Enabled.
DGMGRL> show configuration;
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
prmfs - Far Sync (inactive)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
Para configurar a instância Far Sync na configuração do Data Guard, nós devemos mudar a nova propriedade RedoRoutes do Database primário e da instância Far Sync. Esta propriedade é configurada pelo valor no parâmetro de inicialização LOG_ARCHIVE_DEST_n para a configuração de uma instância Far Sync. A propriedade RedoRoutes também é usada para configurar destino de transporte de redo em cascata (Cascaded Redo Transport Destinations).
Nota: Se a propriedadeRedoRoutes foi configurada com o modo de transporte de redo, então o modo especificado pelo valor da propriedade RedoRoutes sobrepõe o valor da propriedade LogXptMode. O atributo opcional do transporte de redo especifica o modo de transporte de redo usado para enviar o redo para o destino associado. Ele pode ter um dos três valores: [ASYNC | SYNC | FASTSYNC]. Se o atributo de transporte de redo não for especificado, então o modo de transporte de redo irá usar um modo especificado pela propriedade LogXptMode para aquele destino.
DGMGRL>EDIT DATABASE prmcdb SET PROPERTY 'RedoRoutes'='(LOCAL : prmfs SYNC)';
Property "RedoRoutes" updated
DGMGRL>EDIT FAR_SYNC prmfs SET PROPERTY 'RedoRoutes'='(prmcdb : stbcdb ASYNC)';
Property "RedoRoutes" updated
DGMGRL>EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Succeeded.
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxAvailability
Databases:
prmcdb - Primary database
prmfs - Far Sync
stbcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
Nós podemos ver as mudanças dos parâmetros de inicialização relacionadas com o Data Guard nos databases primário, standby e far sync depois de adicionar a instância Far Sync na configuração do Data Guard. As mudanças abaixo:
No Database primário:
[oracle@oel62-prmdb-12c Desktop]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c Desktop]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 18:02:42 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select name, value from v$parameter
2 where name in ('fal_server','log_archive_config','log_archive_dest_2');
NAME VALUE
--------------------------------------------------------------------------------
log_archive_dest_2service="prmfs", SYNC AFFIRM delay=0 optional
compression=disable max_failure=0
max_connections=1 reopen=300 db_unique_name="prmfs"
net_timeout=30, valid_for=(online_logfile,all_roles)
fal_server
log_archive_config dg_config=(prmcdb,stbcdb,prmfs)
SQL>
Na instância Far Sync:
[oracle@oel62-prmdb-12c Desktop]$ export ORACLE_SID=prmfs
[oracle@oel62-prmdb-12c Desktop]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 18:09:49 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select name, value from v$parameter
2 where name in ('fal_server','log_archive_config','log_archive_dest_2');
NAME VALUE
--------------------------------------------------------------------------------
log_archive_dest_2service="stbcdb", ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="stbcdb"
net_timeout=30, valid_for=(standby_logfile,all_roles)
fal_server prmcdb, stbcdb
log_archive_config dg_config=(prmfs,prmcdb,stbcdb)
No Standby database:
[oracle@oel62-stbdb-12c /]$ export ORACLE_SID=stbcdb
[oracle@oel62-stbdb-12c /]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 24 18:13:25 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select name, value from v$parameter
2 where name in ('fal_server','log_archive_config','log_archive_dest_2');
NAME VALUE
--------------------------------------------------------------------------
log_archive_dest_2
fal_server prmfs, prmcdb
log_archive_config dg_config=(stbcdb,prmcdb,prmfs)
Se você não estiver utilizando o “Broker” então você deve modificar os parâmetros manualmente.
Real-Time Cascade
Com o Oracle Database 12c Release 1 (12.1), um standby database pode ou cascatear redo em tempo real (como isto está sendo escrito no standby redo log file) ou não em tempo real (como redolog file estão sendo arquivados em cascata em outro standby). Standby database em cascata tem algumas restrições. Somente um physical standby database pode cascatear redo, não real-time em cascata é suportado de 1 até 10 destino somente. Real-time cascading é suportado em todos os destinos.
Nota: Real-time cascading requer a licença para a opção Oracle Active Data Guard.
No Oracle Database 12c Release 1 (12.1) Data Guard Broker está disponível a opção de gerenciar destinos em cascata para o standby database. Para configurar o Real-Time Cascade com DGMGRL, nós devemos mudar a propriedade RedoRoutes.
- O valor default da propriedade RedoRoutes é NULL, que é tratada como (LOCAL: ALL) em um database primário.
- A regra de roteamento de redo está ativa se é especificado o campo de origem no database primário atual. Se a regra está ativa o redo do database primário é enviado para o database onde a regra é definida para cada destino especificado como destino de redo especificado no campo daquela regra.
- O atributo de transporte de redo ASYNCdeve ser explicitamente especificado para um destino em cascata para habilitar o real-time cascading para aquele destino.
- A propriedade RedoRoutesnão pode ser configurada em um standby database lógico ou snapshot.
Configurando Real-Time Cascade com o Broker manager.
Em nossa configuração do Data Guard temos dois physical standby databases, então prmcdb é o database primário, stbcdb e stlcdb são physical standby databases.
[oracle@oel62-prmdb-12c Desktop]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c Desktop]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production
Copyright (c) 2000, 2012, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect "sys as sysdg"
Password:
Connected as SYSDG.
DGMGRL>
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxPerformance
Databases:
prmcdb - Primary database
stbcdb - Physical standby database
stlcdb - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
stlcdb – physical standby database rodando com o database primário no mesmo servidor. Edite a propriedade RedoRoutes para o primário e cascading standby database para real-time cascade. O atributo de transporte de redo ASYNC deve ser especificado explicitamente para um destino em cascata para habilitar real-time cascading para um destino.
DGMGRL> EDIT DATABASE prmcdb SET PROPERTY RedoRoutes = '(prmcdb : stlcdb SYNC)';
Property "redoroutes" updated
DGMGRL> EDIT DATABASE stlcdb SET PROPERTY RedoRoutes = '(prmcdb : stbcdb ASYNC)';
Property "redoroutes" updated
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Succeeded.
DGMGRL> show configuration
Configuration - cdbdg
Protection Mode: MaxAvailability
Databases:
prmcdb - Primary database
stlcdb - Physical standby database
stbcdb - Physical standby database (receiving current redo)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
Nós podemos ver todas as mudanças nos parâmetros de inicialização pelo DGMGRL conforme abaixo:
No database primário:
[oracle@oel62-prmdb-12c dbs]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c dbs]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 25 11:36:41 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select value from v$parameter where name = 'log_archive_dest_2';
VALUE
--------------------------------------------------------------------------------
service="stlcdb", SYNC AFFIRM delay=0 optional compression=disable max_failure=0
max_connections=1 reopen=300 db_unique_name="stlcdb" net_timeout=30, valid_for=
(online_logfile,all_roles)
No Cascading Standby database:
[oracle@oel62-prmdb-12c dbs]$ export ORACLE_SID=stlcdb
[oracle@oel62-prmdb-12c dbs]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 25 11:37:44 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select value from v$parameter where name = 'log_archive_dest_2';
VALUE
--------------------------------------------------------------------------------
service="stbcdb", ASYNC NOAFFIRM delay=0 optional compression=disable max_failur
e=0 max_connections=1 reopen=300 db_unique_name="stbcdb" net_timeout=30, valid_f
or=(standby_logfile,all_roles)
Isso significa que o transporte de redo é feito de modo síncrono para o cascading standby database. O transporte de redolog do Cascading standby database para um cascaded standby database é feito de forma síncrona, em um outro nome deste processo é Real-Time Cascade.
Nós podemos monitorar a configuração do Dataguard
No Database primário:
[oracle@oel62-prmdb-12c dbs]$ export ORACLE_SID=prmcdb
[oracle@oel62-prmdb-12c dbs]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 25 11:54:28 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
117
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
118
No Cascading Standby database:
[oracle@oel62-prmdb-12c dbs]$ export ORACLE_SID=stlcdb
[oracle@oel62-prmdb-12c dbs]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 25 12:00:04 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
118
SQL> select max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
118
No Cascaded Standby database:
[oracle@oel62-stbdb-12c /]$ export ORACLE_SID=stbcdb
[oracle@oel62-stbdb-12c /]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Thu Jul 25 11:55:57 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
118
SQL> select max(sequence#) from v$archived_log where applied='YES';
MAX(SEQUENCE#)
--------------
118
Espero que este artigo possa ser uma peça de valor para seu conhecimento, até o próximo.
Saudações!
Autores
Joel é um DBA expert com mais de 12 anos de experiência, especializado nas áreas de bases de dados com especial ênfase em soluções de alta disponibilidade (RAC, Dataguard, e outros). É um palestrante habitual em eventos de Oracle como: OTN LAD TOUR e outros. É o primeiro latino-americano a ser nomeado “OTN Expert ” no ano de 2003 e é Oracle ACE Director.
Mahir é um DBA Senior com mais de 10 anos de experiência no Oracle Database com foco especial em Alta disponibilidade e soluções de Recuperação contra desastres (RAC, Data Guard, RMAN,…). Atualmente trabalha para o Central Bank of the Republic of Azerbaijan. Ele é um Oracle Certified Professional DBA.
Mahir é palestrante do Azerbaijan Oracle User Group (AZEROUG) e também é blogger. Siga Mahir no seu blog http://www.mahir-quluzade.com
Até o próximo.