Creating a Data Broker Configuration

Realizando um teste de conexão do ambiente primary para o standby e o inverso também:

[oracle@fornix1 admin]$ sqlplus sys/oracle@CORTEXDR as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Mar 21 18:21:03 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL>
[oracle@fornix2 ~]$ sqlplus sys/oracle@CORTEX as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Mar 21 18:21:54 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
 
SQL>

A configuração do Broker pressupõe a existência de um arquivo (multiplexado) com extensão “.dat”. Desse modo, farei a criação do diretório dentro do ASM para abrigá-lo (também é suportado a criação em FS):

Primary:

[grid@fornix1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304     30716    27216                0           27216              0             N  DG_DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304     20476    18480                0           18480              0             N  DG_FRA/
MOUNTED  EXTERN  N         512             512   4096  4194304     10236    10136                0           10136              0             N  DG_GRID/
MOUNTED  EXTERN  N         512             512   4096  4194304     10236     8980                0            8980              0             N  DG_RECO/
[grid@fornix1 ~]$ asmcmd
ASMCMD> cd DG_DATA/CORTEX
ASMCMD> mkdir BROKER
ASMCMD> cd +DG_FRA/CORTEX
ASMCMD> mkdir BROKER

Standby:

[grid@fornix2 admin]$ asmcmd lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304     30716    27268                0           27268              0             N  DG_DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304     20476    17892                0           17892              0             N  DG_FRA/
MOUNTED  EXTERN  N         512             512   4096  4194304     10236    10136                0           10136              0             N  DG_GRID/
MOUNTED  EXTERN  N         512             512   4096  4194304     10236     9052                0            9052              0             N  DG_RECO/
[grid@fornix2 admin]$ asmcmd
ASMCMD> cd DG_DATA/CORTEXDR
ASMCMD> mkdir BROKER
ASMCMD> cd +DG_FRA/CORTEXDR
ASMCMD> mkdir BROKER

Definindo nos 2 ambientes os arquivos de configuração do Broker:

Primary:

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='+DG_DATA/CORTEX/BROKER/dr1CORTEX.dat';
 
System altered.
 
SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='+DG_FRA/CORTEX/BROKER/dr2CORTEX.dat';
 
System altered.

Standby:

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='+DG_DATA/CORTEXDR/BROKER/dr1CORTEXDR.dat';
 
System altered.
 
SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='+DG_FRA/CORTEXDR/BROKER/dr2CORTEXDR.dat';
 
System altered.

O listener de cada ambiente deve ter um registro de serviço estático, seguindo o formato DB_UNIQUE_NAME_DGMGRL.domain. Fazendo configuração no primary e depois realizar restart do listener:

[grid@fornix1 admin]$ cd $ORACLE_HOME/network/admin
[grid@fornix1 admin]$ cat listener.ora
#Backup file is  /grid/19.3.0/base/crsdata/fornix1/output/listener.ora.bak.fornix1.grid line added by Agent
#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))           # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
 
LISTENER =
  (DESCRIPTION_LIST =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP) (HOST = fornix1.localdomain) (PORT = 1521))
     (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1522))
    )
   )
 
SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
        (GLOBAL_DBNAME = CORTEX_DGMGRL.localdomain)
        (ORACLE_HOME = /grid/19.3.0/product)
        (SID_NAME = CORTEX)
   )
)
[grid@fornix1 admin]$ lsnrctl stop LISTENER
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2021 19:08:34
 
Copyright (c) 1991, 2019, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fornix1.localdomain)(PORT=1521)))
The command completed successfully
[grid@fornix1 admin]$ lsnrctl start LISTENER
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2021 19:08:38
 
Copyright (c) 1991, 2019, Oracle.  All rights reserved.
 
Starting /grid/19.3.0/product/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /grid/19.3.0/product/network/admin/listener.ora
Log messages written to /grid/19.3.0/base/diag/tnslsnr/fornix1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fornix1.localdomain)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fornix1.localdomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                21-MAR-2021 19:08:38
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /grid/19.3.0/product/network/admin/listener.ora
Listener Log File         /grid/19.3.0/base/diag/tnslsnr/fornix1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fornix1.localdomain)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
Services Summary...
Service "CORTEX_DGMGRL.localdomain" has 1 instance(s).
  Instance "CORTEX", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[grid@fornix1 admin]$

No standby eu já havia feito um registro estático devido um duplicate, então apenas adicionei novas informações:

[grid@fornix2 admin]$ cat listener.ora
#Backup file is  /grid/19.3.0/base/crsdata/fornix2/output/listener.ora.bak.fornix2.grid line added by Agent
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent
VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON            # line added by Agent
 
