Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-65139:Incompatibilidade entre o arquivo de metadados XML e o arquivo de dados


Eu estava tentando conectar um não-CDB em nosso novo ambiente Multitenant enquanto mudamos para Multitenant. Eu vou criar uma imagem dourada de nossa produção não-CDB e então todos os bancos de dados de desenvolvimento e teste serão apenas clones da imagem dourada. Mas primeiro, preciso conectar o não-CDB. Tenho o instantâneo de disco montado nos servidores de banco de dados Multitenant. Também gerei o arquivo XML e estou pronto para conectar o não-CDB com este comando:
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;

Infelizmente, me deparei com o seguinte erro:
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)

Na minha pesquisa, o erro ORA-65139 normalmente é visto quando o arquivo XML foi gerado com o banco de dados aberto como READ WRITE. Mas eu sei de fato que meu banco de dados foi READ ONLY quando o arquivo XML foi gerado. Além disso, todos os problemas semelhantes que encontrei no MOS e nas pesquisas do Google tinham “valor de fcpsb”, enquanto a última linha da minha mensagem de erro diz “valor de rdba”. Bem, não tenho certeza do que o RDBA tem a ver com isso e nenhum dos valores no mapa da mensagem de erro para a listagem do arquivo de dados na mensagem. Então isso foi um quebra-cabeças para mim.

Depois de tentar algumas coisas diferentes, decidi executar a verificação da compatibilidade do plugin.
DECLARE
compatible BOOLEAN;
BEGIN
compatible:=DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
     pdb_descr_file=>'/home/oracle/source_db.xml',
     pdb_name=>'GOLD180904');
END;
/

Ao consultar PDB_PLUG_IN_VIOLATIONS, houve um erro em uma linha. Sua mensagem nessa visão dizia:

Patch do pacote PSU 180717 (DATABASE PATCH SET UPDATE 12.1.0.2.180717):Instalado no PDB, mas não no CDB.

Isso agora faz mais sentido. O banco de dados de origem é um ambiente de produção com a PSU mais recente aplicada. O CDB é novo e ainda não viu nenhum patch. Apliquei a PSU mais recente ao CDB e a operação do plug-in funcionou com sucesso na próxima tentativa.

No final, ficou óbvio que a mensagem de erro não tinha nada a ver com a causa raiz do problema. Pelo menos não para mim.