DB - Data Guard 12c - Criar uma Physical Standby


EnglishVersion

Ha algum tempo que andava para publicar um post sobre a solucao de disaster/recover da Oracle, Data Guard (DG). O objectivo deste post nao e destilar o Data Guard, mas para entender melhor e necessario  rever algums conceitos.
Recap,   Data Guard permite enviar a informacao de log de site/data center  – principal para  outro dedicado a recovery, protegendo dessa forma os dados em caso de indisponiblilidade ou perca do site principal.

As pontencialidades do Data Guard sao enormes , nao se reduzindo apenas a DR, por exemplo as base de dados secundarias pode ser usadas pra testes ou reporting.
Databases roles :
primary – base de dados activa para transacoes negocio
standby – base de dados secundaria (physical, logical, snapshot)

Para  construir  qualquer  base de dados secundaria,  e necessario primeiro contruir uma pysical standby  ( desta uma logical ou snapshot) , ou seja uma copia bit a bit da primary.
Ha algumas formas de contruir uma pysical  standby, ha muitos sites e documentacao Oracle  sobre isto, neste post mosto  a que me parece mais simples. Usar o broker.

Como estamos a falar uma demo, estou a usar uma VM, neste caso ambas as base de dados estao na mesma maquina, e  listener sera o mesmo para ambas.

Hostname : oretail.example.com
Primary : PRODDB
Physical Standby : DRSITECDB
Para construir a  physical standby irei seguir os seguintes passos:
1 . PRODDB - Verificar configuracoes e  Preparar a primary
2 . REDE – Configurar listener e TNS
3 . DRSITECDB – Criar Physical Standby
4 . DGMGRL – Criar a confguracao DG
5 . DGMGRL – Testar


1 . PRODDB - Verificar configuracoes e  Preparar a primary



A secao seginte mostra alguma informacao key e outra util sobre a base de dados.

[oracle@oretail Desktop]$ tail /etc/oratab
#..
PRODCDB:/u01/app/oracle/product/12.1.0/dbhome_1:N

[oracle@oretail Desktop]$ . oraenv
ORACLE_SID = [PRODCDB] ? PRODCDB
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@oretail Desktop]$  sqlplus / as sysdba

SQL> set pages 50
SQL> set lines 200
SQL> col name form a10
SQL> col db_unique_name form a15
SQL> col log_mode form a15
SQL> col switchover_status form a20
SQL> col force_logging form a20
SQL> select name, db_unique_name, switchover_status, log_mode, flashback_on ,  force_logging from v$database;

NAME DB_UNIQUE_NAME  SWITCHOVER_STATUS  LOG_MODE      FLASHBACK_ON       FORCE_LOGGING
---------- ------------- -------------------- ------------- ------------------ --------------------
PRODCDB PRODCDB     NOT ALLOWED          NOARCHIVELOG      NO                 NO


-- Activar o force logging
SQL> alter database force logging;
Database altered.

-- Activar archivelog mode
SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>  startup mount;
ORACLE instance started.

Total System Global Area 1509949440 bytes
Fixed Size                  2924640 bytes
Variable Size             973082528 bytes
Database Buffers          520093696 bytes
Redo Buffers               13848576 bytes
Database mounted.

SQL>  alter database archivelog;
Database altered.

SQL> alter database open;
Database altered.

-- verificar novamente
SQL> set pages 50
SQL> set lines 200
SQL> col name form a10
SQL> col db_unique_name form a15
SQL> col log_mode form a15
SQL> col switchover_status form a20
SQL> col force_logging form a20
SQL> select name, db_unique_name, switchover_status, log_mode, flashback_on ,  force_logging from v$database;

 NAME       DB_UNIQUE_NAME  SWITCHOVER_STATUS    LOG_MODE        FLASHBACK_ON       FORCE_LOGGING
---------- --------------- -------------------- --------------- ------------------ --------------------
PRODCDB    PRODCDB         NOT ALLOWED          ARCHIVELOG      NO                 YES


