Pular para o conteúdo

Novas funcionalidades do Oracle Dataguard 12c: FAST SYNC, FAR SYNC e cascade em tempo real

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.

  1. 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
  1. 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.

  1. 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
  1. 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.

  1. 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.

Rodrigo Mufalani

Rodrigo Mufalani

É um Oracle ACE member e Oracle Certified Master (OCM) com 15 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 Engineered Systems, Performance & Tuning e RAC. Ele é fundador e presidente e também palestrante do Luxembourg Oracle User Group. É palestrante em eventos de Oracle como: OTN LAD TOUR e OTN EMEA TOUR e outros. Atualmente trabalha como Principal DB Architect na eProseed Europe. Foi o terceiro Oracle ACE a ser nomeado no Brasil. Twitter @mufalani / blog Mufalani.worpress.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress