Snažil jsem se zapojit non-CDB do našeho nového multitenantského prostředí, když jsme přecházeli na multitenanta. Vytvořím zlatý obraz naší produkce bez CDB a všechny vývojářské a testovací databáze budou jen klony zlatého obrazu. Ale nejdřív musím zapojit non-CDB. Mám snímek disku připojený k databázovým serverům Multitenant. Také jsem vygeneroval soubor XML a jsem připraven zapojit non-CDB pomocí tohoto příkazu:
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;
Bohužel jsem narazil na následující chybu:
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)
V mém výzkumu je chyba ORA-65139 normálně vidět, když byl soubor XML vygenerován s databází otevřenou jako READ WRITE. Ale vím jistě, že moje databáze byla při vygenerování souboru XML POUZE ČTENÁ. Kromě toho všechny podobné problémy, které jsem našel na MOS a ve vyhledávání Google, měly „value of fcpsb“, zatímco poslední řádek mé chybové zprávy říká „value of rdba“. Nejsem si jistý, co s tím má RDBA společného a žádná z hodnot v chybové zprávě se nemapuje na výpis datového souboru ve zprávě. Tak tohle byl pro mě hlavolam.
Po vyzkoušení několika různých věcí jsem se rozhodl spustit kontrolu kompatibility pluginu.
DECLARE compatible BOOLEAN; BEGIN compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file=>'/home/oracle/source_db.xml', pdb_name=>'GOLD180904'); END; /
Při dotazu PDB_PLUG_IN_VIOLATIONS na jednom řádku byla chyba. Jeho zpráva v tomto zobrazení zněla:
Oprava balíčku PSU 180717 (AKTUALIZACE OPRAVY DATABÁZE 12.1.0.2.180717):Instalováno v PDB, ale ne v CDB.
To teď dává větší smysl. Zdrojová databáze je produkční prostředí s aplikovaným nejnovějším PSU. CDB je zbrusu nové a ještě se nedočkaly žádných oprav. Použil jsem nejnovější PSU na CDB a operace pluginu fungovala úspěšně na další pokus.
Nakonec bylo zřejmé, že chybová zpráva nemá nic společného s hlavní příčinou problému. Alespoň mně ne.