-- adicionar standby logs nesta altura
SQL> col member form a100
SQL> select l.group#, l.bytes, f.type, f.member  from
     v$log l , v$logfile f where l.group#=f.group#
     union all
     select l.group#, l.bytes, f.type, f.member
     from  v$standby_log l , v$logfile f where l.group#=f.group#;

GROUP#      BYTES TYPE    MEMBER
------ ---------- ------- ----------------------------------------------------
     3   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log3.log
     3   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log3.log
     2   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log2.log
     2   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log2.log
     1   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log1.log
     1   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log1.log

6 rows selected..

SQL> alter database add standby logfile group  11 ('/u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_1.log','/u01/app/oracle/fra/PRODCDB/stdb_1.log') size 52428800;
SQL> alter database add standby logfile group  12 ('/u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_2.log','/u01/app/oracle/fra/PRODCDB/stdb_2.log') size 52428800;
SQL> alter database add standby logfile group  13 ('/u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_3.log','/u01/app/oracle/fra/PRODCDB/stdb_3.log') size 52428800;
SQL> alter database add standby logfile group  14 ('/u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_4.log','/u01/app/oracle/fra/PRODCDB/stdb_4.log') size 52428800;

SQL> select l.group#, l.bytes, f.type, f.member
     from  v$log l , v$logfile f where l.group#=f.group#
     union all
     select l.group#, l.bytes, f.type, f.member  from
     v$standby_log l , v$logfile f where l.group#=f.group#

    GROUP#      BYTES TYPE    MEMBER
---------- ---------- ------- ------------------------------------------------
         3   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log3.log
         3   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log3.log
         2   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log2.log
         2   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log2.log
         1   52428800 ONLINE  /u01/app/oracle/oradata/PRODCDB/onlinelog/log1.log
         1   52428800 ONLINE  /u01/app/oracle/fra/PRODCDB/onlinelog/log1.log
        11   52428800 STANDBY /u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_1.log
        11   52428800 STANDBY /u01/app/oracle/fra/PRODCDB/stdb_1.log
        12   52428800 STANDBY /u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_2.log
        12   52428800 STANDBY /u01/app/oracle/fra/PRODCDB/stdb_2.log
        13   52428800 STANDBY /u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_3.log
        13   52428800 STANDBY /u01/app/oracle/fra/PRODCDB/stdb_3.log
        14   52428800 STANDBY /u01/app/oracle/oradata/PRODCDB/onlinelog/stdb_4.log
        14   52428800 STANDBY /u01/app/oracle/fra/PRODCDB/stdb_4.log

14 rows selected.

-- verificar outras configuracoes - data files
SQL> col name form a100
SQL> select  * from v$dbfile;

     FILE# NAME                                                                 CON_ID
---------- ----------------------------------------------------------- ------
         6 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_users_fvdyknoc_.dbf    1
         4 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_undotbs1_fvdykotw_.dbf   1
         1 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_system_fvdyhmf2_.dbf     1
         3 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_sysaux_fvdyfw4s_.dbf      1
         5 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_system_fvdylynm_.dbf      2
         7 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_sysaux_fvdylyn3_.dbf      2
         8 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_system_fvdysy1f_.dbf      3
         9 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_sysaux_fvdysy17_.dbf      3
        10 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_users_fvdysy1m_.dbf       3
        11 /u01/app/oracle/oradata/PRODCDB/datafile/o1_mf_example_fvdysy0z_.dbf    3

-- verificar outras configuracoes - containers                                                                             
SQL> col name form a10
SQL> select con_id,name, open_mode from v$containers;
  CON_ID NAME       OPEN_MODE
---------- ---------- ---------------
         1 CDB$ROOT   READ WRITE
         2 PDB$SEED   READ ONLY
         3 PRDPDB1    MOUNTED

