Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-65139:Diskrepanz zwischen XML-Metadatendatei und Datendatei

Ich habe versucht, eine Nicht-CDB in unsere neue Multitenant-Umgebung einzubinden, während wir auf Multitenant umsteigen. Ich werde ein Golden Image unserer Produktions-Nicht-CDB erstellen und dann werden alle Entwicklungs- und Testdatenbanken nur Klone des Golden Image sein. Aber zuerst muss ich die Nicht-CDB anschließen. Ich habe den Festplatten-Snapshot auf den Multitenant-Datenbankservern gemountet. Ich habe auch die XML-Datei generiert und bin bereit, die Nicht-CDB mit diesem Befehl einzufügen:

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;

Leider bin ich auf folgenden Fehler gestoßen:

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)

In meinen Recherchen wird der ORA-65139-Fehler normalerweise angezeigt, wenn die XML-Datei mit geöffneter Datenbank als READ WRITE generiert wurde. Aber ich weiß genau, dass meine Datenbank NUR LESEN war, als die XML-Datei generiert wurde. Darüber hinaus hatten alle ähnlichen Probleme, die ich auf MOS und in Google-Suchen gefunden habe, alle „Wert von fcpsb“, während die letzte Zeile meiner Fehlermeldung „Wert von rdba“ sagt. Nun, ich bin mir nicht sicher, was der RDBA damit zu tun hat, und keiner der Werte in der Fehlermeldung entspricht der Datendateiliste in der Nachricht. Das war also ein Rätsel für mich.

Nachdem ich ein paar verschiedene Dinge ausprobiert hatte, entschied ich mich, die Prüfung auf Plugin-Kompatibilität durchzuführen.

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

Bei der Abfrage von PDB_PLUG_IN_VIOLATIONS war in einer Zeile ein Fehler aufgetreten. Seine Nachricht in dieser Ansicht lautete:

PSU-Bundle-Patch 180717 (DATENBANK-PATCH-SETUPDATE 12.1.0.2.180717):Installiert in der PDB, aber nicht in der CDB.

Das macht jetzt mehr Sinn. Die Quelldatenbank ist eine Produktionsumgebung mit dem neuesten angewendeten Netzteil. Die CDB ist brandneu und hat noch keine Patches gesehen. Ich habe das neueste Netzteil auf die CDB angewendet und der Plugin-Vorgang hat beim nächsten Versuch erfolgreich funktioniert.

Am Ende war es offensichtlich, dass die Fehlermeldung nichts mit der eigentlichen Ursache des Problems zu tun hatte. Zumindest nicht für mich.