Oracle Live

13/07/2016

Dataguard – Recuperar standby despues de un failover.

Filed under: Dataguard — mogukiller @ 5:42 pm
Tags:

Se me ha dado el caso de tener que hacer un failover de la standby y luego tener que recuperar la instancia. Con este procedimiento evitamos tener que hacer el restore de la standby, simplemente es necesario tener la flashback activa y crear un restore point antes del failover.

Version Test: 11g y 12c

'nota: Antes de esta prueba es necesario tener habilitada la flashback'

-- STANDBY:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.

SQL>CREATE RESTORE POINT before_standby_open GUARANTEE FLASHBACK DATABASE;

Restore point created.

SQL>ALTER DATABASE ACTIVATE STANDBY DATABASE;

Database altered.

SQL>STARTUP MOUNT FORCE;

Database mounted.

SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

Database altered.

SQL>ALTER DATABASE OPEN;

Database altered.

/*
   INST_ID NAME                           HOST                           START                          OPEN_MODE            DATABASE_ROLE
---------- ------------------------------ ------------------------------ ------------------------------ -------------------- ----------------
         1 test12c                        mogubedb11                     2016/07/13 18:01:35            READ WRITE           PRIMARY

*/

-- Simulamos algo de trafico

INSERT INTO PRUEBA VALUES (1,'valor1');
INSERT INTO PRUEBA VALUES (2,'valor2');
INSERT INTO PRUEBA VALUES (3,'valor3');
INSERT INTO PRUEBA VALUES (4,'valor4');
INSERT INTO PRUEBA VALUES (5,'valor5');
INSERT INTO PRUEBA VALUES (6,'valor6');
INSERT INTO PRUEBA VALUES (7,'valor7');
commit;

SQL>SELECT CURRENT_SCN FROM V$DATABASE;
/*
CURRENT_SCN
-----------
    1502444
*/

SQL>STARTUP MOUNT FORCE;
/*
Database mounted.
*/
set linesize 121
col name format a15
col time format a32

SQL>SELECT name, scn, time, database_incarnation#, guarantee_flashback_database, storage_size FROM gv$restore_point;

/*
NAME                        SCN TIME                              DATABASE_INCARNATION# GUA STORAGE_SIZE
-------------------- ---------- --------------------------------- --------------------- --- ------------
BEFORE_STANDBY_OPEN     1501122 13-JUL-16 06.05.20.000000000 PM                       1 YES     52428800
*/

-- Llevamos la base de datos al restore point antes del failover.

SQL>FLASHBACK DATABASE TO RESTORE POINT before_standby_open;
/*
Flashback complete.
*/

SQL>SELECT CURRENT_SCN FROM V$DATABASE;
/*
CURRENT_SCN
-----------
    1501122	<<<< Ha retrocedido el scn a antes del failover.
*/

-- Convertimos la base de datos a standby.

SQL>ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
/*
Database altered.
*/

/*
NAME      HOST          START                   OPEN_MODE            DATABASE_ROLE
--------- ------------- ----------------------- -------------------- ----------------
test12c   mogubedb11    2016/07/13 18:29:02     MOUNTED              PHYSICAL STANDBY
*/

SQL>SELECT CURRENT_SCN FROM V$DATABASE;
/*
CURRENT_SCN
-----------
    1501122	<<<< Ha retrocedido el scn a antes del failover.
*/
SQL>STARTUP MOUNT FORCE;
/*
Database mounted.
*/
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
/*
Database altered.
*/

-- Borramos el restore point para que purge los ficheros de flashback.

SQL>drop restore point before_standby_open;
/*
Restore point dropped.
*/

Deja un comentario »

No hay comentarios aún.

RSS feed for comments on this post. TrackBack URI

Deja un comentario

Crea una web o blog en WordPress.com