J'essayais de brancher un non-CDB dans notre nouvel environnement multilocataire alors que nous passons au multilocataire. Je vais créer une image dorée de notre production non-CDB, puis toutes les bases de données de développement et de test seront simplement des clones de l'image dorée. Mais d'abord, je dois brancher le non-CDB. J'ai l'instantané de disque monté sur les serveurs de base de données mutualisés. J'ai également généré le fichier XML et je suis prêt à brancher le non-CDB avec cette commande :
CREATE PLUGGABLE DATABASE gold180904 USING '/home/oracle/source_db.xml' NOCOPY SOURCE_FILE_NAME_CONVERT=('/u01/app/oracle/oradata/data01', '/u01/app/oracle/oradata/mt_golden_2018_09_06_095555/data01', '/u01/app/oracle/oradata/data02','/u01/app/oracle/oradata/mt_golden_2018_09_06_095555/data02', '/u01/app/oracle/oradata/data03','/u01/app/oracle/oradata/mt_golden_2018_09_06_095555/data03', '/u01/app/oracle/oradata/data04','/u01/app/oracle/oradata/mt_golden_2018_09_06_095555/data04') TEMPFILE REUSE;
Malheureusement, j'ai rencontré l'erreur suivante :
CREATE PLUGGABLE DATABASE gold180904 * ERROR at line 1: ORA-65139: Mismatch between XML metadata file and data file /u01/app/oracle/oradata/mt_golden_2018_09_06_095555/data03/datafile12.dbf for value of rdba (4194824 in the plug XML file, 4458552 in the data file)
Dans mes recherches, l'erreur ORA-65139 est normalement observée lorsque le fichier XML a été généré avec la base de données ouverte en tant que READ WRITE. Mais je sais pertinemment que ma base de données était en LECTURE SEULE lorsque le fichier XML a été généré. De plus, tous les problèmes similaires que j'ai trouvés sur MOS et dans les recherches Google avaient tous la "valeur de fcpsb" alors que la dernière ligne de mon message d'erreur indique "valeur de rdba". Eh bien, je ne sais pas ce que le RDBA a à voir avec cela et aucune des valeurs du message d'erreur ne correspond à la liste des fichiers de données dans le message. C'était donc une énigme pour moi.
Après avoir essayé différentes choses, j'ai décidé d'exécuter la vérification de la compatibilité des plugins.
DECLARE compatible BOOLEAN; BEGIN compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file=>'/home/oracle/source_db.xml', pdb_name=>'GOLD180904'); END; /
Lors de l'interrogation de PDB_PLUG_IN_VIOLATIONS, une ligne comportait une erreur. Son message dans cette vue disait :
Patch PSU bundle 180717 (DATABASE PATCH SET UPDATE 12.1.0.2.180717) :Installé dans la PDB mais pas dans la CDB.
Cela a maintenant plus de sens. La base de données source est un environnement de production avec la dernière PSU appliquée. Le CDB est tout nouveau et n'a pas encore vu de correctifs. J'ai appliqué le dernier bloc d'alimentation au CDB et l'opération de plug-in a fonctionné avec succès lors de la prochaine tentative.
En fin de compte, il était évident que le message d'erreur n'avait rien à voir avec la cause première du problème. Du moins pas pour moi.