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.