Comment se prémunir d’un passage non souhaité en Real Time Query.
Comme vous le savez, dans une configuration Dataguard, il est possible de faire de la consultation “temps réel”!
C’est à dire que la base applique les redologs qu’elle reçoit de sa base primaire tout en étant ouverte en lecture seule.
C’est un Option de l’Enterprise Edition : Le Real Time Query.
Seulement lorsque votre serveur va redémarer, si vous n’avez pas géré ce cas particulier dans votre script de redémarrage,
votre base standby va démarrer en startup normal et se mettre par défaut dans le mode Real Time Query.
SQL> SELECT open_mode FROM V$DATABASE;
READ ONLY WITH APPLY
Comment faire pour ne pas utiliser malgré soi cette option payante?
il faut positionner (comme souvent) un paramètre caché : ‘_query_on_physical’
Il va nous prémunir d’un démarrage en mode Real Time Query en renvoyant une erreur “ORA-16669 : instance cannot be opened because the Active Data Guard option is disabled.”
Mais on pourra toujours ouvrir la base en lecture seule manuellement.
SQL> alter system set “_query_on_physical”=false scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 812529152 bytes
Fixed Size 2264280 bytes
Variable Size 960781800 bytes
Database Buffers 54654432 bytes
Redo Buffers 3498640 bytes
Database mounted.
ORA-16669: instance cannot be opened because the Active Data Guard option is
disabled
SQL> alter database open read only;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
——————–
READ ONLY
On est donc sûr de ne pas utiliser cette option malencontreusement!!!