One database – different platform names in a datafile headers…

… How it is possible?

Let’s imagine you need to migrate a database from HP-UX PA-RISC to HP-UX IA64, both are 64-bit. It’s easy as it is supported to have such mixed Data Guard environment according to the MOS document 413484.1 (for more detailed description regarding these platforms see 395982.1). You just create a physical standby and then perform a switchover. Total downtime is near several minutes, the task is done and all clients and bosses are happy.

Several years later you need to migrate the same database to the different platform, say Linux x68_64. As endianness is different it is not so simple as you wish, but there is Transportable Tablespaces and RMAN’s CONVERT command and you decided to perform conversion on the destination (I hope to describe all the challenge in other story). When converting on the destination host, you must specify the source platform with the FROM clause of CONVERT command. OK, the source platform is ‘HP-UX IA (64-bit)’, let’s do the thing:

RMAN> CONVERT DATAFILE
'/path/to/file01',
...
'/path/to/file11'
FROM PLATFORM 'HP-UX IA (64-bit)';

RMAN-03002: failure of conversion at target command at ...
RMAN-06576: platform 'HP-UX (64-bit)' (3) found in header of datafile /path/to/file01 does not match specified platform name 'HP-UX IA (64-bit)' (4)

OK, RMAN says we have ‘HP-UX (64-bit)’ in a datafiles header. Let’s try:

RMAN> CONVERT DATAFILE
'/path/to/file01',
...
'/path/to/file11'
FROM PLATFORM 'HP-UX (64-bit)';

RMAN-03002: failure of conversion at target command at ...
RMAN-06576: platform 'HP-UX IA (64-bit)' (4) found in header of datafile /path/to/file07 does not match specified platform name 'HP-UX (64-bit)' (3)

The problem is described in MOS Document 1067946.1: the headers were not modified during previous platform migration. The workaround is simple – convert datafiles created before migration as FROM ‘HP-UX (64-bit)’ and after migration as FROM ‘HP-UX IA (64-bit)’, or convert all the files on the source platform.

The main question I have after all: if RMAN so smart to know the platform when raises an error, why it couldn’t detect source platform without FROM clause?

Advertisements
Posted in Oracle, Transportable Tablespaces
4 comments on “One database – different platform names in a datafile headers…
  1. odenysenko says:

    Hi.

    Good post about specific situation with dataguard heterogeneous configuration.

    The most valuable is question:
    why do I have to specify FROM clause when I’m doing conversion at target platform ?

    Oleksandr

  2. stephan says:

    It seems to me that there’s no view that exposes this information, correct? So other than trying one datafile at a time, and seeing which ones fail, is there any way of knowing which datafiles might have come from platform A as opposed to platform B?

    • The only way I see is to know the date of migration from one platform to another and set conversion target correspondingly: for files created before this day as ‘HP-UX (64-bit)’, and ‘HP-UX IA (64-bit)’ for others.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Oracle ... as usual

Oracle by Laurent Leturgez

Carlos Sierra's Tools and Tips

Tools and Tips for Oracle Performance and SQL Tuning

xt-r.com

Just another oracle developer

Coskan's Approach to Oracle

What I learned about Oracle

Oracle Scratchpad

Just another Oracle weblog

Oleksandr Denysenko's Blog

be prepared for The Future...

%d bloggers like this: