Ceci est mon 100ème article sur ce blog !!!
J'essaie de dupliquer un problème où j'ai les threads 4, 5 et 6 dans mon primaire et mon standby a les threads 1 et 2. Quand j'ai fait un basculement, tout allait bien, mais je ne pouvais pas revenir en arrière car l'ancien primaire, maintenant, le standby attend une refonte du thread 4 qui n'existe pas dans mon nouveau primaire, l'ancien standby. Pour mes tests, j'ai un RAC principal à 2 nœuds et un RAC de secours à 2 nœuds. Comme on pouvait s'y attendre, ceux-ci ont tous les deux les threads 1 et 2. J'ai donc tenté de basculer le primaire vers les threads 3 et 4 en modifiant simplement le paramètre THREADS dans le SPFILE. Mais au démarrage, j'ai reçu :
PRCR-1079 : Failed to start resource ora.resp.db CRS-5017: The resource action "ora.resp.db start" encountered the following error: ORA-01618: redo thread 3 is not enabled - cannot mount . For details refer to "(:CLSN00107:)" in "/u01/app/crs11.2.0.3/log/myhost01/agent/crsd/oraagent_oracle/oraagent_oracle.log". CRS-2674: Start of 'ora.resp.db' on 'myhost01' failed CRS-2632: There are no more servers to try to place resource 'ora.resp.db' on that would satisfy its placement policy CRS-5017: The resource action "ora.resp.db start" encountered the following error: ORA-01618: redo thread 4 is not enabled - cannot mount . For details refer to "(:CLSN00107:)" in "/u01/app/crs11.2.0.3/log/myhost02/agent/crsd/oraagent_oracle/oraagent_oracle.log". CRS-2674: Start of 'ora.resp.db' on 'myhost02' failed
Ce n'est pas un simple changement de paramètre. Pour contourner ce problème, nous devons d'abord créer des journaux redo en ligne pour prendre en charge les nouveaux threads :
SQL> alter database add logfile thread 3 group 30 2 '/oracle_data/oradata/resp/redo30.log' size 52429312; Database altered. SQL> alter database add logfile thread 3 group 31 2 '/oracle_data/oradata/resp/redo31.log' size 52429312; Database altered. SQL> alter database add logfile thread 4 group 40 2 '/oracle_data/oradata/resp/redo40.log' size 52429312; Database altered. SQL> alter database add logfile thread 4 group 41 2 '/oracle_data/oradata/resp/redo41.log' size 52429312; Database altered.
Ensuite, nous activons les threads.
SQL> alter database enable public thread 3; Database altered. SQL> alter database enable public thread 4; Database altered.
Lastly, we change the initialization parameters and bounce the instance:
SQL> alter system set thread=3 sid='resp1' scope=spfile; System altered. SQL> alter system set thread=4 sid='resp2' scope=spfile; System altered.Puis rebondissez les instances avec srvctl. Une fois tout sauvegardé, j'ai désactivé les threads 1 et 2.
SQL> alter database disable thread 1; Database altered. SQL> alter database disable thread 2; Database altered.