Dernièrement nous avons du installer une plate-forme Oracle Database Appliance X6-2 HA chez un de nos clients, le contexte était somme toute classique puisqu’il suffisait de migrer simplement si j’ose dire un cluster RAC 11.2.0.4 sous linux x86-64 vers cette appliance.
La solution retenue pour effectuer cette migration était de créer une base de secours sur l’appliance Oracle, ce qui nous permettait d’envisager en toute indépendance les tests de recette technique et de performance en avance de phase puis de planifier sereinement la bascule sur ce nouvel environnement lors de la mise en production.
Mais qu’elle ne fut pas ma surprise lorsque je découvrais que l’appliance ODA X6-2 HA en version 12.1.2.9.0 qui venait de sortir était incompatible avec les versions Oracle 11.2 !
L’origine du problème provient en fait du déploiement et de la création des groupes de disques ASM (DATA, REDO, RECO) qui attribue un mode de compatibilité pour les bases de données Oracle fixé à 12.1.0.2.
Alors, comment faire pour ne pas retarder le projet et pouvoir effectuer les tests de non régression obligatoires du fait de la montée en version en 12c, et cela sans impacter l’application d’origine ?
La seule solution était que notre appliance puisse accepter provisoirement une base de données Standby 11.2.0.4 à partir de laquelle nous allions pouvoir cloner une nouvelle base en 12c pour pouvoir effectuer nos tests de non régression.
En scrutant dans les scripts de déploiement des composants du cluster Grid Infrastructure, j’ai pu constater que l’attribut rdbms.compatible était initialisé à 12.1.0.2.0 pour les groupes de disques ASM. Encore faut-il délimiter les fichiers dans lesquels il faut apporter cette modification.
Par chance, ces fichiers sont peu nombreux et se trouvent tous dans le répertoire /opt/oracle/oak/onecmd . La liste est la suivante :
- GridSteps.pm
- runodaDg.pl
- asmapplconf_header_X6_2_ODA_HA_exp.txt
- asmapplconf_header_X6_2_ODA_HA_J2.txt
- asmapplconf_header_X6_2_ODA_HA.txt
Avant d’effectuer les modifications sur ces fichiers, il est prudent de conserver une sauvegarde de ceux-ci dans leur état initial, puis d’effectuer le déploiement des composants Oracle et la configuration ODA.
Remplacer les valeurs en rouge ou texte <span style="color: #ff0000;" par la version 11gR2 qui doit être obligatoirement être égale ou supérieure à la release 11.2.0.2 [root@easyteam01 onecmd]# grep -n compatible.rdbms GridSteps.pm 13383: $str .= "-compatible.asm 12.1.0.2 -compatible.rdbms 11.2.0.2 " . 13886: print REDO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='12.1.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='redo','compatible.advm'='12.1.0.2';\n"; 13889: print REDO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='11.2.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='redo','compatible.advm'='12.1.0.2';\n"; 13987: print RECO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='12.1.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='recovery','compatible.advm'='12.1.0.2';\n"; 13990: print RECO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='11.2.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='recovery','compatible.advm'='12.1.0.2';\n"; 14116: print REDO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='12.1.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='data','compatible.advm'='12.1.0.2';\n"; 14119: print REDO "attribute 'compatible.asm'='12.1.0.2', 'compatible.rdbms'='11.2.0.2','sector_size'='512','AU_SIZE'='4M','content.type'='data','compatible.advm'='12.1.0.2';\n"; 14418: MsgPrint("I", "Setting compatible.rdbms to 12.1.0.2 for all diskgroups, " 14422: MsgPrint("I", "Setting compatible.rdbms to 11.2.0.2 for all diskgroups, " [root@easyteam01 onecmd]# grep -n rdbms runodaDg.pl 147: $createdgsql .= " attribute 'compatible.asm'='12.1.0.2','compatible.rdbms'='12.1.0.2','AU_SIZE'='4M','content.type'='data'"; 150: $createdgsql .= " attribute 'compatible.asm'='12.1.0.2','compatible.rdbms'='11.2.0.2','AU_SIZE'='4M','content.type'='data'"; [root@easyteam01 onecmd]# grep -n rdbms asm*ODA_HA* asmapplconf_header_X6_2_ODA_HA_exp.txt:14:attr rdbms_compatibility 12.1.0.2 asmapplconf_header_X6_2_ODA_HA_J2.txt:14:attr rdbms_compatibility 12.1.0.2 asmapplconf_header_X6_2_ODA_HA.txt:14:attr rdbms_compatibility 12.1.0.2
Maintenant, vous pouvez effectuer votre déploiement en toute tranquillité et vérifier que les groupes de disques ASM disposent des bons attributs.
# oakcli deploy [root@easyteam01 onecmd]# su - grid [grid@easyteam01 ~]$ asmcmd ASMCMD> lsattr -G DATA -l Name Value access_control.enabled FALSE access_control.umask 066 appliance._partnering_type ODA FIXED appliance.mode TRUE appliance.name ODA au_size 4194304 cell.smart_scan_capable FALSE cell.sparse_dg allnonsparse compatible.advm 12.1.0.2 compatible.asm 12.1.0.2.0 compatible.rdbms 11.2.0.2.0 content.check FALSE content.type data disk_repair_time 3.6h failgroup_repair_time 24.0h idp.boundary auto idp.type dynamic logical_sector_size 512 phys_meta_replicated true sector_size 512 thin_provisioned FALS
Ne pas oublier, lorsque vous avez migré votre base de données en 12c et que vous ne désirez plus héberger d’autres bases de données autre que la 12c, de basculer le mode de compatibilité en 12.1.0.2. dans ASM
[root@easyteam01 onecmd]# su - grid [grid@easyteam01 ~]$ asmcmd ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.rdbms' = '12.1'; ALTER DISKGROUP REDO SET ATTRIBUTE 'compatible.rdbms' = '12.1'; ALTER DISKGROUP RECO SET ATTRIBUTE 'compatible.rdbms' = '12.1';
Bien garder à l’esprit qu’il ne s’agit que d’un contournement temporaire pour pallier les restrictions de l’ODA X6-2 HA et que cette configuration ne peut pas être pérenne.