sql >> Base de Datos >  >> RDS >> Oracle

ORA-65139:Discrepancia entre el archivo de metadatos XML y el archivo de datos

Estaba tratando de conectar un no-CDB en nuestro nuevo entorno Multitenant mientras hacemos el cambio a Multitenant. Voy a crear una imagen dorada de nuestra producción que no sea CDB y luego todas las bases de datos de desarrollo y prueba serán simplemente clones de la imagen dorada. Pero primero, necesito conectar el que no sea CDB. Tengo la instantánea del disco montada en los servidores de base de datos multiusuario. También generé el archivo XML y estoy listo para conectar el que no es CDB con 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;

Desafortunadamente, me encontré con el siguiente error:

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)

En mi investigación, el error ORA-65139 normalmente se ve cuando el archivo XML se generó con la base de datos abierta como LEER ESCRIBIR. Pero sé con certeza que mi base de datos fue de SÓLO LECTURA cuando se generó el archivo XML. Además, todos los problemas similares que encontré en MOS y en las búsquedas de Google tenían "valor de fcpsb", mientras que la última línea de mi mensaje de error dice "valor de rdba". Bueno, no estoy seguro de qué tiene que ver RDBA con esto y ninguno de los valores en el mensaje de error se asigna a la lista de archivos de datos en el mensaje. Así que esto fue un rompecabezas para mí.

Después de probar algunas cosas diferentes, decidí ejecutar la verificación de compatibilidad de complementos.

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

Al consultar PDB_PLUG_IN_VIOLATIONS, una línea tenía un error. Su mensaje en esa vista decía:

Parche de paquete de PSU 180717 (ACTUALIZACIÓN DE CONFIGURACIÓN DE PARCHE DE BASE DE DATOS 12.1.0.2.180717):Instalado en el PDB pero no en el CDB.

Esto ahora tiene más sentido. La base de datos de origen es un entorno de producción con la PSU más reciente aplicada. El CDB es completamente nuevo y aún no ha visto ningún parche. Apliqué la última fuente de alimentación al CDB y la operación del complemento funcionó correctamente en el siguiente intento.

Al final, era obvio que el mensaje de error no tenía nada que ver con la raíz del problema. Al menos no para mí.