LISTENERDR =
  (DESCRIPTION_LIST =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP) (HOST = fornix2.localdomain) (PORT = 1522))
     (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC1522))
    )
   )
 
SID_LIST_LISTENERDR=
   (SID_LIST=
     (SID_DESC=
        (GLOBAL_DBNAME=CORTEXDR.localdomain)
        (SID_NAME=CORTEXDR)
        (ORACLE_HOME=/oracle/19.3.0/product)
     )
    ( SID_DESC=
        (GLOBAL_DBNAME=CORTEXDR_DGMGRL.localdomain)
        (ORACLE_HOME=/grid/19.3.0/product)
        (SID_NAME=CORTEXDR)
     )
   )
[grid@fornix2 admin]$ lsnrctl stop LISTENERDR
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2021 19:09:26
 
Copyright (c) 1991, 2019, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fornix2.localdomain)(PORT=1522)))
The command completed successfully
[grid@fornix2 admin]$ lsnrctl start LISTENERDR
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-MAR-2021 19:09:31
 
Copyright (c) 1991, 2019, Oracle.  All rights reserved.
 
Starting /grid/19.3.0/product/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /grid/19.3.0/product/network/admin/listener.ora
Log messages written to /grid/19.3.0/base/diag/tnslsnr/fornix2/listenerdr/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fornix2.localdomain)(PORT=1522)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fornix2.localdomain)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENERDR
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                21-MAR-2021 19:09:31
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /grid/19.3.0/product/network/admin/listener.ora
Listener Log File         /grid/19.3.0/base/diag/tnslsnr/fornix2/listenerdr/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fornix2.localdomain)(PORT=1522)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
Services Summary...
Service "CORTEXDR.localdomain" has 1 instance(s).
  Instance "CORTEXDR", status UNKNOWN, has 1 handler(s) for this service...
Service "CORTEXDR_DGMGRL.localdomain" has 1 instance(s).
  Instance "CORTEXDR", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[grid@fornix2 admin]$

Definindo o parâmetro responsável por inicializar os processos do Broker. No primary:

SQL> SHOW PARAMETER DG_BROKER_START
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start                      boolean     FALSE
SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
 
System altered.

Standby:

SQL> SHOW PARAMETER DG_BROKER_START
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start                      boolean     FALSE
SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
 
System altered.

A partir daqui, já é possível visualizar no primary o “alert.log” do Broker, que se chama “drcDB_UNIQUE_NAME”:

[oracle@fornix1 trace]$ pwd
/oracle/19.3.0/base/diag/rdbms/cortex/cortex/trace
[oracle@fornix1 trace]$ tail -f drccortex.log
2021-03-21T19:15:29.335-03:00                      INSV: Uploading persisted FSFO state:
2021-03-21T19:15:29.335-03:00                             flags=0x00000000, version=0, pstseq=0, target=0, obid=0
2021-03-21T19:15:29.335-03:00                             envsn=0, ackseq=0, new_target=255, new_obid=0
2021-03-21T19:15:29.335-03:00                           pmyshut=0, aft=0, laglim=0, obslim=0
2021-03-21T19:15:29.335-03:00                      INSV: INSV is ready
2021-03-21T19:15:30.351-03:00                      DMON: rfm_get_chief_lock() called for CTL_BOOTSTRAP, reason BOOTSTRAP, called from rfm_dmon_wakeup_fn
2021-03-21T19:15:30.351-03:00 7fffffff           0 DMON: start task execution: broker initialization
2021-03-21T19:15:30.351-03:00                      DMON: Boot configuration (0.0.0), loading from "+DG_DATA/CORTEX/BROKER/dr1CORTEX.dat"
2021-03-21T19:15:30.355-03:00                      DMON: Configuration does not exist, Data Guard broker ready
2021-03-21T19:15:30.355-03:00 7fffffff           0 DMON: rfm_release_chief_lock() called for CTL_BOOTSTRAP, called from rfm_bootstrap_config

Com a configuração do Broker, as atividades de administração do Dataguard são delegadas ao mesmo, e isso inclui os parâmetros de banco de dados. Desse modo, vou redefinir o LOG_ARCHIVE_DEST_2, que era onde eu havia feito a configuração do DG:

Primary:

SQL> SHO PARAMETER LOG_ARCHIVE_DEST_2;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      SERVICE=cortexDR ASYNC VALID_F
                                                 OR=(ONLINE_LOGFILES,PRIMARY_RO
                                                 LE) DB_UNIQUE_NAME=cortexDR
