Tuesday, October 16, 2012

Oracle cross platform migration not working as advertised

According Oracle document, you should be able to convert any data file including those for system tablespaces with RMAN, even the ENDIAN format is different,
 
http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta012.htm

In Oracle Database 10g and later releases, CONVERT DATAFILE or CONVERT TABLESPACE is required in the following scenarios:
  • Transporting data files between platforms for which the value in V$TRANSPORTABLE_PLATFORM.ENDIAN_FORMAT differs.
  • Transporting tablespaces with undo segments (typically SYSTEM and UNDO tablespaces, but also tablespaces using rollback segments) between platforms, regardless of whether the ENDIAN_FORMAT is the same or different. Typically, the SYSTEM and UNDO tablespaces are converted only when converting the entire database.
  • Other platform specific data files, (like when converting to or from the hp Tru64 operating system), require additional data file conversion .
One use of CONVERT is to transport a tablespace into a database stored in ASM. Native operating system commands such as Linux cp and Windows COPY cannot read from or write to ASM disk groups.


It works well for non-system (actually should say non-undo) files:

RMAN> convert datafile '/dsk01/oradata/TESTDB/users01.dbf'
FROM PLATFORM = 'Solaris[tm] OE (64-bit)'
TO PLATFORM = 'Linux x86 64-bit'
db_file_name_convert '/dsk01/oradata/TESTDB' '/dsk01/oradata/TESTDB_CVT'

Starting conversion at target at 15-OCT-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input file name=/dsk01/oradata/TESTDB/users01.dbf
converted datafile=/dsk01/oradata/TESTDB_CVT/users01.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01
Finished conversion at target at 15-OCT-12


But not so well for any data files containing undo segments:

RMAN> convert datafile '/dsk01/oradata/TESTDB/system01.dbf'
FROM PLATFORM = 'Solaris[tm] OE (64-bit)'
TO PLATFORM = 'Linux x86 64-bit'
db_file_name_convert '/dsk01/oradata/TESTDB' '/dsk01/oradata/TESTDB_CVT'

Starting conversion at target at 15-OCT-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=212 device type=DISK
channel ORA_DISK_1: starting datafile conversion
input file name=/dsk01/oradata/TESTDB/system01.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 10/15/2012 15:17:32
ORA-00600: internal error code, arguments: [ktu_format_nr: rbu mgc failed], [640], [32770], [32896], [], [], [], [], [], [], [], []


Oracle has a bug filed about this situation:

Bug 10409625 - ORA-600 [ktu_format_nr: rbu mgc failed] during RMAN convert datafile [ID 10409625.8]    To Bottom   

Description

If an ORA-600 [ktu_format_nr: rbu mgc failed] is raised when using RMAN to
convert datafiles to a different endian then this might be the bug.
 
Check if any of the datafiles belong to the SYSTEM tablespace, or contain
undo blocks. If so, the operation is unsupported and the fix for this bug
will cause a more graceful error message (ORA-19928).
It is fixed in 11.2.0.3 and above. Unfortunately, the fix is just changing the ORA-600 error into a "more graceful error message":

In 11.2.0.3:
RMAN> convert datafile '/dsk01/oradata/TESTDB/system01.dbf'
FROM PLATFORM = 'Solaris[tm] OE (64-bit)'
TO PLATFORM = 'Linux x86 64-bit'
db_file_name_convert '/dsk01/oradata/TESTDB' '/dsk01/oradata/TESTDB_CVT';

Starting conversion at target at 16-OCT-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISK
channel ORA_DISK_1: starting datafile conversion
input file name=/dsk01/oradata/TESTDB/system01.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 10/16/2012 11:39:17
ORA-19928: CONVERT of data files with undo segments between different endian is not supported.


So, we are out of luck. I'd expect Oracle to implement this in probably release 12.2.

1 comment:

  1. Hello,
    The Informative article on Oracle cross platform migration not working as advertised is nice ,It give brief information about it.Thanks for sharing the article on Cross Platform. Xamarin Consulting

    ReplyDelete