Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-65139:mancata corrispondenza tra file di metadati XML e file di dati

Stavo cercando di collegare un non CDB al nostro nuovo ambiente Multitenant mentre ci spostiamo a Multitenant. Creerò un'immagine dorata della nostra produzione non CDB e quindi tutti i database di sviluppo e test saranno solo cloni dell'immagine dorata. Ma prima, devo collegare il non CDB. Ho lo snapshot del disco montato sui server di database Multitenant. Ho anche generato il file XML e sono pronto per collegare il non CDB con questo comando:

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;

Sfortunatamente, ho riscontrato il seguente errore:

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)

Nella mia ricerca, l'errore ORA-65139 viene normalmente visualizzato quando il file XML è stato generato con il database aperto come READ WRITE. Ma so per certo che il mio database era SOLO LETTURA quando è stato generato il file XML. Inoltre, tutti i problemi simili che ho trovato su MOS e nelle ricerche di Google avevano tutti "value of fcpsb" mentre l'ultima riga del mio messaggio di errore dice "value of rdba". Bene, non sono sicuro di cosa abbia a che fare l'RDBA con questo e nessuno dei valori nel messaggio di errore mappa all'elenco del file di dati nel messaggio. Quindi questo è stato un enigma per me.

Dopo aver provato alcune cose diverse, ho deciso di eseguire il controllo della compatibilità dei plug-in.

DECLARE
compatible BOOLEAN;
BEGIN
compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
     pdb_descr_file=>'/home/oracle/source_db.xml',
     pdb_name=>'GOLD180904');
END;
/

Durante l'esecuzione di query su PDB_PLUG_IN_VIOLATIONS, si è verificato un errore in una riga. Il suo messaggio in quel punto diceva:

Patch bundle PSU 180717 (DATABASE PATCH SET UPDATE 12.1.0.2.180717):installato nel PDB ma non nel CDB.

Questo ora ha più senso. Il database di origine è un ambiente di produzione con l'ultima PSU applicata. Il CDB è nuovo di zecca e non ha ancora visto alcuna patch. Ho applicato l'ultima PSU al CDB e l'operazione del plug-in ha funzionato correttamente al prossimo tentativo.

Alla fine, era ovvio che il messaggio di errore non avesse nulla a che fare con la causa principale del problema. Almeno non a me.