-- verificar outras configuracoes - parameteros
SQL> col name form a30
SQL> col value form a80
SQL> select name,value from v$parameter where name in ('log_archive_dest_2','log_archive_dest_state_2','log_archive_config','db_name','db_unique_name','dg_broker_start','db_recovery_file_dest','db_recovery_file_dest_size','control_files','db_file_name_convert','log_file_name_convert','pdb_file_name_convert');

NAME                           VALUE
------------------------------ ---------------------------------------------------------------------
control_files                 /u01/app/oracle/oradata/PRODCDB/controlfile/o1_mf_fvdyll4b_.ctl,
                              /u01/app/oracle/fra/PRODCDB/controlfile/o1_mf_fvdyll6s_.ctl
db_file_name_convert
log_file_name_convert
log_archive_dest_2
log_archive_dest_state_2       enable
log_archive_config
db_recovery_file_dest          /u01/app/oracle/fra
db_recovery_file_dest_size     4781506560
db_name                        PRODCDB
db_unique_name                 PRODCDB
dg_broker_start                FALSE
pdb_file_name_convert


2 . REDE – Configurar listener e TNS



Nesta secao seginte irei configurar a rede, criar um listener e registar os seguintes servicos (listener.ora):
Primary: PRODCDB, PRODCDB_DGMGRL
Standby : DRSITECDB, DRSITECDB_DGMGRL

TNS (tnsnames.ora):
Primary : PRODCDB
Standby :DRSITECDB Pode se editar os ficheiros  diretamente, mas recomendavel usar o netmgr , 
No final o conteudo dos ficheiros deve  algo do genero.

$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = PRODCDB)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = PRODCDB)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = PRODCDB_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = PRODCDB)
    )
  (SID_DESC =
      (GLOBAL_DBNAME = DRSITECDB)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = DRSITECDB)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = DRSITECDB_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME = DRSITECDB)
    )
  )

LISTENER =
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oretail.example.com)(PORT = 1521))
  )

ADR_BASE_LISTENER = /u01/app/oracle

$ cat tnsnames.ora

PRODCDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oretail.example.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PRODCDB)
    )
  )

DRSITECDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oretail.example.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DRSITECDB)
    )
  )

$ lsnrctl stop; lsnrctl start

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 05-OCT-2018 14:52:08
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oretail.example.com)(PORT=1521)))

The command completed successfully

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 05-OCT-2018 14:52:08
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/oretail/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oretail.example.com)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oretail.example.com)(PORT=1521)))

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                05-OCT-2018 14:52:08
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oretail/listener/alert/log.xml

Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oretail.example.com)(PORT=1521)))

Services Summary...
Service "PRODCDB" has 1 instance(s).
Instance "PRODCDB", status UNKNOWN, has 1 handler(s) for this service...
Service "DRSITECDB" has 1 instance(s).
Instance "DRSITECDB", status UNKNOWN, has 1 handler(s) for this service...
Service "DRSITECDB_DGMGRL" has 1 instance(s).
Instance "DRSITECDB", status UNKNOWN, has 1 handler(s) for this service...
Service "PRODCDB_DGMGRL" has 1 instance(s).
Instance "PRODCDB", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

$ tnsping PRODCDB
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 05-OCT-2018 10:49:55
Copyright (c) 1997, 2014, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oretail.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRODCDB)))
OK (0 msec)

$ tnsping DRSITECDB

TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 05-OCT-2018 10:49:57
Copyright (c) 1997, 2014, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oretail.example.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = DRSITECDB)))
OK (0 msec)


3 . DRSITECDB – Criar Physical Standby

No servidor da standby, vamos tratar dos ficheiros no  sistema operativo e instancia
  • criar uma entrada para a standby no ficheiro  /etc/oratab
  • copiar o ficheiro orapw
  • criar as pastas para para a base de dados
  • criar um pfile como as entradas minimas
  • criar um spfile
  • deixar a instancia em nomount
  • com RMAN duplicar a primary - nao esquecer que e necesario fazer um backup antes do duplicate


$ echo "DRSITECDB:/u01/app/oracle/product/12.1.0/dbhome_1:N" >> /etc/oratab

