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.