Pluggable Database Cross Platform Migration – leider nein: ORA-19928

Oracle bietet viele Varianten für eine Cross Platform Migration und dem Wechsel der CPU-Architektur(Endianess), beispielsweise von AIX nach Linux, Solaris SPARC nach Windows etc.

  • Datapump Export/Import (10.1.0.2 oder höher)
  • Transportable Tablespaces (10g oder höher)
  • RMAN Convert Database  (10g oder höher)
  • Streams Replication
  • Create Table As Select (CTAS)
  • Dataguard Heterogeneous Primary and Physical Standby
  • Oracle Golden Gate

Im Test wollte ich herausfinden, ob man eine Pluggable Database von AIX nach Linux mit einem einfachen RMAN Convert migrieren kann. Ausgangslage ist eine 12.1.0.2 Pluggable Datenbank auf AIX 7.1 mit drei Tablespaces (SYSAUX; SYSTEM, USERS), Zielplattform ist eine 12.1.0.2 Datenbank auf Oracle Enterprise Linux 6.4.

AIX – Schliessen der Datenbank und Unplug

SQL> SELECT platform_name FROM v$database;
PLATFORM_NAME
--------------------------------------------------------
AIX-Based Systems (64-bit)
SQL> ALTER PLUGGABLE DATABASE CRM01AIX CLOSE IMMEDIATE;
SQL> ALTER PLUGGABLE DATABASE CRM01AIX UNPLUG INTO 'CRM01AIX.XML';

Wenn für das XML kein spezifischer Pfad angegeben wird, so wird das XML-File im $ORACLE_HOME/dbs erstellt – /u00/app/oracle/product/12.1.0.2/dbs/CRM01AIX.XML. Anschliessend wurden die für die Pluggable Database relevanten Datenfiles und das XML auf die Linux-Umgebung kopiert.

Linux – RMAN Convert

SQL> SELECT platform_name FROM v$database;
PLATFORM_NAME
--------------------------------------------------------
Linux x86 64-bit

Die Konvertierung bricht ab mit dem Fehler ORA-19928: CONVERT of data files with undo segments between different endian is not supported.

oracle@training:~/ [TVD12CDB] rman target=/
Recovery Manager: Release 12.1.0.2.0 - Production on Tue Dec 16 09:20:11 2014
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
connected to target database: TVD12CDB (DBID=3125497841)
RMAN> CONVERT FROM PLATFORM 'AIX-Based Systems (64-bit)'
 2> DATAFILE '/u00/app/oracle/tmp/stage/system01TVD12CDB.dbf'
 3> FORMAT '/u01/oradata/TVD12CDB/crm01lx/system01TVD12CDB.dbf';
Starting conversion at target at 16-DEC-14
 using target database control file instead of recovery catalog
 allocated channel: ORA_DISK_1
 channel ORA_DISK_1: SID=272 device type=DISK
 channel ORA_DISK_1: starting datafile conversion
 input file name=/u00/app/oracle/tmp/stage/system01TVD12CDB.dbf
 RMAN-00571: ===========================================================
 RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
 RMAN-00571: ===========================================================
 RMAN-03009: failure of conversion at target command on ORA_DISK_1 channel at 12/16/2014 09:21:06
 ORA-19928: CONVERT of data files with undo segments between different endian is not supported.

Informationen

Für den Fehler ORA-19928 gibt es aktuell in My Oracle Support gerade mal einen Bug-Eintrag, und der hat mit diesem Fall nicht das geringste zu tun. Die Fehlermeldung ORA-19928 sagt aber eigentlich alles:

oracle@training:~/ [TVD12CDB] oerr ora 19928
19928, 1, "CONVERT of data files with undo segments between different endian is not supported."
// *Cause: Conversion of data files with undo segments was not supported between endianess.
// The only time that data files with undo segments can be converted is between the
// same endianess as part of convert database. Convert database between different
// endian is not supported.
// *Action: Do not attempt to convert data files with undo segments between different endian.

Weitere Informationen liefert die MOS Note Migration Of An Oracle Database Across OS Platforms (Generic Platform) (Doc ID 733205.1):

  • RMAN Convert Database only works if both source and destination belong to the same ENDIAN format
  • RMAN’s convert function for Transportable Tablespaces will convert from one ENDIAN format to another.
  • These two commands ARE NOT the same.  Please refer to the notes at the end of the document for the correct note needed.

Bis auf weiteres muss also ein der Transportable Tablespace Varianten verwendet werden. Mal schauen was sich bis zu den nächsten Releases (12.2 sollte ja im 2016 erscheinen) noch alles tut. Ich habe den Wunsch aber schon mal im Oracle Forum für Database Ideas (https://community.oracle.com/community/database/database-ideas) gepostet.