$ tail -n 2 /etc/oratab
#...
PRODCDB:/u01/app/oracle/product/12.1.0/dbhome_1:N
DRSITECDB:/u01/app/oracle/product/12.1.0/dbhome_1:N

$ cp $ORACLE_HOME/dbs/orapwPRODCDB $ORACLE_HOME/dbs/orapwDRSITECDB

$ mkdir -p /u01/app/oracle/oradata/DRSITECDB/controlfile
$ mkdir -p /u01/app/oracle/oradata/DRSITECDB/onlinelog
$ mkdir -p /u01/app/oracle/oradata/DRSITECDB/datafile

$# create a pfile
$ echo "db_name=PRODCDB
db_unique_name=DRSITECDB
control_files='/u01/app/oracle/oradata/DRSITECDB/controlfile/o1_mf_fvdyll4b_.ctl', '/u01/app/oracle/fra/DRSITECDB/controlfile/o1_mf_fvdyll6s_.ctl'
db_file_name_convert='PRODCDB','DRSITECDB'
log_file_name_convert='PRODCDB','DRSITECDB'
pdb_file_name_convert='PRODCDB','DRSITECDB'
db_recovery_file_dest='/u01/app/oracle/fra'
db_recovery_file_dest_size=4560M
compatible='12.1.0.2.0'
enable_pluggable_database = true
">/tmp/pfileDRSITECDB

 12c - only 

$ . oraenv
ORACLE_SID = [PRODCDB] ? DRSITECDB
The Oracle base remains unchanged with value /u01/app/oracle

$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Fri Oct 5 21:43:29 2018
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to an idle instance.

SQL> create spfile from pfile='/tmp/pfileDRSITECDB' ;
File created.

SQL> startup nomount;
ORACLE instance started.

$  rman target sys/oracle@PRODCDB auxiliary  sys/oracle@DRSITECDB

Recovery Manager: Release 12.1.0.2.0 - Production on Fri Oct 5 11:54:22 2018
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
connected to target database: PRODCDB (DBID=2986740707)
connected to auxiliary database: PRODCDB (not mounted)

RMAN> backup database;
.... < trunc output >
Finished backup at 05-OCT-18
Starting Control File and SPFILE Autobackup at 05-OCT-18
.... < trunc output >
Finished Control File and SPFILE Autobackup at 05-OCT-18

RMAN> duplicate target database for standby ;
.... < trunc output >
Finished Duplicate Db at 05-OCT-18



4 . DGMGRL – Criar a confguracao DG

A secao seginte irei usar DGMGRL  para terminar a configuracao, mas antes para e activar o parameteros do broker
  • dg_broker_config_file1
  • dg_broker_config_file2
  • dg_broker_start
Com dg_broker_start = TRUE , vamos entao usar a linha commando  para criar a configuracao.


$ sqlplus  sys/oracle@PRODCDB as sysdba

SQL> set lines 200
SQL> show parameter dg_brok
                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1PRODCDB.dat
dg_broker_config_file2               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr2PRODCDB.dat
dg_broker_start                      boolean     FALSE

SQL> alter system set dg_broker_start = TRUE scope=both;
SQL> System altered.

SQL> show parameter dg_brok
                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1PRODCDB.dat
dg_broker_config_file2               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr2PRODCDB.dat
dg_broker_start                      boolean     TRUE

SQL> exit


$ sqlplus  sys/oracle@DRSITECDB as sysdba

SQL> show parameter dg_brok

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1DRSITECDB.dat
dg_broker_config_file2               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr2DRSITECDB.dat
dg_broker_start                      boolean     FALSE

SQL> alter system set dg_broker_start = TRUE scope=both;
System altered.

SQL> show parameter dg_brok
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1DRSITECDB.dat
dg_broker_config_file2               string      /u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr2DRSITECDB.dat
dg_broker_start                      boolean     TRUE

SQL> exit


