Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-65139:Несъответствие между XML файл с метаданни и файл с данни

Опитвах се да включа не-CDB в нашата нова мултитенантна среда, докато преминаваме към Multitenant. Ще създам златно изображение на нашето производство, не-CDB, и тогава всички бази данни за разработчици и тестове ще бъдат просто клонинги на златното изображение. Но първо трябва да включа не-CDB. Имам моментна снимка на диска, монтирана към сървърите на база данни на Multitenant. Също така генерирах XML файла и съм готов да включа не-CDB с тази команда:

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;

За съжаление попаднах на следната грешка:

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)

В моето изследване грешката ORA-65139 обикновено се вижда, когато XML файлът е генериран с отворена база данни като READ WRITE. Но знам със сигурност, че моята база данни беше САМО ЧЕТЕНЕ, когато беше генериран XML файл. Освен това всички подобни проблеми, които открих в MOS и в търсенията в Google, имаха „стойност на fcpsb“, докато последният ред на съобщението ми за грешка казва „стойност на rdba“. Е, не съм сигурен какво общо има RDBA с това и нито една от стойностите в съобщението за грешка не се преобразува в списъка с файлове с данни в съобщението. Така че това беше озадачаващо за мен.

След като опитах няколко различни неща, реших да пусна проверка за съвместимост с плъгини.

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

При заявка PDB_PLUG_IN_VIOLATIONS един ред имаше грешка. Неговото съобщение в този изглед гласи:

Пакет за PSU 180717 (АКТУАЛИЗАЦИЯ НА НАСТРОЙКА НА БАЗА ДАННИ 12.1.0.2.180717):Инсталирана в PDB, но не и в CDB.

Това сега има повече смисъл. Базата данни източник е производствена среда с най-новото захранване. CDB е чисто нов и все още не е виждал никакви пачове. Приложих най-новото захранване към CDB и операцията на приставката работи успешно при следващия опит.

В крайна сметка беше очевидно, че съобщението за грешка няма нищо общо с основната причина за проблема. Поне не за мен.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлики в Oracle между NVL и Coalesce

  2. Защо Mysql's Group By и Oracle's Group по поведение са различни

  3. Поправка:„главната прецизност на интервала е твърде малка“ в Oracle Database

  4. Как да получите последния ден от месеца в Oracle

  5. PL/SQL разпечатва референтния курсор, върнат от съхранена процедура