Por Joel Perez , Mahir M. Quluzade & Rodrigo Mufalani
Publicado en Setembro 2013
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 das empresas. O Oracle Data Guard fornece um conjunto abrangente de serviços que criam, mantém, gerenciam e monitoram um ou mais Standby Databases possibilitando 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, um ou mais (máx. 30) Standby databases que podem ser (Physical, Logical ou Snapshot) e os serviços do Data Guard. O serviço de transporte de redo é responsável pela transmissão dos dados do Database primário para um Standby Database, nesta configuração os dados dos redos são transmitidos do Database primário e são escritos no Standby redo log do Standby Database. O Apply Service automaticamente aplica os dados de redo no Standby para manter a consistência com o Database primário. Existem dois tipos de Apply Service, o Redo Apply Service que é executado em um Standby Físico e o SQL Apply Service que é 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 todo redo gerado por essa transação seja enviada ao Standby com sucesso, 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âmetroLOG_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 paraSYNC 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.
1. Crieas 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
2. 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.
3. 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
4. Faça uma cópia do password file para a Far Sync instancea 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.
5. 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 propriedade RedoRoutes 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 redonã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:
NoDatabase 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_2 service="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ânciaFar 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_2 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_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 cascatear redo em tempo real (como isto está sendo escrito no standby redo log file) ou não em tempo real (como os redolog files 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.
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 DGMGRLconforme 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
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.
Mufalani é um DBA Sr. com mais de 8 anos de experiência, começou com o Oracle 8i, mas teve a oportunidade de dar suporte a Oracle 7.3.4 em diante. É especialista em banco de dados Oracle com foco principal em Performance & Tuning e RAC. É palestrante em eventos de Oracle como: OTN LAD TOUR e outros. Atualmente trabalha como consultor diversas empresas no segmento de variados ramos como: Educação, Saúde, Tecnologia, Seguros e etc. Foi o terceiro Oracle ACE a ser nomeado no Brasil e é OCP DBA nas versões 10g e 11g.