sql >> Database >  >> RDS >> Oracle

ORA-65139:Mismatch tussen XML-metadatabestand en databestand

Ik probeerde een niet-CDB aan te sluiten op onze nieuwe Multitenant-omgeving terwijl we overstapten naar Multitenant. Ik ga een gouden afbeelding maken van onze productie niet-CDB en dan zullen alle ontwikkel- en testdatabases gewoon klonen zijn van de gouden afbeelding. Maar eerst moet ik de niet-CDB aangesloten krijgen. Ik heb de schijf-snapshot gekoppeld aan de Multitenant-databaseservers. Ik heb ook het XML-bestand gegenereerd en ik ben klaar om de niet-CDB in te pluggen met deze opdracht:

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;

Helaas kwam ik de volgende fout tegen:

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 mijn onderzoek wordt de ORA-65139-fout normaal gezien wanneer het XML-bestand werd gegenereerd met de database geopend als READ WRITE. Maar ik weet zeker dat mijn database ALLEEN LEZEN was toen het XML-bestand werd gegenereerd. Bovendien hadden alle vergelijkbare problemen die ik op MOS en in Google-zoekopdrachten vond, allemaal "waarde van fcpsb", terwijl de laatste regel van mijn foutmelding "waarde van rdba" zegt. Nou, ik weet niet zeker wat de RDBA hiermee te maken heeft en geen van de waarden in het foutbericht verwijst naar de gegevensbestandslijst in het bericht. Dus dit was een puzzel voor mij.

Na een paar verschillende dingen te hebben geprobeerd, besloot ik de compatibiliteit van plug-ins te controleren.

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

Bij het opvragen van PDB_PLUG_IN_VIOLATIONS bevatte één regel een fout. Het bericht in die weergave zei:

PSU-bundelpatch 180717 (DATABASE PATCH SET UPDATE 12.1.0.2.180717):Geïnstalleerd in de PDB maar niet in de CDB.

Dit is nu logischer. De brondatabase is een productieomgeving waarop de nieuwste PSU is toegepast. De CDB is gloednieuw en heeft nog geen patches gezien. Ik heb de nieuwste PSU op de CDB toegepast en de bewerking van de plug-in werkte bij de volgende poging succesvol.

Uiteindelijk was het duidelijk dat de foutmelding niets te maken had met de oorzaak van het probleem. In ieder geval niet voor mij.


  1. MySQL - lengte() versus char_length()

  2. Kerstcadeaus bezorgen:het gegevensmodel van de kerstman

  3. Gehumaniseerde of natuurlijke nummersortering van gemengde woord-en-nummerreeksen

  4. Hoe verwijder ik uitgebreide ASCII-tekens uit een tekenreeks in T-SQL?