Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-65139:Niezgodność między plikiem metadanych XML a plikiem danych

Próbowałem podłączyć platformę inną niż CDB do naszego nowego środowiska Multitenant, gdy przechodzimy na Multitenant. Zamierzam stworzyć złoty obraz naszej produkcyjnej bazy danych innej niż CDB, a następnie wszystkie bazy deweloperskie i testowe będą po prostu klonami ze złotego obrazu. Ale najpierw muszę podłączyć dysk inny niż CDB. Mam migawkę dysku zamontowaną na serwerach baz danych Multitenant. Wygenerowałem również plik XML i jestem gotowy do podłączenia nie-CDB za pomocą tego polecenia:

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;

Niestety, napotkałem następujący błąd:

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)

W moich badaniach błąd ORA-65139 jest zwykle widoczny, gdy plik XML został wygenerowany z bazą danych otwartą jako READ WRITE. Ale wiem na pewno, że moja baza danych była TYLKO DO ODCZYTU podczas generowania pliku XML. Co więcej, wszystkie podobne problemy, które znalazłem w MOS i wyszukiwaniu Google, wszystkie miały „wartość fcpsb”, podczas gdy ostatnia linia mojego komunikatu o błędzie mówi „wartość rdba”. Cóż, nie jestem pewien, co ma z tym wspólnego RDBA i żadna z wartości w komunikacie o błędzie nie jest odwzorowana na listę plików danych w komunikacie. Więc to była dla mnie zagadka.

Po wypróbowaniu kilku różnych rzeczy postanowiłem sprawdzić zgodność wtyczek.

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

Podczas wysyłania zapytania PDB_PLUG_IN_VIOLATIONS jeden wiersz zawierał błąd. Jego przesłanie w tym widoku brzmiało:

Poprawka pakietu zasilacza 180717 (AKTUALIZACJA ZESTAWU POPRAWEK BAZY DANYCH 12.1.0.2.180717):Zainstalowana w PDB, ale nie w CDB.

To teraz ma więcej sensu. Źródłowa baza danych to środowisko produkcyjne z zastosowanym najnowszym zasilaczem. CDB jest zupełnie nowy i jeszcze nie widzieliśmy żadnych poprawek. Zastosowałem najnowszy zasilacz do CDB i działanie wtyczki zadziałało pomyślnie przy następnej próbie.

W końcu było oczywiste, że komunikat o błędzie nie ma nic wspólnego z pierwotną przyczyną problemu. Przynajmniej nie dla mnie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie procedury składowanej Java w programie Java

  2. Wyodrębnianie całkowitej liczby sekund z typu danych interwału

  3. Wstaw zbiorczy do Oracle za pomocą .NET

  4. ORACLE - ORA-01843:niepoprawny miesiąc

  5. 4 sposoby wstawiania wielu wierszy w Oracle