Translate

lundi 13 juillet 2015

ORA-01153: an incompatible media recovery is active

Une des fonctionnalités le plus importantes que nous avons avec Oracle c'est le FLASHBACK.

Cependant il se peut que de temps en temps on rencontre un message d'erreur comme celle-ci, surtout lorsque une configuration DataGuard est sur place : 


SQL> ALTER DATABASE FLASHBACK ON ;
ALTER DATABASE FLASHBACK ON
*
ERROR at line 1:
ORA-01153: an incompatible media recovery is active



Avant de commencer on peut valider si le flashback est actif ou non.

SET LINESIZE 400
SELECT NAME          , STATUS      , INSTANCE_NAME,
       DB_UNIQUE_NAME, FLASHBACK_ON, DATABASE_ROLE, 
       LOG_MODE 
  FROM V$DATABASE, V$INSTANCE ;

NAME  STATUS  INSTANCE_NAME  DB_UNIQUE_NAME FLASHBACK_ON DATABASE_ROLE    LOG_MODE
----- ------- ------------- --------------- ------------ ---------------- ------------
TEST  MOUNTED TEST           TEST_S         NO           PHYSICAL STANDBY ARCHIVELOG


Comme dans mon cas, une configuration avec le broker existe, je dois aller sur mon site primaire et désactiver le recovery sur la StandBy

$ dgmgrl
DGMGRL> connect sys@test_p
Password:
Connected.

DGMGRL> show configuration
Configuration - evta
  Protection Mode: MaxPerformance
  Databases:
    test_p - Primary database
    test_s - Physical standby database

  Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS


DGMGRL> EDIT DATABASE "test_s" SET STATE='APPLY-OFF';


Maintenant que le recovery est désactivé, on peut revenir sur le site StandBy et relancer la commande d'activation du Flashback

SQL>    ALTER DATABASE FLASHBACK ON ;
Database altered.


Et maintenant 

SET LINESIZE 400
SELECT NAME          , STATUS      , INSTANCE_NAME,
       DB_UNIQUE_NAME, FLASHBACK_ON, DATABASE_ROLE, 
       LOG_MODE 
  FROM V$DATABASE, V$INSTANCE ;

NAME  STATUS  INSTANCE_NAME  DB_UNIQUE_NAME FLASHBACK_ON DATABASE_ROLE    LOG_MODE
----- ------- ------------- --------------- ------------ ---------------- ------------
TEST  MOUNTED TEST           TEST_S         YES          PHYSICAL STANDBY ARCHIVELOG


Maintenant que le Flashback est actif comme on voulait, on peut réactiver le recovery.

$ dgmgrl
DGMGRL> connect sys@test_p
Password:
Connected.

DGMGRL> show configuration
Configuration - evta
  Protection Mode: MaxPerformance
  Databases:
    test_p - Primary database
    test_s - Physical standby database

  Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS


DGMGRL> EDIT DATABASE "test_s" SET STATE='APPLY-ON';

Et voilà.