log_archive_dest_20                  string
log_archive_dest_21                  string
log_archive_dest_22                  string
log_archive_dest_23                  string
log_archive_dest_24                  string
log_archive_dest_25                  string
log_archive_dest_26                  string
log_archive_dest_27                  string
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_28                  string
log_archive_dest_29                  string
SQL> alter system set LOG_ARCHIVE_DEST_2='' SCOPE=BOTH;
 
System altered.

Standby:

SQL> SHO PARAMETER LOG_ARCHIVE_DEST_2;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      SERVICE=CORTEX ASYNC DB_UNIQUE
                                                 _NAME=cortex VALID_FOR=(ONLINE
                                                 _LOGFILE,PRIMARY_ROLE)
log_archive_dest_20                  string
log_archive_dest_21                  string
log_archive_dest_22                  string
log_archive_dest_23                  string
log_archive_dest_24                  string
log_archive_dest_25                  string
log_archive_dest_26                  string
log_archive_dest_27                  string
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_28                  string
log_archive_dest_29                  string
SQL> alter system set LOG_ARCHIVE_DEST_2='' SCOPE=BOTH;
 
System altered.

Logando no primary utilizando o utilitário DGMGRL:

[oracle@fornix1 trace]$ dgmgrl sys/oracle@CORTEX
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sun Mar 21 19:24:57 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
 
Welcome to DGMGRL, type "help" for information.
Connected to "cortex"
Connected as SYSDBA.
DGMGRL>

Definindo o banco CORTEX como primary:

DGMGRL> CREATE CONFIGURATION CORTEX AS PRIMARY DATABASE IS CORTEX CONNECT IDENTIFIER IS CORTEX;
Configuration "cortex" created with primary database "cortex"
DGMGRL> SHOW CONFIGURATION;
 
Configuration - cortex
 
  Protection Mode: MaxPerformance
  Members:
  cortex - Primary database
 
Fast-Start Failover:  Disabled
 
Configuration Status:
DISABLED
 
DGMGRL>

Nesta etapa é possível ver que o arquivo foi criado dentro do ASM conforme definido via parâmetro:

ASMCMD> pwd
+DG_DATA/CORTEX/BROKER
ASMCMD> ls
dr1cortex.dat
ASMCMD> !hostname
fornix1

Ainda logado no primary, vou adicionar o seu membro, que é o physical standby (lembrando que isso é possível por conta da string de conexão do tnsnames.ora, que testamos no primeiro step desse artigo):

DGMGRL> ADD DATABASE CORTEXDR AS CONNECT IDENTIFIER IS CORTEXDR;
Database "cortexdr" added
DGMGRL> SHOW CONFIGURATION;
 
Configuration - cortex
 
  Protection Mode: MaxPerformance
  Members:
  cortex   - Primary database
    cortexdr - Physical standby database
 
Fast-Start Failover:  Disabled
 
Configuration Status:
DISABLED
 
DGMGRL>

Visualizando as propriedades definidas pelo broker:

DGMGRL> SHOW DATABASE VERBOSE CORTEXDR;
 
Database - cortexdr
 
  Role:               PHYSICAL STANDBY
  Intended State:     OFFLINE
  Transport Lag:      (unknown)
  Apply Lag:          (unknown)
  Average Apply Rate: (unknown)
  Active Apply Rate:  (unknown)
  Maximum Apply Rate: (unknown)
  Real Time Query:    OFF
  Instance(s):
    CORTEXDR
 
  Properties:
    DGConnectIdentifier             = 'cortexdr'
    ObserverConnectIdentifier       = ''
    FastStartFailoverTarget         = ''
    PreferredObserverHosts          = ''
    LogShipping                     = 'ON'
    RedoRoutes                      = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = ''
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '0'
    LogArchiveMinSucceedDest        = '0'
    DataGuardSyncLatency            = '0'
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = ''
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    ArchiveLocation                 = ''
    AlternateLocation               = ''
    StandbyArchiveLocation          = ''
    StandbyAlternateLocation        = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    LogXptStatus                    = '(monitor)'
    SendQEntries                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'fornix2'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cortexDR_DGMGRL.localdomain)(INSTANCE_NAME=CORTEXDR)(SERVER=DEDICATED)))'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'
 
  Log file locations:
    (Unknown)
 
Database Status:
DISABLED - ORA-16905: The member was not enabled yet.

Habilitando configurações após conferência:

DGMGRL> ENABLE CONFIGURATION;
Enabled.

Já é possível ver que o ambiente está devidamente configurado e em operação:

DGMGRL> SHOW DATABASE VERBOSE CORTEXDR;
 