$ dgmgrl sys/oracle@PRODCDB
DGMGRL> CREATE CONFIGURATION PRODCDB_CONFIG AS  PRIMARY DATABASE IS "PRODCDB" CONNECT IDENTIFIER IS "PRODCDB";
Configuration "prodcdb_config" created with primary database "PRODCDB"

DGMGRL> ADD DATABASE "DRSITECDB" AS CONNECT IDENTIFIER IS   "DRSITECDB";
Database "DRSITECDB" added

DGMGRL> ENABLE CONFIGURATION;
Enabled.

DGMGRL> SHOW CONFIGURATION;

Configuration - prodcdb_config
Protection Mode: MaxPerformance
  Members:
  PRODCDB  - Primary database
    DRSITECDB - Physical standby database

Fast-Start Failover: DISABLED
Configuration Status:SUCCESS   (status updated 54 seconds ago)

5 . DGMGRL – Testar


OK - o post ja vai longo, vamos la verificar as configuracoes de DG, pode mos verificar que os parameteros foram preenchidos .


SQL> select NAME,VALUE from v$parameter where name in ('log_archive_dest_2','log_archive_dest_state_2','log_archive_config');

NAME                           VALUE
--------------------------- -------------------------------------------------------------------------
log_archive_dest_2          service="DRSITECDB", ASYNC NOAFFIRM delay=0 optional
                            compression=disable  max_failure=0 max_connections=1 reopen=300
                            db_unique_name="DRSITECDB" net_timeout=30, valid_for=(online_logfile,all_roles)
log_archive_dest_state_2    ENABLE
log_archive_config          dg_config=(PRODCDB,DRSITECDB)


SQL> set pages 50
set lines 200
col name form a10
col db_unique_name form a15
col log_mode form a15
col switchover_status form a20
col force_logging form a20
select name, db_unique_name, switchover_status, log_mode, flashback_on ,  force_logging from v$database;
SQL> SQL> SQL> SQL> SQL> SQL> SQL>
NAME       DB_UNIQUE_NAME  SWITCHOVER_STATUS    LOG_MODE        FLASHBACK_ON       FORCE_LOGGING
---------- --------------- -------------------- --------------- ------------------ --------------------
PRODCDB    PRODCDB         TO STANDBY           ARCHIVELOG      NO                 YES



Testar : Fazer switchover entre as bases de dados.

[oracle@oretail admin]$ dgmgrl sys/oracle@PRODCDB
DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production
Copyright (c) 2000, 2013, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected as SYSDBA.

DGMGRL> show configuration;
Configuration - prodcdb_config
  Protection Mode: MaxPerformance
  Members:
  PRODCDB   - Primary database
    DRSITECDB - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 14 seconds ago)

DGMGRL>  switchover to "DRSITECDB";
Performing switchover NOW, please wait...
Operation requires a connection to instance "DRSITECDB" on database "DRSITECDB"
Connecting to instance "DRSITECDB"...
Connected as SYSDBA.
New primary database "DRSITECDB" is opening...
Operation requires start up of instance "PRODCDB" on database "PRODCDB"
Starting instance "PRODCDB"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "DRSITECDB"

DGMGRL> show configuration;
Configuration - prodcdb_config
  Protection Mode: MaxPerformance
  Members:
  DRSITECDB - Primary database
    PRODCDB   - Physical standby database
Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 41 seconds ago)

DGMGRL>   switchover to "PRODCDB";
Performing switchover NOW, please wait...
Operation requires a connection to instance "PRODCDB" on database "PRODCDB"
Connecting to instance "PRODCDB"...
Connected as SYSDBA.
New primary database "PRODCDB" is opening...
Operation requires start up of instance "DRSITECDB" on database "DRSITECDB"
Starting instance "DRSITECDB"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "PRODCDB"

DGMGRL> show configuration;
Configuration - prodcdb_config
  Protection Mode: MaxPerformance
  Members:
  PRODCDB   - Primary database
    DRSITECDB - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 21 seconds ago)


Obrigado pela leitura, espero que este post o tenha ajudado...

Comments