Database - cortexdr
 
  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 0 seconds ago)
  Apply Lag:          0 seconds (computed 0 seconds ago)
  Average Apply Rate: 585.00 KByte/s
  Active Apply Rate:  0 Byte/s
  Maximum Apply Rate: 0 Byte/s
  Real Time Query:    OFF
  Instance(s):
    CORTEXDR
 
  Properties:
    DGConnectIdentifier             = 'cortexdr'
    ObserverConnectIdentifier       = ''
    FastStartFailoverTarget         = ''
    PreferredObserverHosts          = ''
    LogShipping                     = 'ON'
    RedoRoutes                      = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = ''
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '0'
    LogArchiveMinSucceedDest        = '0'
    DataGuardSyncLatency            = '0'
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = ''
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    ArchiveLocation                 = ''
    AlternateLocation               = ''
    StandbyArchiveLocation          = ''
    StandbyAlternateLocation        = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    LogXptStatus                    = '(monitor)'
    SendQEntries                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'fornix2'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.110)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=cortexDR_DGMGRL.localdomain)(INSTANCE_NAME=CORTEXDR)(SERVER=DEDICATED)))'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'
 
  Log file locations:
    Alert log               : /oracle/19.3.0/base/diag/rdbms/cortexdr/CORTEXDR/trace/alert_CORTEXDR.log
    Data Guard Broker log   : /oracle/19.3.0/base/diag/rdbms/cortexdr/CORTEXDR/trace/drcCORTEXDR.log
 
Database Status:
SUCCESS

Um dos processos de background do Broker rodando:

[oracle@fornix1 trace]$ ps -ef | grep dmon
oracle    8607     1  0 19:15 ?        00:00:00 ora_dmon_cortex
oracle   10333  4238  0 19:41 pts/1    00:00:00 grep --color=auto dmon
[oracle@fornix1 trace]$

É possível perceber que o próprio broker definiu o valor para o parâmetro que anteriormente limpamos:

SQL> SHO PARAMETER log_archive_dest_2
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2                   string      service="cortexdr", ASYNC NOAF
                                                 FIRM delay=0 optional compress
                                                 ion=disable max_failure=0 reop
                                                 en=300 db_unique_name="cortexd
                                                 r" net_timeout=30, valid_for=(
                                                 online_logfile,all_roles)
log_archive_dest_20                  string
log_archive_dest_21                  string
log_archive_dest_22                  string
log_archive_dest_23                  string
log_archive_dest_24                  string
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_25                  string
log_archive_dest_26                  string
log_archive_dest_27                  string
log_archive_dest_28                  string
log_archive_dest_29                  string
SQL>

Gerando um archive no primary:

SQL> ALTER SYSTEM SWITCH LOGFILE;
 
System altered.

No alert:

2021-03-21 19:44:11.728000 -03:00
Thread 1 advanced to log sequence 48 (LGWR switch)
  Current log# 3 seq# 48 mem# 0: +DG_DATA/CORTEX/ONLINELOG/group_3.263.1039033647
  Current log# 3 seq# 48 mem# 1: +DG_FRA/CORTEX/ONLINELOG/group_3.259.1039033651
ARC0 (PID:3684): Archived Log entry 54 added for T-1.S-47 ID 0x20b8e097 LAD:1
TT02 (PID:3694): SRL selected for T-1.S-48 for LAD:2

Alert no standby:

2021-03-21 19:44:11.725000 -03:00
 rfs (PID:10386): Primary database is in MAXIMUM PERFORMANCE mode
 rfs (PID:10386): Re-archiving LNO:4 T-1.S-47
ARC0 (PID:4228): Archived Log entry 12 added for T-1.S-47 ID 0x20b8e097 LAD:1
MRP0 (PID:10069): Media Recovery Waiting for T-1.S-48
 rfs (PID:10386): Selected LNO:4 for T-1.S-48 dbid 548968087 branch 1039033628
2021-03-21 19:44:12.846000 -03:00
Recovery of Online Redo Log: Thread 1 Group 4 Seq 48 Reading mem 0
  Mem# 0: +DG_FRA/CORTEXDR/ONLINELOG/group_4.264.1066479889

Por fim, caso queiramos parar a operação do broker, basta executar o comando abaixo no standby:

[oracle@fornix1 trace]$ dgmgrl sys/oracle@CORTEXDR
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sun Mar 21 19:49:50 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
 
Welcome to DGMGRL, type "help" for information.
Connected to "cortexDR"
Connected as SYSDBA.
DGMGRL> EDIT DATABASE CORTEXDR SET STATE=APPLY-OFF;
Succeeded.

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

Leave a Comment

Your email address will not be published.